聊天代理
中央聊天API由OpenAI代理SDK提供支持,支持MCP(模型上下文协议)。接受经过身份验证的请求,在Redis中保存每个会话的对话历史,并可以连接到一个或多个MCP服务器(例如金融应用程序),以便代理可以在对话中使用远程工具。
特性
- 聊天API:使用POST
session_id和message;返回代理回复 - API密钥验证 通过
x-api-key头球 - 速率限制:每个客户端每分钟20个请求(SlowAPI)
- 会话内存:Redis支持的会话历史记录(24小时TTL)用于多回合上下文
- MCP集成:MCP服务器SSE URL的可选逗号分隔列表;代理在首次使用时连接,并可以从这些服务调用工具
- Docker Compose 使用Redis;在共享上运行
webCaddy和上游MCP服务网络
先决条件
- Docker和Docker Compose
- 一个名为的现有Docker网络
web(例如。docker network create web) - OpenAI API密钥(用于代理)
快速开始
- 克隆并进入仓库
git clone https://github.com/youssefaltai/chat-agent.git
cd chat-agent- 配置环境
cp .env.example .env编辑 .env 并设置:
- OPENAI_API_KEY -您的OpenAI API密钥(代理需要) - API_KEY -聊天API的秘密(客户端将其发送到 x-api-key 头球更改默认值) - REDIS_URL --Redis连接URL(默认值: redis://redis:6379/0 Docker) - MCP_SERVER_URLS --可选;逗号分隔的MCP SSE URL(例如。 http://finance_app:3000/mcp/sse)
- 使用Docker运行
docker compose up -d --build该服务以 siri_agent 容器,取决于 redis (容器名称 chat_redis).
- 验证
- GET http://localhost:3000/health → {"status": "ok"} - 聊天: POST http://localhost:3000/ 带标题 x-api-key: 和身体 {"session_id": "s1", "message": "Hello"}
配置
| 变量 | 描述 | 默认值 |
|---|---|---|
OPENAI_API_KEY | 代理的OpenAI API密钥 | -(必需) |
API_KEY | 秘密为 x-api-key (聊天API认证) | change-me |
REDIS_URL | 会话历史记录的Redis URL | redis://redis:6379/0 |
MCP_SERVER_URLS | 逗号分隔的MCP SSE URL | --(可选) |
API
- GET/健康 --健康检查;回报
{"status": "ok"}. - 职位/ --聊天。需要标题
x-api-keyJSON正文:
{ "session_id": "string", "message": "string" }退货:
{ "reply": "string" }速率限制:每个IP每分钟20个请求。
项目结构
app/
api.py # FastAPI app: health, chat endpoint, API key auth, rate limiting
agent.py # OpenAI Agents SDK agent; lazy init, MCP server connections
chat.py # Chat handler: load history, run agent, persist turn
memory.py # Redis-backed session history (get_history, append_message)
config.py # Pydantic settings from .env整合
- 卡迪:添加路线,例如。
handle_path /chat/* { reverse_proxy siri_agent:3000 }(如果更改应用程序端口,请调整端口)。 - MCP服务:在同一平台上运行金融应用程序(或其他MCP服务)
web网络和集合MCP_SERVER_URLS因此代理可以使用他们的工具。
许可证
麻省理工学院
