4.4 KiB
4.4 KiB
API v1 接入文档(后台任务 + 轮询进度 + 文件)
本目录面向第三方/多端(Web、Flutter、脚本、其它服务)对接,目标是:
- API 调用不依赖 WebSocket:网页刷新/断网/关闭不会影响后台任务运行;
- 客户端使用 HTTP 轮询获取与网页端一致的细粒度进度(token 输出、工具块、工具结果等);
- API 账号与网页账号隔离:避免互相抢占任务/文件/对话状态。
基本信息
- API 版本:v1
- 默认后端地址(本地):
http://localhost:8091 - 鉴权方式:
Authorization: Bearer <token> - API 前缀:
/api/v1 - 数据落盘:对话与文件落盘到 API 用户独立目录(见
auth.md) - 任务与事件:仅内存保存(进程重启后任务/事件不可恢复)
- 默认最大迭代次数
max_iterations:100(可在调用/api/v1/messages时覆盖)
只保留的接口(共 6 组能力)
- 创建对话:
POST /api/v1/conversations - 发送消息/启动后台任务:
POST /api/v1/messages - 轮询任务事件:
GET /api/v1/tasks/<task_id>?from=<offset> - 停止任务:
POST /api/v1/tasks/<task_id>/cancel - 文件上传(仅 user_upload):
POST /api/v1/files/upload - 文件浏览/下载:
GET /api/v1/files、GET /api/v1/files/download - 对话查询/删除:
GET /api/v1/conversations、GET/DELETE /api/v1/conversations/{id} - Prompt 管理:
GET/POST /api/v1/prompts、GET /api/v1/prompts/{name} - 个性化管理:
GET/POST /api/v1/personalizations、GET /api/v1/personalizations/{name} - 模型列表与健康检查:
GET /api/v1/models、GET /api/v1/health
详细参数与返回请看:
auth.md:API 用户与 Token、目录结构、安全注意事项messages_tasks.md:发送消息/轮询/停止events.md:事件流格式与事件类型说明(与 WebSocket 同源)files.md:上传/列目录/下载prompts_personalization.md:Prompt 与个性化管理errors.md:HTTP 错误码与常见排查examples.md:curl/Python/JS/Flutter 示例openapi.yaml:OpenAPI 3.0 规范(可导入 Postman/Swagger)
快速开始(curl)
将
<TOKEN>替换为你的 Bearer Token。
默认后端:http://localhost:8091,如不同请修改。
0)创建对话
curl -sS -X POST \
-H "Authorization: Bearer <TOKEN>" \
http://localhost:8091/api/v1/conversations
返回示例:
{ "success": true, "conversation_id": "conv_20260123_234245_036" }
1)发送消息(创建后台任务)
curl -sS -X POST \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"conversation_id": "conv_20260123_234245_036",
"message": "请用中文简要介绍《明日方舟:终末地》",
"run_mode": "fast", # 可选:fast / thinking / deep
"model_key": null,
"max_iterations": 100 # 默认 100,示例显式填写便于对齐
}' \
http://localhost:8091/api/v1/messages
返回示例(202):
{
"success": true,
"task_id": "60322db3-f884-4a1e-a9b3-6eeb07fbab47",
"conversation_id": "conv_20260123_234245_036",
"status": "running",
"created_at": 1769182965.30
}
2)轮询进度(按 offset 增量拉取)
首次从 from=0 开始,之后使用返回中的 next_offset。
curl -sS \
-H "Authorization: Bearer <TOKEN>" \
"http://localhost:8091/api/v1/tasks/60322db3-f884-4a1e-a9b3-6eeb07fbab47?from=0"
3)停止任务(可选)
curl -sS -X POST \
-H "Authorization: Bearer <TOKEN>" \
http://localhost:8091/api/v1/tasks/60322db3-f884-4a1e-a9b3-6eeb07fbab47/cancel
统一约定:响应结构与错误处理
成功响应
大部分接口返回:
{ "success": true, ... }
失败响应
大部分失败返回:
{ "success": false, "error": "原因说明" }
并使用合适的 HTTP 状态码(如 400/401/404/409/503)。
重要限制(务必阅读)
- 单用户禁止并发任务:同一个 API 用户同一时间只允许一个
running/pending任务。重复发送消息会返回409。 - 事件缓冲为内存队列(maxlen=1000):任务特别长或轮询太慢会导致早期事件被丢弃;请按推荐频率轮询并在客户端持久化你需要的内容。
- 进程重启不可恢复:重启后任务/事件会消失,但对话/文件已落盘的不受影响。