/v1/responses 请求,并将其路由到选定的模型提供商。部分提供商提供原生兼容 Responses 的接口;其他提供商则提供 Chat Completions 或提供商原生的聊天 API,此时 GoModel 会对请求进行翻译。
兼容性规则遵循 Postel 定律:GoModel 会翻译可移植的模型功能,并接受不熟悉的工具声明,但不会把它们转发给无法执行它们的提供商。如果某些字段无法被安全翻译,而它们又会改变模型输出的含义,则仍会被拒绝。
路由模式
聊天翻译提供商包括 Anthropic 和 Gemini 的原生路由。它们能很好地支持文本、流式传输、目标适配器支持的多模态输入以及函数工具循环,但无法安全地执行 OpenAI 托管的工具。
功能行为
在 Anthropic 上,
text.format 由提供商原生的结构化输出(json_schema)或系统提示词指令(json_object)实现——
参见 Anthropic。
text.verbosity 在 Anthropic 中没有对应项,会被丢弃并输出警告。include 字段
include 用于请求响应条目上的额外注解,例如
reasoning.encrypted_content 或 file_search_call.results。它从不改变模型的行为,因此聊天翻译提供商会接受它,并返回不含这些注解的响应,与不支持这些注解的原生提供商完全一样。总是附带 include 的客户端(例如使用
wire_api = "responses" 的 Codex)无需额外配置即可工作。
唯一的例外是 message.output_text.logprobs,它请求的是真实的模型输出而不是注解。GoModel 拒绝它,原因与拒绝 top_logprobs 相同。
托管工具
托管工具由上游提供商执行,而不仅仅依靠模型的文本补全。它们的负载通常引用提供商拥有的资源和运行时状态:web_search及其旧版别名web_search_preview依赖提供商的搜索实现和事件 schema。file_search引用提供商的向量存储,例如vector_store_ids。computer_use_preview依赖提供商管理的计算机会话、显示环境和安全模型。
namespace 工具会作为一个整体被省略,而不是被展开。展开会改变工具名称,破坏客户端的路由约定。选择了被省略工具的 tool_choice 也会被省略。如果所有工具都被省略,parallel_tool_calls 也会从翻译后的请求中移除。
这是对能力的优雅降级,而不是对托管工具的模拟。尤其要注意,来自聊天翻译提供商的响应并不意味着发生了网页搜索、文件搜索或计算机操作。当结果依赖于这些工具的运行时,请使用原生 Responses 提供商。
Agent SDK
OpenAI Agents SDK 客户端可以通过 GoModel 与 Anthropic 和 Gemini 模型通信,适用于可移植的流程:- 普通的
Runner.run(...) - 基于 HTTP/SSE 的
Runner.run_streamed(...) - 本地函数工具
- 由 SDK 管理的本地历史回放
store: false、Codex、SDK 管理的历史)总是会带上 Responses API 返回的条目 id。GoModel 在调用聊天类提供商之前,会将该 id 连同其他仅 Responses 使用的条目元数据一并丢弃,因此同一份回放请求体可在所有提供商上使用。
对于 Python Agents SDK 客户端,带命名空间的 GoModel 模型 ID(例如
anthropic/claude-sonnet-4-20250514 和 gemini/gemini-2.0-flash)需要启用模型 ID 透传模式:
Runner.run(...) 或
Runner.run_streamed(...) 时请使用该 run_config。