使用说明
聊天代理
中央聊天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/0Docker)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: <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" }速率限制:每个IP每分钟20个请求。{ "reply": "string" }
项目结构
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因此代理可以使用他们的工具。
许可证
麻省理工学院
