跳到正文

协议转换参数兼容性 ​

错误排查

调用过程中遇到错误?请参阅 API 错误码参考 获取完整的错误类型说明与排查方案。

开桥支持通过不同协议调用同一批模型。本文说明跨协议转发时,常见请求参数、响应字段与流式事件如何映射,以及哪些字段在目标协议中没有等价能力。

本文参考 开桥/rosetta-ai 的协议转换实现编写。rosetta-ai 覆盖 OpenAI Chat Completions、OpenAI Responses、Anthropic Messages 与 Google Gemini 四类协议之间的 12 组双向转换。

协议简称 ​

简称协议开桥 API 参考
Chat CompletionsOpenAI Chat CompletionsCreate a Chat Completion
ResponsesOpenAI ResponsesCreate a Model Response
MessagesAnthropic MessagesCreate a Message
GeminiGoogle Gemini / Vertex AI Generate ContentGenerate Content

支持总览 ​

下表从“请求来源协议”的角度阅读:例如 Chat Completions 行表示你使用 OpenAI Chat Completions 协议发起请求时,该字段可以转换到哪些后端协议。

字段类别Chat CompletionsMessagesResponsesGemini
模型 model全部全部全部全部
系统指令 / instructions全部全部全部全部
temperature全部全部全部全部
top_p全部全部全部全部
top_k不支持Gemini不支持Messages
最大输出 token全部全部全部全部
停止序列Messages / GeminiChat Completions / Gemini不支持Chat Completions / Messages
函数工具全部全部全部全部
tool_choice全部全部全部全部
网络搜索全部全部全部全部
推理 / Thinking全部全部全部全部
JSON 输出格式全部全部全部全部
图片输入Messages / GeminiChat Completions / GeminiGeminiChat Completions / Messages
文档 / 文件输入Messages / GeminiChat Completions / Gemini不支持Chat Completions / Messages
音频输入Gemini不支持不支持不支持
seedGemini不支持不支持Chat Completions
frequency_penaltyGemini不支持不支持Chat Completions
presence_penaltyGemini不支持不支持Chat Completions
候选数量 n / candidateCountGemini不支持不支持Chat Completions
LogprobsResponses / Gemini不支持GeminiChat Completions / Responses
并行工具调用Messages / ResponsesChat Completions / ResponsesChat Completions / Messages不支持
Metadata / UserMessages / ResponsesChat Completions / ResponsesMessages / Chat Completions不支持
service_tierMessages / ResponsesChat Completions / ResponsesChat Completions / Messages不支持
Prompt Cache KeyResponses不支持Chat Completions不支持
流式输出全部全部全部全部

参数支持以模型能力为准

协议转换只解决字段形态差异,不代表所有模型都支持该能力。具体可用参数仍以模型详情页的支持参数为准。

Chat Completions 请求转换 ​

Chat Completions → Messages ​

Chat Completions 字段Messages 字段说明
modelmodel原样传递
messages 中的 system / developersystem合并为文本块
messages 中的 usermessages[] user支持文本、图片;file content part 会降级为不支持占位文本
messages 中的 assistantmessages[] assistant支持文本、tool_use、thinking
messages 中的 toolmessages[] user tool_result转为工具结果块
max_tokens / max_completion_tokensmax_tokens未传时默认 4096
temperaturetemperature原样传递
top_ptop_p原样传递
stopstop_sequences字符串会转为数组
tools functiontools input_schemaJSON Schema 转为 Anthropic 工具 schema
web_search_optionstools web_search_20250305转为 Anthropic web search 工具
tool_choicetool_choiceauto / required / none → auto / any / none;命名函数转为 tool
parallel_tool_callstool_choice.disable_parallel_tool_use语义取反:false → true
response_format json_schemaoutput_config.formatJSON Schema 输出约束
response_format json_objectoutput_config.format转为 JSON 输出格式
reasoning_effortthinkingnone / minimal → disabled;low / medium / high → 2048 / 5120 / 10240 budget tokens
usermetadata.user_id用户标识
service_tierservice_tier仅传递 auto / standard_only
streamstream原样传递

不转换:frequency_penalty、presence_penalty、seed、n、logprobs、top_logprobs、logit_bias。

Chat Completions → Responses ​

