Responses:统一输入与模型响应
使用 input 创建响应,读取 output 内容块;区分普通返回、流式事件和多轮状态。
Responses 与 Chat Completions 都能用于文本任务,但请求与返回结构不同。需要 Responses 的客户端,应使用本协议,不能只把 Chat Completions 的网址替换后继续发送 messages。
请求与鉴权#
| 项目 | 内容 |
|---|---|
| 方法与归壹完整地址 | POST https://univto.com/v1/responses |
| 鉴权 | Authorization: Bearer 你的归壹API密钥 |
| 请求类型 | Content-Type: application/json |
| 核心输入 | model 加上 input;input可为简短文本或符合Responses格式的输入项数组 |
常见字段#
| 字段 | 作用 | 适用边界 |
|---|---|---|
| instructions | 本次请求的行为说明 | 不是Chat的system消息数组 |
| input | 文字或结构化输入项 | 工具结果与多模态内容需采用Responses自己的结构 |
| max_output_tokens | 限制该协议的生成上限 | 按模型语义理解,思考量也可能占用预算 |
| stream | 启用事件流 | 按Responses事件类型解析 |
| tools / tool_choice | 定义或选择工具 | 不表示所有内置工具都可通过当前线路使用 |
| reasoning | 推理强度等设置 | 仅支持推理参数的模型使用 |
| previous_response_id | 引用之前的响应继续对话 | 需要当前线路支持响应状态;不要假定可跨模型、分组或供应商复用 |
| truncation | 超过上下文时的处理策略 | 选项支持情况由模型线路决定 |
最小 curl 示例#
先在本机设置 GUIYI_API_KEY,将 YOUR_MODEL_ID 改为可使用Responses的完整模型ID。示例不会在文档网页里自动执行,手动运行会产生正常调用费用。
curl --fail-with-body https://univto.com/v1/responses \
-H "Authorization: Bearer ${GUIYI_API_KEY}" \
-H 'Content-Type: application/json' \
--data '{
"model": "YOUR_MODEL_ID",
"input": "你好,请用一句话介绍自己。",
"stream": false
}'返回结果怎么读#
先查看 status,再遍历 output 数组。普通文本通常位于 type 为 message 的输出项里,其 content 中 type 为 output_text 的条目含 text。不要假定 output[0] 永远是文字,因为它也可能是推理或工具调用项。SDK提供的 output_text 可能是便利属性,不一定是原始HTTP JSON的顶层字段。
| 字段或状态 | 如何理解 |
|---|---|
| id | 本次响应标识,排查问题时可保留 |
| status=completed | 该响应已完成;仍需读取实际输出内容 |
| status=incomplete / failed | 检查未完成或失败详情,不把已有部分文字当作完整成功 |
| output | 模型输出项集合,可含文字或工具项 |
| usage | Responses原生通常使用input_tokens与output_tokens;兼容线路的扩展字段以实际返回为准 |
流式与多轮处理#
stream=true 时常见事件包括 response.output_text.delta 及最终响应完成事件。事件体不能按Chat的 choices[].delta 直接读取。断流或收到不完整终态时,保留已知响应ID及错误信息,先确认状态再决定是否重新生成。