已将原来的单文件 server.rs (310 行) 重构为模块化架构:
src/api/types.rs(113 行):所有请求和响应类型定义src/api/error.rs(67 行):统一的错误处理src/api/state.rs(144 行):线程状态管理src/api/handlers.rs(347 行):所有端点处理器src/api/server.rs(99 行):简洁的路由配置src/api/mod.rs(9 行):模块导出
总代码行数: ~779 行(清晰分离) 原代码行数: 310 行(全部混在一起)
- ✅
POST /v1/threads- 创建新线程 - ✅
GET /v1/threads- 列出所有线程 - ✅
GET /v1/threads/:thread_id- 获取特定线程 - ✅
DELETE /v1/threads/:thread_id- 删除线程
- ✅
POST /v1/threads/:thread_id/messages- 添加消息到线程 - ✅
GET /v1/threads/:thread_id/messages- 获取线程的所有消息
- ✅
POST /v1/responses- 生成 AI 响应- 支持非流式响应
- 支持流式响应(SSE)
- 自动维护对话上下文
- ✅
GET /health- 健康检查 - ✅
GET /v1/models- 列出可用模型
✅ 服务器端状态管理
- 每个线程维护完整的消息历史
- 自动追踪对话是否为新对话
- 支持多个并发线程
✅ 智能上下文处理
- 自动检测是否为新对话(通过检查 assistant 消息)
- 正确调用
start_conversation或hold_conversation - 无需客户端管理对话历史
✅ OpenAI 兼容
- 遵循 OpenAI Responses API 规范
- 标准的请求/响应格式
- 支持流式和非流式输出
✅ 模块化设计
- 清晰的职责分离
- 易于维护和扩展
- 良好的代码组织
# 1. 创建线程
response = requests.post("http://localhost:6969/v1/threads", json={
"messages": [{"role": "user", "content": "我叫 Alice"}]
})
thread_id = response.json()["id"]
# 2. 生成响应
requests.post("http://localhost:6969/v1/responses", json={
"thread_id": thread_id
})
# 3. 继续对话
requests.post(f"http://localhost:6969/v1/threads/{thread_id}/messages", json={
"role": "user",
"content": "你记得我叫什么吗?"
})
# 4. 再次生成响应
requests.post("http://localhost:6969/v1/responses", json={
"thread_id": thread_id
})
# 5. 查看完整历史
messages = requests.get(f"http://localhost:6969/v1/threads/{thread_id}/messages").json()❌ 客户端需要管理完整消息历史
❌ 每次请求都要发送所有历史消息
❌ 无法在服务器端查询对话历史
❌ 难以管理多个并发对话
✅ 服务器管理对话状态
✅ 只需发送新消息
✅ 可以查询和管理对话历史
✅ 清晰的线程管理
server.rs (310 行)
├── 所有类型定义
├── 错误处理
├── 状态管理
├── 请求处理
└── 路由配置
api/
├── types.rs # 类型定义
├── error.rs # 错误处理
├── state.rs # 状态管理
├── handlers.rs # 请求处理
├── server.rs # 路由配置
└── mod.rs # 模块导出
创建了完整的测试脚本 test_responses_api.py,测试:
- 线程创建和管理
- 消息添加和查询
- 响应生成(非流式)
- 响应生成(流式)
- 对话上下文维护
运行测试:
# 启动服务器
cargo run --bin api_server
# 运行测试
python3 test_responses_api.py创建了详细的 API 文档:
RESPONSES_API.md- 完整的 API 使用指南- 所有端点说明
- 请求/响应示例
- 使用流程
- 与旧 API 对比
- 更清晰的架构 - 代码按功能模块化分离
- 更好的状态管理 - 服务器端维护对话状态
- 符合标准 - 兼容 OpenAI Responses API
- 更易维护 - 清晰的职责分离
- 更好的用户体验 - 简化的 API 调用流程
项目已经可以使用新的 Responses API!可以:
- 启动服务器:
cargo run --bin api_server - 运行测试:
python3 test_responses_api.py - 阅读文档:查看
RESPONSES_API.md - 开始使用新 API 进行开发
- 旧的
/v1/chat/completions端点已被移除 - 所有客户端需要迁移到新的 Responses API
- 新 API 提供了更好的对话管理功能
- 服务器会自动维护每个线程的上下文