跳转到内容

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
规范化
`proxai-core/ingress` 校验结构化 Chat request
请求转换
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保留有序可见文本。
Assistant reasoning_content携带 ProxAI continuation 时恢复为 Anthropic thinking blocks带版本的 continuation 后缀会恢复带签名或 redacted 的 Anthropic thinking,并在转发前剥离。普通无签名 reasoning 没有 Anthropic signature,转换会 trace 后跳过,而不是伪造签名。
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 blockchoices[0].message.reasoning_contentZed 会将这个 OpenAI-compatible 扩展消费为 thinking output;ProxAI 会追加带版本的 continuation 后缀,以在回放时保留 Anthropic signature 和 redacted payload,且不把它们混入可见 content。
stop_reasonfinish_reason谨慎映射自然轮次、token 限制、tool use 和 refusals。
Anthropic eventChat SSE 预期
message_start初始化 choice 和 assistant role delta。
Text content_block_delta发出 delta.content chunks。
Thinking content_block_delta发出 delta.reasoning_content chunks,Zed 将其消费为 thinking;在 terminal chunk 前追加 continuation 后缀。
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。
  • 普通 thinking 文本通过 reasoning_content 兼容扩展保留。ProxAI 只会为能回放该字段的兼容客户端追加带版本的 continuation 后缀;Chat 自身仍没有原生的 per-item identity 或 signature 字段。
  • continuation 后缀可以在 ProxAI 的 Anthropic 转换对中保留 redacted/encrypted thinking,但它不是可移植的 Chat Completions 功能。
  • Chat streaming 使用 tool_calls[].index;Anthropic streaming 使用 content block index。
  • Chat [DONE] 是 stream carrier terminator;Anthropic message_stop 是语义终止事件。