首页
/ Open-Assistant 后端API接口详解与技术解析

Open-Assistant 后端API接口详解与技术解析

2025-07-05 03:23:03作者:仰钰奇

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

技术特点分析

  1. 灵活的任务系统: API支持多种任务类型,涵盖了从初始提示生成到对话回复、评分排序等完整对话流程。

  2. 完善的错误处理: 所有API都包含422响应,使用HTTPValidationError规范处理参数验证错误。

  3. 安全机制: 采用API密钥和用户认证双重安全机制,关键操作需要双重验证。

  4. 国际化支持: 多数API支持lang参数,便于多语言场景下的使用。

  5. 高效查询: 消息查询API提供丰富的过滤条件和分页支持,适合处理大量数据。

最佳实践建议

  1. 任务处理流程: 建议按照"请求任务->确认任务->执行交互->关闭任务"的标准流程使用API。

  2. 错误处理: 始终检查422响应,处理可能的参数验证错误。

  3. 性能优化: 查询消息时合理使用max_count和分页参数,避免一次性获取过多数据。

  4. 安全实践: 妥善保管API密钥,避免在客户端代码中硬编码密钥。

通过这套API,开发者可以构建完整的对话助手应用,实现从任务分配到结果收集的完整流程,为Open-Assistant生态系统提供强大的后端支持。