聊天API服务

基于OpenAI Agents SDK的中央聊天API服务,支持MCP协议,提供会话历史存储和远程工具调用功能。

  • by youssefaltai
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 youssefaltai/chat-agent

使用说明

聊天代理

中央聊天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;在共享上运行 web Caddy和上游MCP服务网络

先决条件

  • Docker和Docker Compose
  • 一个名为的现有Docker网络 web (例如。 docker network create web)
  • OpenAI API密钥(用于代理)

快速开始

  1. 克隆并进入仓库

    git clone https://github.com/youssefaltai/chat-agent.git
    cd chat-agent
    
  2. 配置环境

    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)
  3. 使用Docker运行

    docker compose up -d --build
    

    该服务以 siri_agent 容器,取决于 redis (容器名称 chat_redis).

  4. 验证

    • 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-key JSON正文:
    { "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 因此代理可以使用他们的工具。

许可证

麻省理工学院