Open-Assistant 后端API接口详解与技术解析
Open-Assistant是一个开源的人工智能对话助手项目,其后端API提供了丰富的功能接口来支持对话任务的创建、交互和管理。本文将深入解析这些API的技术细节和使用方法。
API基础信息
Open-Assistant后端API基于OpenAPI 3.0.2规范构建,当前版本为0.1.0。API主要分为任务管理、消息查询和文本标注三大功能模块。
任务管理API
1. 创建新任务
端点: POST /api/v1/tasks/
功能: 请求创建一个新的对话任务
请求体: 需要包含TaskRequest对象,定义任务类型和参数
响应: 返回多种可能的任务类型,包括:
- 故事摘要任务(SummarizeStoryTask)
- 摘要评分任务(RateSummaryTask)
- 初始提示任务(InitialPromptTask)
- 对话回复任务(ReplyToConversationTask)
- 提示者回复任务(PrompterReplyTask)
- 助手回复任务(AssistantReplyTask)
- 各种排序和标注任务
安全要求: 需要有效的API密钥
2. 任务可用性检查
端点: POST /api/v1/tasks/availability
功能: 检查当前可用的任务类型和数量
参数:
- lang: 语言代码(默认为"en")
请求体: 用户信息(User对象)
响应: 返回一个对象,键为任务类型,值为可用数量
3. 任务确认与失败报告
Open-Assistant提供了完整的任务生命周期管理API:
-
任务确认: POST
/api/v1/tasks/{task_id}/ack
- 前端确认已接收并开始处理任务
- 需要提供任务ID和确认信息(TaskAck对象)
-
任务失败报告: POST
/api/v1/tasks/{task_id}/nack
- 前端报告无法完成任务
- 需要提供任务ID和失败原因(TaskNAck对象)
4. 任务交互与关闭
-
任务交互: POST
/api/v1/tasks/interaction
- 报告用户与任务的交互结果
- 支持多种交互类型:文本回复、消息评分、消息排序、文本标注等
-
关闭集体任务: POST
/api/v1/tasks/close
- 关闭一个集体协作任务
- 需要提供任务关闭信息(TaskClose对象)
文本标注API
1. 文本标注
端点: POST /api/v1/text_labels/
功能: 为文本添加标注
请求体: TextLabels对象,包含标注内容和类型
响应: 204 No Content表示成功
2. 获取有效标注
端点: GET /api/v1/text_labels/valid_labels
功能: 获取特定消息的有效标注类型
参数:
- message_id: 可选的消息ID
3. 获取报告标注
端点: GET /api/v1/text_labels/report_labels
功能: 获取可用于报告的标注类型
消息查询API
1. 消息查询
端点: GET /api/v1/messages/
功能: 按条件查询消息记录
参数:
- auth_method: 认证方法
- username: 用户名
- api_client_id: API客户端ID
- max_count: 最大返回数量(默认10,最大1000)
- start_date/end_date: 时间范围
- only_roots: 是否只返回根消息
- desc: 是否降序排列
- allow_deleted: 是否包含已删除消息
- lang: 语言过滤
响应: 返回Message对象数组
2. 分页消息查询
端点: GET /api/v1/messages/cursor
功能: 使用游标分页查询消息
参数:
- before/after: 游标位置
- user_id: 用户ID过滤
- include_deleted: 是否包含已删除消息
- include_user: 是否包含用户信息
- 其他参数与普通查询类似
响应: 返回MessagePage对象,包含消息列表和分页信息
3. 单条消息查询
端点: GET /api/v1/messages/{message_id}
功能: 根据ID获取单条消息详情
参数:
- message_id: 消息UUID
技术特点分析
-
灵活的任务系统: API支持多种任务类型,涵盖了从初始提示生成到对话回复、评分排序等完整对话流程。
-
完善的错误处理: 所有API都包含422响应,使用HTTPValidationError规范处理参数验证错误。
-
安全机制: 采用API密钥和用户认证双重安全机制,关键操作需要双重验证。
-
国际化支持: 多数API支持lang参数,便于多语言场景下的使用。
-
高效查询: 消息查询API提供丰富的过滤条件和分页支持,适合处理大量数据。
最佳实践建议
-
任务处理流程: 建议按照"请求任务->确认任务->执行交互->关闭任务"的标准流程使用API。
-
错误处理: 始终检查422响应,处理可能的参数验证错误。
-
性能优化: 查询消息时合理使用max_count和分页参数,避免一次性获取过多数据。
-
安全实践: 妥善保管API密钥,避免在客户端代码中硬编码密钥。
通过这套API,开发者可以构建完整的对话助手应用,实现从任务分配到结果收集的完整流程,为Open-Assistant生态系统提供强大的后端支持。