Chat Completions 字段Responses 字段说明
modelmodel原样传递
messagesinput转为 Responses input item
max_completion_tokensmax_output_tokens最大输出 token
temperaturetemperature原样传递
top_ptop_p原样传递
tools functiontools function工具定义保持 Responses 形态
web_search_optionstools web_search转为 Responses 网络搜索工具
tool_choicetool_choiceauto / required / none 与命名函数均支持
parallel_tool_callsparallel_tool_calls原样传递
response_formattext.formatJSON / JSON Schema 输出格式
reasoning_effortreasoning.effort原样传递 effort
top_logprobsinclude请求 logprobs 相关输出
metadatametadata原样传递
service_tierservice_tier原样传递
prompt_cache_keyprompt_cache_key原样传递
prompt_cache_retentionprompt_cache_retention原样传递
streamstream + stream_options流式配置

不转换:frequency_penalty、presence_penalty、seed、n、logprobs、stop。

Chat Completions → Gemini ​

Chat Completions 字段Gemini 字段说明
modelmodel原样传递
messages 中的 system / developerconfig.systemInstruction系统指令
messages 中的 user / assistant / toolcontentsassistant 转为 Gemini model 角色
max_tokens / max_completion_tokensconfig.maxOutputTokens最大输出 token
temperatureconfig.temperature原样传递
top_pconfig.topP字段名转换
stopconfig.stopSequences停止序列
seedconfig.seed原样传递
frequency_penaltyconfig.frequencyPenalty字段名转换
presence_penaltyconfig.presencePenalty字段名转换
nconfig.candidateCount候选数量
logprobsconfig.responseLogprobs是否返回 logprobs
top_logprobsconfig.logprobs返回 top logprobs 数量
tools functionconfig.tools[].functionDeclarations使用 parametersJsonSchema
web_search_optionsconfig.tools[].googleSearch转为 Google Search
tool_choiceconfig.toolConfig.functionCallingConfigauto / required / none → AUTO / ANY / NONE;命名函数使用 allowedFunctionNames
response_format json_schemaconfig.responseMimeType + config.responseJsonSchemaresponseMimeType 为 application/json
response_format json_objectconfig.responseMimeTypeapplication/json
reasoning_effortconfig.thinkingConfignone / minimal → thinkingBudget: 0;low / medium / high / xhigh → 2048 / 5120 / 10240 / 20480
image_url base64inlineData图片二进制
image_url URLfileData图片 URL
file content partinlineData / fileData文件输入
input_audioinlineData音频输入

不转换:logit_bias、user。

Messages 请求转换 ​

Messages → Chat Completions ​

Messages 字段Chat Completions 字段说明
modelmodel原样传递
systemmessages[] system字符串或 TextBlockParam[] 会合并为文本
messages usermessages[] user支持文本、图片、document、tool_result
messages assistantmessages[] assistant支持文本、thinking、tool_use
max_tokensmax_completion_tokens对推理模型使用新字段
temperaturetemperature原样传递
top_ptop_p原样传递
stop_sequencesstop字段名转换
tools input_schematools functionJSON Schema 工具
tools web_search_20250305 / web_search_20260209web_search_optionsmax_uses、user_location 会尽量映射
tool_choicetool_choice + parallel_tool_callsauto / any / none → auto / required / none;disable_parallel_tool_use: true → parallel_tool_calls: false
output_config.formatresponse_formatJSON / JSON Schema 输出格式
thinkingreasoning_effortdisabled → none;enabled budget ≤2048 / ≤5120 / ≤10240 → low / medium / high
metadata.user_iduser用户标识
service_tierservice_tierstandard_only → default
streamstream + stream_options默认包含 usage

Document block 转换规则:

  • source.type: "base64" / "url" → Chat Completions file content part
  • source.type: "text" → 文本 content part
  • source.type: "content" → 展开内部文本 / 图片内容块

tool_result content 转换规则:

  • text 保留
  • search_result 展开内部文本
  • tool_reference 保留工具名
  • 图片 / document 不支持放入 OpenAI tool role,会被跳过

不转换:top_k、Anthropic 专属 metadata 字段。

Messages → Responses ​

Messages 字段Responses 字段说明
modelmodel原样传递
systeminstructions合并为文本
messagesinput转为 Responses input item
max_tokensmax_output_tokens最大输出 token
temperaturetemperature原样传递
top_ptop_p原样传递
tools input_schematools function工具定义
tools web searchtools web search转为 Responses 网络搜索工具
tool_choicetool_choice + parallel_tool_callsauto / any / none → auto / required / none
thinkingreasoningbudget 映射为 effort
output_config.formattext.formatJSON Schema 输出格式
metadata.user_idmetadata.user_id原样传递
service_tierservice_tier原样传递
streamstream原样传递

