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 placement | Chat system/developer instructions 不应重复成用户可见 turns。 |
| Assistant text | Assistant content blocks | 保留有序可见文本。 |
tools[] function definitions | tools[] | 尽量保留 name、description 和 JSON schema。 |
Assistant tool_calls[] | Anthropic tool_use blocks | Chat tool_calls[].index 是 stream-local;Anthropic content blocks 使用 content-block indices。 |
| Tool result messages | Anthropic tool_result blocks | 目标协议能表达时保留 call id linkage。 |
| Anthropic 概念 | Chat 目标 | 说明 |
|---|---|---|
| Text content block | choices[0].message.content | Chat 每个 choice 只有一个 assistant message。 |
| Tool use block | choices[0].message.tool_calls[] | 分配稳定 call ids 和 function names。 |
| Thinking/reasoning block | 支持时映射到 Chat-compatible reasoning extension | 普通 Chat reasoning 结构较弱;除非必须,不要混入 ordinary content。 |
stop_reason | finish_reason | 谨慎映射自然轮次、token 限制、tool use 和 refusals。 |
| Anthropic event | Chat 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 blockindex。 - Chat
[DONE]是 stream carrier terminator;Anthropicmessage_stop是语义终止事件。