CONFLUENCE-RAG-人工智能聊天服务
一个强大的基于FastAPI的聊天服务,与OpenAI的API集成,专为信息检索和合成任务而设计。
特性
- OpenAI集成:与OpenAI的聊天功能API无缝集成
- 动态系统提示:带有项目特定说明的上下文感知提示
- 全面的错误处理:适用于所有OpenAI API场景的强大错误处理
- 请求验证:消息内容和结构的输入验证
- 无状态设计:没有会话持久性的RESTful API
快速开始
先决条件
- Python 3.12+
- OpenAI API密钥
- uv包管理器(推荐)
安装
- 克隆存储库:
git clone https://github.com/mikhailstasyuk/umbc-mcp.git
cd umbc-mcp- 安装依赖项:
uv sync- 设置环境变量:
cp .env.example .env
# Edit .env and add your OPENAI_API_KEY- 运行应用程序:
uv run fastapi dev src/app/main.pyAPI将于 http://localhost:8000
API使用
健康检查
curl http://localhost:8000/health答复:
{"status": "healthy"}聊天端点
向发送POST请求 /chat 与您的对话:
curl -X POST "http://localhost:8000/chat" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "What is machine learning?"}
]
}'请求格式
{
"model": "gpt-4",
"messages": [
{
"role": "user",
"content": "Your message here"
}
]
}响应格式
{
"message": "AI response here"
}错误响应
API针对不同的错误场景返回适当的HTTP状态代码:
401:身份验证失败(API密钥无效)404:未找到型号422:无效请求(空消息、超大内容)429:超出费率限制500:内部服务器错误502:连接错误503:服务不可用(缺少配置)
配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
OPENAI_API_KEY | 您的OpenAI API密钥 | 必需 |
PROJECT_NAME | 项目名称 | “当前项目” |
PROJECT_DESCRIPTION | 项目描述 | “当前项目描述” |
BASE_SYSTEM_PROMPT | AI基础系统提示 | 专业检索提示 |
CHAT_HISTORY_LIMIT | 上下文中要包含的最大消息数 | 20 |
MAX_CHAT_ITERATIONS | 最大检索次数 | 5 |
RETRIEVAL_TOP_K | 要检索的顶级结果 | 10 |
MAX_MESSAGE_LENGTH | 每条消息的最大字符数 | 10000 |
发展
运行测试
# Run all tests
uv run pytest
# Run specific test file
uv run pytest tests/unit/test_chat_service.py项目结构
src/
├── app/
│ ├── chat/
│ │ ├── dependencies.py # Dependency injection
│ │ ├── exceptions.py # Custom exceptions
│ │ ├── prompts.py # System prompt generation
│ │ ├── router.py # API endpoints
│ │ ├── schemas.py # Pydantic models
│ │ └── service.py # Business logic
│ ├── config.py # Application settings
│ ├── llm_providers/
│ │ └── client.py # OpenAI client setup
│ └── main.py # FastAPI application
tests/
├── unit/
│ ├── chat/
│ ├── llm_providers/
│ └── routers/
└── conftest.py # Test fixturesAPI文档
运行应用程序时,请访问 http://localhost:8000/docs 用于交互式Swagger文档。