不转换:stop_sequences、top_k。

Messages → Gemini ​

Messages 字段Gemini 字段说明
modelmodel原样传递
systemconfig.systemInstruction字符串或文本块
messages usercontents[] user文本、图片、document、tool_result
messages assistantcontents[] model文本、tool_use、Gemini thought signature
max_tokensconfig.maxOutputTokens最大输出 token
temperatureconfig.temperature原样传递
top_pconfig.topP字段名转换
top_kconfig.topK字段名转换
stop_sequencesconfig.stopSequences停止序列
tools input_schemaconfig.tools[].functionDeclarations使用 parametersJsonSchema
tools web searchconfig.tools[].googleSearch转为 Google Search
tool_choiceconfig.toolConfig.functionCallingConfigauto / any / none → AUTO / ANY / NONE;命名工具使用 allowedFunctionNames
thinkingconfig.thinkingConfigdisabled → thinkingBudget: 0;enabled → budget 原样传递
output_config.formatconfig.responseMimeType + config.responseJsonSchemaJSON Schema 输出格式

不转换:metadata。

Document block 转换规则:

  • source.type: "base64" → inlineData
  • source.type: "url" → fileData
  • source.type: "text" → text
  • 其它来源 → 不支持占位文本

Responses 请求转换 ​

Responses → Chat Completions ​

Responses 字段Chat Completions 字段说明
modelmodel原样传递
instructionsmessages[] system系统指令
inputmessages转为 Chat Completions messages
max_output_tokensmax_completion_tokens最大输出 token
temperaturetemperature原样传递
top_ptop_p原样传递
tools functiontools function工具定义
tools web searchweb_search_options转为 Chat Completions 网络搜索参数
tool_choicetool_choice支持 auto / required / none 与命名函数
parallel_tool_callsparallel_tool_calls原样传递
reasoning.effortreasoning_effort原样传递
text.formatresponse_formatJSON / JSON Schema 输出格式
text.verbosityverbosity作为扩展字段传递
metadatametadata原样传递
service_tierservice_tier原样传递
prompt_cache_keyprompt_cache_key原样传递
prompt_cache_retentionprompt_cache_retention原样传递
safety_identifiersafety_identifier原样传递
include logprobstop_logprobs设置为 20
streamstream + stream_options流式配置

不转换:previous_response_id。

Responses → Messages ​

Responses 字段Messages 字段说明
modelmodel原样传递
instructionssystem系统指令
inputmessages转为 Anthropic messages
max_output_tokensmax_tokens未传时默认 4096
temperaturetemperature原样传递
top_ptop_p原样传递
tools functiontools input_schema工具定义
tools web searchtools web_search_20250305转为 Anthropic web search 工具
tool_choice + parallel_tool_callstool_choiceauto / required / none → auto / any / none;parallel_tool_calls: false → disable_parallel_tool_use: true
reasoning.effortthinkinglow / medium / high → 2048 / 5120 / 10240 budget tokens
text.format json_schemaoutput_config.formatJSON Schema 输出格式
metadata.user_idmetadata.user_id原样传递
service_tierservice_tier仅传递 auto / standard_only
streamstream原样传递

不转换:previous_response_id、prompt_cache_key、prompt_cache_retention、safety_identifier。

Responses → Gemini ​

Responses 字段Gemini 字段说明
modelmodel原样传递
instructionsconfig.systemInstruction系统指令
inputcontents转为 Gemini contents
max_output_tokensconfig.maxOutputTokens最大输出 token
temperatureconfig.temperature原样传递
top_pconfig.topP字段名转换
tools functionconfig.tools[].functionDeclarations使用 parametersJsonSchema
tools web searchconfig.tools[].googleSearch转为 Google Search
tool_choiceconfig.toolConfig.functionCallingConfigauto / required / none → AUTO / ANY / NONE;命名函数使用 allowedFunctionNames
reasoning.effortconfig.thinkingConfiglow / medium / high → 2048 / 5120 / 10240 budget
text.formatconfig.responseMimeType + config.responseJsonSchemaJSON / JSON Schema 输出格式
include logprobsconfig.responseLogprobs + config.logprobsLogprobs 输出

不转换:metadata、previous_response_id、parallel_tool_calls、prompt_cache_key、prompt_cache_retention、safety_identifier。

Gemini 请求转换 ​

Gemini → Chat Completions ​

