HTTP API 深度解析
本章节深入剖析 CountBot 的 HTTP API 机制,通过真实场景展示完整的请求-响应流程。每篇文章聚焦一个核心场景,包含完整的 HTTP 请求示例、后端处理流程和返回数据格式。
目录
- 基础对话流程 - 用户发送"你好"
- 工具调用流程 - 查询天气信息
- 技能系统深度解析 - 使用技能执行任务
- 子代理调度流程 - 创建后台任务
- 文件操作流程 - 读写文件
- Shell 命令执行 - 执行系统命令
- WebSocket 实时通信 - 流式响应和通知
- 多轮对话和上下文管理 - 连续对话
1. 基础对话流程
场景描述
用户通过 Web 界面发送一条简单的问候消息"你好",系统返回 AI 的回复。这是最基础的对话场景,展示了 CountBot 的核心消息处理流程。
HTTP 请求示例
curl -X POST http://localhost:8000/api/chat/send \
-H "Content-Type: application/json" \
-d '{
"session_id": "550e8400-e29b-41d4-a716-446655440000",
"message": "你好",
"attachments": null
}'
请求参数详解
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
session_id | string | 是 | 会话唯一标识符(UUID 格式) |
message | string | 是 | 用户消息内容(最少 1 个字符) |
attachments | array | 否 | 附件路径列表(用于图片、文件等) |
后端处理流程
1. FastAPI 接收请求 (POST /api/chat/send)
↓
2. 验证会话是否存在 (SessionManager.get_session)
↓
3. 保存用户消息到数据库 (SessionManager.add_message)
↓
4. 获取会话历史 (SessionManager.get_history_with_summary)
- 包含会话总结(如果有)
- 限制历史消息条数(max_history_messages)
↓
5. 构建 LLM 上下文 (ContextBuilder.build_messages)
- 系统提示词(persona 配置)
- 会话总结(压缩的历史信息)
- 最近的对话历史
- 当前用户消息
↓
6. Agent Loop 处理 (AgentLoop.process_message)
- 调用 LLM 生成响应
- 流式返回内容块
↓
7. 保存 AI 响应到数据库
↓
8. 返回 SSE 流式响应
SSE 流式响应格式
CountBot 使用 Server-Sent Events (SSE) 实现流式响应,客户端可以实时接收 AI 生成的内容。
开始事件
event: start
data: {"message_id": "12345"}