跳转到内容

Anthropic Messages 到 OpenAI Responses

本页记录 provider 使用 Anthropic Messages,而客户端期望 OpenAI Responses output 时的转换路径。

Provider response
`anthropic_messages` Message 或 SSE stream
读取上游
`src/upstream/` 读取 body 或 ByteStream
响应转换
Anthropic content blocks -> Responses output items
重建客户端响应
`src/http_support/` 发出 Responses JSON 或 typed SSE
客户端响应
`openai_responses` envelope 或 events
Anthropic 概念Responses 目标说明
Message envelopeResponses response envelopeAnthropic 返回一个最终 message;Responses 返回带 output[] 的 envelope。
Text blockMessage output item/content part保留可见文本顺序。
tool_use blockfunction_call output item使用 Responses item/call identifiers 保留 call identity。
thinking block可表达时映射为 Reasoning output item转换 provider-specific metadata,而不是 raw round-trip。
stop_reasonResponses terminal status 和 output state映射终止行为,而不只是字段名。
Anthropic eventResponses-side 行为
message_start初始化 response 和 usage state。
content_block_start根据 block type 发出或暂存 Responses output item。
content_block_delta发出 text、reasoning 或 function-argument deltas。
content_block_stop结束当前 Responses item/content part。
message_delta更新 stop 和 usage metadata;可能没有独立 Responses event。
message_stop发出 Responses terminal event,例如 response.completed
AnthropicResponses影响
Content block index稳定 item_id 加 output indexTranslator 必须为 Responses events 生成/跟踪 item ids。
Tool id / tool result linkageFunction call item id 和 call_id不要只把原始 provider id 暴露成客户端身份。
Message-level terminal metadataResponse status 加 item status终止状态可能需要同时更新 envelope 和 output items。
  • Anthropic content block index 是 stream-local;Responses item identity 是客户端可见且可跨轮稳定的。
  • Provider-specific thinking metadata 可能没有 Responses 等价物。
  • Anthropic pause_turn 和 refusal metadata 需要保留行为的目标语义。
  • Usage 和 stop metadata 可能在 stream 后段才到达。