Gemini 字段Chat Completions 字段说明
modelmodel原样传递
config.systemInstructionmessages[] system系统指令
contentsmessagesuser / model → user / assistant
config.maxOutputTokensmax_completion_tokens最大输出 token
config.temperaturetemperature原样传递
config.topPtop_p字段名转换
config.stopSequencesstop停止序列
config.seedseed原样传递
config.frequencyPenaltyfrequency_penalty字段名转换
config.presencePenaltypresence_penalty字段名转换
config.candidateCountn候选数量
config.responseLogprobslogprobs是否返回 logprobs
config.logprobstop_logprobstop logprobs 数量
config.tools[].functionDeclarationstools function工具定义
config.tools[].googleSearchweb_search_options网络搜索参数
config.toolConfigtool_choiceAUTO / ANY / NONE → auto / required / none;单个 allowedFunctionNames 转命名函数
config.responseMimeType + responseJsonSchemaresponse_formatJSON / JSON Schema 输出格式
config.thinkingConfigreasoning_effortthinkingBudget: 0 → none;≤2048 / ≤5120 / >5120 → low / medium / high

不转换:config.safetySettings、config.cachedContent、config.responseModalities。

Gemini → Messages ​

Gemini 字段Messages 字段说明
modelmodel原样传递
config.systemInstructionsystem系统指令
contentsmessagesuser / model → user / assistant
config.maxOutputTokensmax_tokens未传时默认 4096
config.temperaturetemperature原样传递
config.topPtop_p字段名转换
config.topKtop_k字段名转换
config.stopSequencesstop_sequences停止序列
config.tools[].functionDeclarationstools input_schema工具定义
config.tools[].googleSearchtools web_search_20250305转为 Anthropic web search 工具
config.toolConfigtool_choiceAUTO / ANY / NONE → auto / any / none;单个 allowedFunctionNames 转命名工具
config.thinkingConfigthinkingbudget 原样传递;0 表示 disabled
config.responseMimeType + responseJsonSchemaoutput_configJSON Schema 输出格式

不转换:config.seed、config.frequencyPenalty、config.presencePenalty、config.candidateCount、config.safetySettings、config.cachedContent。

Gemini → Responses ​

Gemini 字段Responses 字段说明
modelmodel原样传递
config.systemInstructioninstructions系统指令
contentsinput转为 Responses input item
config.maxOutputTokensmax_output_tokens最大输出 token
config.temperaturetemperature原样传递
config.topPtop_p字段名转换
config.tools[].functionDeclarationstools function工具定义
config.tools[].googleSearchtools web_search_preview转为 Responses 网络搜索工具
config.toolConfigtool_choiceAUTO / ANY / NONE → auto / required / none
config.thinkingConfigreasoningbudget 映射为 effort
config.responseMimeType + responseJsonSchematext.formatJSON / JSON Schema 输出格式

不转换:config.seed、config.frequencyPenalty、config.presencePenalty、config.candidateCount、config.safetySettings、config.cachedContent。

响应字段转换 ​

来源响应目标响应内容字段工具调用字段推理字段结束原因
MessagesChat Completionscontent[] text → choices[0].message.contenttool_use → tool_callsthinking → reasoning + reasoning_detailsend_turn / tool_use / max_tokens / refusal → stop / tool_calls / length / content_filter
ResponsesChat Completionsoutput[] message output_text → choices[0].message.contentfunction_call → tool_callsreasoning → reasoning + reasoning_detailscompleted / incomplete / failed → stop / length / stop;content filter 会转为 content_filter
GeminiChat Completionsparts[].text → choices[0].message.contentfunctionCall → tool_callsthought → reasoning + reasoning_detailsSTOP / MAX_TOKENS / SAFETY → stop / length / content_filter
Chat CompletionsMessagesmessage.content → content[] texttool_calls → tool_usereasoning → thinkingstop / tool_calls / length / content_filter → end_turn / tool_use / max_tokens / refusal
ResponsesMessagesoutput[] message → content[] textfunction_call → tool_usereasoning → thinkingcompleted / incomplete / failed → end_turn / max_tokens / end_turn
GeminiMessagesparts[].text → content[] textfunctionCall → tool_usethought → thinkingSTOP / MAX_TOKENS / SAFETY → end_turn / max_tokens / refusal
Chat CompletionsResponsesmessage.content → output[] message output_texttool_calls → function_callreasoning → output[] reasoningstop / tool_calls / length / content_filter → completed / completed / incomplete / failed
MessagesResponsescontent[] text → output[] message output_texttool_use → function_callthinking → output[] reasoningend_turn / max_tokens / refusal → completed / incomplete / failed
GeminiResponsesparts[].text → output[] message output_textfunctionCall → function_callthought → output[] reasoningSTOP / MAX_TOKENS / SAFETY → completed / incomplete / failed
Chat CompletionsGeminimessage.content → parts[].texttool_calls → functionCallreasoning → parts[].thoughtstop / tool_calls / length / content_filter → STOP / STOP / MAX_TOKENS / SAFETY
MessagesGeminicontent[] text → parts[].texttool_use → functionCallthinking → parts[].thoughtend_turn / max_tokens / refusal → STOP / MAX_TOKENS / SAFETY
ResponsesGeminioutput[] message output_text → parts[].textfunction_call → functionCallreasoning → parts[].thoughtcompleted / incomplete / failed → STOP / MAX_TOKENS / SAFETY

