文本协议转换
最近更新:2026年9月1日
OpenAI Chat、Responses、Anthropic Messages 与 Gemini 之间的兼容范围和参数差异。
Amux 支持四种文本生成协议相互转换。你可以继续使用现有 SDK,由网关把请求转换为模型供应商支持的协议,并按原调用协议返回响应。
本页只说明文本协议。OpenAI Images 和 Amux Tasks 不参与这里的转换。
支持范围
| 简称 | 协议 | 端点 |
|---|---|---|
| Chat | OpenAI Chat Completions | POST /v1/chat/completions |
| Responses | OpenAI Responses | POST /v1/responses |
| Messages | Anthropic Messages | POST /v1/messages |
| Gemini | Google Gemini | POST /v1beta/models/{model}:generateContent |
四种协议可以两两转换:
| 调用协议 ↓ / 上游协议 → | Chat | Responses | Messages | Gemini |
|---|---|---|---|---|
| Chat | 直连 | 转换 | 转换 | 转换 |
| Responses | 转换 | 直连 | 转换 | 转换 |
| Messages | 转换 | 转换 | 直连 | 转换 |
| Gemini | 转换 | 转换 | 转换 | 直连 |
网关优先选择与调用协议相同的上游协议;无法直连时才转换。同协议直连不做协议格式转换,但仍会执行模型路由、必要的参数过滤和响应规范化。
转换能力不等于每个模型都开放全部入口。模型实际支持的调用协议以模型详情页为准;不支持的组合会返回错误,不会静默改用其他入口。
请求参数
“—”表示目标协议没有直接对应字段,跨协议转换时无法保留。
| 参数 | Chat | Responses | Messages | Gemini |
|---|---|---|---|---|
| 系统提示词 | system 消息 | instructions | system | systemInstruction |
| 最大输出 | max_tokens | max_output_tokens | max_tokens(必填) | maxOutputTokens |
temperature | 0–2 | 0–2 | 0–1 | 0–2 |
top_p | ✓ | ✓ | ✓ | ✓ |
top_k | — | — | top_k | topK |
| 停止词 | stop(最多 4 条) | — | stop_sequences | stopSequences(最多 5 条) |
seed | ✓ | — | — | ✓ |
presence_penalty | ✓ | — | — | ✓ |
frequency_penalty | ✓ | — | — | ✓ |
| 工具定义 | tools | tools | tools | functionDeclarations |
| 工具选择 | tool_choice | tool_choice | tool_choice | functionCallingConfig |
| 并行工具调用 | parallel_tool_calls | parallel_tool_calls | disable_parallel_tool_use(反义) | — |
| JSON 输出 | response_format | text.format | — | responseMimeType |
| 推理档位 | reasoning_effort | reasoning.effort | thinking.budget_tokens | thinkingConfig |
| 推理摘要 | — | reasoning.summary | — | includeThoughts |
| 推理模式 | — | reasoning.mode | — | — |
| 推理上下文 | — | reasoning.context | — | — |
| 输出详略 | verbosity | text.verbosity | — | — |
| 终端用户标识 | user | user | metadata.user_id | — |
| 图片输入 | base64 / URL | base64 / URL | base64 / URL | base64 / Files API URI |
| 提示缓存 | 自动 | 自动 | cache_control | 自动 |
推理参数的有效取值取决于模型。Amux 会在协议能够表达时转换这些字段,但不会替供应商校验模型是否接受某个取值;无效值由上游返回错误。
以下字段没有稳定的跨协议对应关系,通常只在同协议直连时保留:logprobs、top_logprobs、n、candidateCount、logit_bias、safety_identifier、prompt_cache_options、prompt_cache_retention、max_tool_calls、prediction、moderation,以及协议内置的网络搜索工具。
service_tier、serviceTier 和 Anthropic inference_geo 会被过滤,即使同协议直连也不会发送给上游。不要依赖这些字段选择计费档位或推理地域;需要限定地域时,请选择符合要求的供应商渠道。
平台主动过滤的参数会通过非流式响应的 amux.droppedParams 或流式响应的 x-amux-dropped-params 响应头返回。协议之间本身无法表达的字段不一定出现在该列表中,应以本页的兼容说明为准。
转换差异
转为 Messages
temperature高于 1 时截断为 1- 开启推理时移除
temperature、top_p和top_k - 未提供
max_tokens时按模型限制补充;推理预算会调整到有效范围 parallel_tool_calls取反后写入disable_parallel_tool_useseed、惩罚参数、JSON 输出、输出详略,以及 Responses 特有的推理选项无法保留- 音频、视频和文件内容无法转换,请求会失败;图片不受影响
转为 Chat
- 超过 4 条的停止词会被截断
top_k、推理预算、推理签名和缓存断点无法保留text.verbosity转为顶层verbosity- Responses 特有的推理摘要、模式和上下文无法保留
转为 Gemini
- 超过 5 条的停止词会被截断
- 公网 URL 形式的媒体输入无法保留;请改用 base64 或 Gemini Files API URI
- 并行工具调用、终端用户标识和输出详略无法保留
- 推理摘要只能转换为是否返回思考内容;摘要详略、推理模式和上下文无法保留
reasoning.effort: none转为thinkingBudget: 0
转为 Responses
- 停止词、
seed、惩罚参数和top_k无法保留 - 顶层
verbosity转为text.verbosity - token 数形式的推理预算无法转换为推理档位
消息结构
为满足目标协议的格式要求,跨协议转换可能会:
- 合并连续的同角色消息
- 移除找不到对应调用的工具结果,或只有调用但没有结果的助手消息
- 为空内容补充占位符
- 将 Anthropic 缓存断点限制为最多 4 个
这些规范化会尽量保留原意,但在工具调用不完整等情况下可能影响模型行为。Anthropic document(PDF)内容块不参与跨协议转换。
响应字段
响应按调用协议返回,model 字段使用 Amux 模型 ID。
| Chat | Responses | Messages | Gemini | |
|---|---|---|---|---|
| 内容 | choices[0].message.content | output[] | content[] | candidates[0].content.parts |
| 助手角色 | assistant | assistant | assistant | model |
| 结束原因 | finish_reason | status + incomplete_details | stop_reason | finishReason |
| 工具调用 | tool_calls | output[].function_call | content[].tool_use | parts[].functionCall |
Gemini 和 Responses 没有独立的“因工具调用而结束”值,Amux 会根据响应中是否包含工具调用进行映射。
用量字段
| Chat | Responses | Messages | Gemini | |
|---|---|---|---|---|
| 输入 | prompt_tokens | input_tokens | input_tokens | promptTokenCount |
| 输出 | completion_tokens | output_tokens | output_tokens | candidatesTokenCount |
| 缓存读取 | prompt_tokens_details.cached_tokens | input_tokens_details.cached_tokens | cache_read_input_tokens | cachedContentTokenCount |
| 推理 | completion_tokens_details.reasoning_tokens | output_tokens_details.reasoning_tokens | 计入输出 | thoughtsTokenCount |
转换时会统一以下口径:
- Chat、Responses 和 Gemini 的输入 token 包含缓存读取,Messages 的
input_tokens不包含 - Gemini 的
candidatesTokenCount不包含思考 token,其他三种协议的输出 token 包含
流式响应
四种协议都支持流式调用。跨协议时,Amux 按调用协议重新生成事件序列,并补齐该协议要求的结束标记和内容块收尾。
客户端中途断开后,已经产生的用量仍会计费。