跳转到内容

OpenAI Chat Completions 到 Anthropic Messages

OpenAI Chat Completions 到 Anthropic Messages

Section titled “OpenAI Chat Completions 到 Anthropic Messages”

本页记录客户端使用 OpenAI Chat Completions,而选中的 provider 使用 Anthropic Messages 时的转换 pair。

入站
`openai_chat_completions` request payload
规范化
`src/ingress/` 解析 Chat messages 和 tools
请求转换
Chat messages/tools -> Anthropic Messages request
响应转换
Anthropic Message/content blocks -> Chat choices
出站
`openai_chat_completions` response 或 SSE chunks
Chat 概念Anthropic Messages 目标说明
messages[]messages[] 加规范化 system placementChat system/developer instructions 不应重复成用户可见 turns。
Assistant textAssistant content blocks保留有序可见文本。
tools[] function definitionstools[]尽量保留 name、description 和 JSON schema。
Assistant tool_calls[]Anthropic tool_use blocksChat tool_calls[].index 是 stream-local;Anthropic content blocks 使用 content-block indices。
Tool result messagesAnthropic tool_result blocks目标协议能表达时保留 call id linkage。
Anthropic 概念Chat 目标说明
Text content blockchoices[0].message.contentChat 每个 choice 只有一个 assistant message。
Tool use blockchoices[0].message.tool_calls[]分配稳定 call ids 和 function names。
Thinking/reasoning block支持时映射到 Chat-compatible reasoning extension普通 Chat reasoning 结构较弱;除非必须,不要混入 ordinary content。
stop_reasonfinish_reason谨慎映射自然轮次、token 限制、tool use 和 refusals。
Anthropic eventChat SSE 预期
message_start初始化 choice 和 assistant role delta。
Text content_block_delta发出 delta.content chunks。
Tool input_json_delta按 Chat tool index 发出 delta.tool_calls[].function.arguments chunks。
message_delta.stop_reason终态已知时设置最终 finish_reason
message_stop发出最终 chunk 和 [DONE]
  • Chat 没有原生 output item graph。
  • Reasoning 支持更弱,通常依赖扩展字段。
  • Chat streaming 使用 tool_calls[].index;Anthropic streaming 使用 content block index
  • Chat [DONE] 是 stream carrier terminator;Anthropic message_stop 是语义终止事件。