用量字段转换 ​

来源协议目标协议主要映射
MessagesChat Completionsusage.input_tokens → prompt_tokens;usage.output_tokens → completion_tokens;cache_read_input_tokens → prompt_tokens_details.cached_tokens;server_tool_use.web_search_requests → prompt_tokens_details.web_search
ResponsesChat Completionsusage.input_tokens / output_tokens / total_tokens 对应映射;cached tokens 与 reasoning tokens 会映射到 OpenAI style details
GeminiChat CompletionspromptTokenCount + toolUsePromptTokenCount → prompt_tokens;candidatesTokenCount + thoughtsTokenCount → completion_tokens;cachedContentTokenCount → cached tokens;thoughtsTokenCount → reasoning tokens
Chat CompletionsMessagesprompt_tokens → input_tokens;completion_tokens → output_tokens;cached tokens 与 web search 计数会映射到 Anthropic usage 扩展字段
ResponsesMessagescached tokens → cache_read_input_tokens;web search call 会统计到 server_tool_use
GeminiMessagespromptTokenCount + toolUsePromptTokenCount → input_tokens;candidatesTokenCount + thoughtsTokenCount → output_tokens;cachedContentTokenCount → cache_read_input_tokens
Chat CompletionsResponsescached tokens、reasoning tokens 映射到 Responses usage;web search call 会计数
MessagesResponsesinput_tokens / output_tokens 对应映射;cache_read_input_tokens → cached tokens
GeminiResponsesGemini usageMetadata 对应映射;tool-use prompt tokens 与 thoughts tokens 会合并到对应计数
Chat CompletionsGeminicached tokens → cachedContentTokenCount;reasoning tokens → thoughtsTokenCount
MessagesGeminicache_read_input_tokens → cachedContentTokenCount
ResponsesGeminicached tokens → cachedContentTokenCount;reasoning tokens → thoughtsTokenCount

流式转换能力 ​

所有 12 组转换都支持流式输出。不同协议的事件名不同,但以下内容会尽量保留:

内容类型转换说明
文本增量保留为目标协议的文本 delta
工具调用增量保留工具名、工具调用 ID 与参数增量;目标协议不支持完全等价事件时会合并为最接近的事件
推理 / Thinking 增量reasoning、thinking_delta、Gemini thought 会互转
网络搜索 / GroundingResponses web search、Anthropic web_search_tool_result、Gemini grounding metadata 与 Chat Completions annotations 会尽量互转
Usage如果上游流式尾包提供 usage,会转换为目标协议的 usage 事件或尾包字段

常见差异与注意事项 ​

  • Responses 没有 stop / stop_sequences 的直接等价请求字段,从 Chat Completions 或 Messages 转到 Responses 时不会转换停止序列。
  • Gemini 不支持 parallel_tool_calls、metadata、service_tier、prompt cache key 等 OpenAI / Anthropic 扩展参数。
  • Anthropic Messages 的 top_k 只在转 Gemini 时保留;转 Chat Completions 或 Responses 时不会转换。
  • Chat Completions 的 seed、frequency_penalty、presence_penalty、n 主要可以转 Gemini;转 Messages / Responses 时没有等价字段。
  • reasoning_effort 与 thinking 的映射是区间映射,不是精确 token 上限保真;需要精确控制 thinking budget 时,优先使用目标协议的原生参数。
  • 工具结果里的图片 / document 在转 Chat Completions tool role 时会被跳过,因为 OpenAI tool role 只接收文本内容。
  • 协议转换会尽量保留 web search / grounding 结果,但不同协议的引用结构不同,字段名与嵌套层级会变化。