Amux

文本协议转换

最近更新:2026年9月1日

OpenAI Chat、Responses、Anthropic Messages 与 Gemini 之间的兼容范围和参数差异。

Amux 支持四种文本生成协议相互转换。你可以继续使用现有 SDK,由网关把请求转换为模型供应商支持的协议,并按原调用协议返回响应。

本页只说明文本协议。OpenAI Images 和 Amux Tasks 不参与这里的转换。

支持范围

简称协议端点
ChatOpenAI Chat CompletionsPOST /v1/chat/completions
ResponsesOpenAI ResponsesPOST /v1/responses
MessagesAnthropic MessagesPOST /v1/messages
GeminiGoogle GeminiPOST /v1beta/models/{model}:generateContent

四种协议可以两两转换:

调用协议 ↓ / 上游协议 →ChatResponsesMessagesGemini
Chat直连转换转换转换
Responses转换直连转换转换
Messages转换转换直连转换
Gemini转换转换转换直连

网关优先选择与调用协议相同的上游协议;无法直连时才转换。同协议直连不做协议格式转换,但仍会执行模型路由、必要的参数过滤和响应规范化。

转换能力不等于每个模型都开放全部入口。模型实际支持的调用协议以模型详情页为准;不支持的组合会返回错误,不会静默改用其他入口。

请求参数

“—”表示目标协议没有直接对应字段,跨协议转换时无法保留。

参数ChatResponsesMessagesGemini
系统提示词system 消息instructionssystemsystemInstruction
最大输出max_tokensmax_output_tokensmax_tokens(必填)maxOutputTokens
temperature0–20–20–10–2
top_p
top_ktop_ktopK
停止词stop(最多 4 条)stop_sequencesstopSequences(最多 5 条)
seed
presence_penalty
frequency_penalty
工具定义toolstoolstoolsfunctionDeclarations
工具选择tool_choicetool_choicetool_choicefunctionCallingConfig
并行工具调用parallel_tool_callsparallel_tool_callsdisable_parallel_tool_use(反义)
JSON 输出response_formattext.formatresponseMimeType
推理档位reasoning_effortreasoning.effortthinking.budget_tokensthinkingConfig
推理摘要reasoning.summaryincludeThoughts
推理模式reasoning.mode
推理上下文reasoning.context
输出详略verbositytext.verbosity
终端用户标识userusermetadata.user_id
图片输入base64 / URLbase64 / URLbase64 / URLbase64 / Files API URI
提示缓存自动自动cache_control自动

推理参数的有效取值取决于模型。Amux 会在协议能够表达时转换这些字段,但不会替供应商校验模型是否接受某个取值;无效值由上游返回错误。

以下字段没有稳定的跨协议对应关系,通常只在同协议直连时保留:logprobstop_logprobsncandidateCountlogit_biassafety_identifierprompt_cache_optionsprompt_cache_retentionmax_tool_callspredictionmoderation,以及协议内置的网络搜索工具。

service_tierserviceTier 和 Anthropic inference_geo 会被过滤,即使同协议直连也不会发送给上游。不要依赖这些字段选择计费档位或推理地域;需要限定地域时,请选择符合要求的供应商渠道。

平台主动过滤的参数会通过非流式响应的 amux.droppedParams 或流式响应的 x-amux-dropped-params 响应头返回。协议之间本身无法表达的字段不一定出现在该列表中,应以本页的兼容说明为准。

转换差异

转为 Messages

  • temperature 高于 1 时截断为 1
  • 开启推理时移除 temperaturetop_ptop_k
  • 未提供 max_tokens 时按模型限制补充;推理预算会调整到有效范围
  • parallel_tool_calls 取反后写入 disable_parallel_tool_use
  • seed、惩罚参数、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。

ChatResponsesMessagesGemini
内容choices[0].message.contentoutput[]content[]candidates[0].content.parts
助手角色assistantassistantassistantmodel
结束原因finish_reasonstatus + incomplete_detailsstop_reasonfinishReason
工具调用tool_callsoutput[].function_callcontent[].tool_useparts[].functionCall

Gemini 和 Responses 没有独立的“因工具调用而结束”值,Amux 会根据响应中是否包含工具调用进行映射。

用量字段

ChatResponsesMessagesGemini
输入prompt_tokensinput_tokensinput_tokenspromptTokenCount
输出completion_tokensoutput_tokensoutput_tokenscandidatesTokenCount
缓存读取prompt_tokens_details.cached_tokensinput_tokens_details.cached_tokenscache_read_input_tokenscachedContentTokenCount
推理completion_tokens_details.reasoning_tokensoutput_tokens_details.reasoning_tokens计入输出thoughtsTokenCount

转换时会统一以下口径:

  • Chat、Responses 和 Gemini 的输入 token 包含缓存读取,Messages 的 input_tokens 不包含
  • Gemini 的 candidatesTokenCount 不包含思考 token,其他三种协议的输出 token 包含

流式响应

四种协议都支持流式调用。跨协议时,Amux 按调用协议重新生成事件序列,并补齐该协议要求的结束标记和内容块收尾。

客户端中途断开后,已经产生的用量仍会计费。