OpenAI Agents SDK -> GoModel /v1 -> selected provider
开始之前
- 安装 GoModel。
- 选择一个 GoModel 主密钥,例如
change-me。 - 至少配置一个上游模型提供商。
- 安装适用于 Python 或 JavaScript 的 OpenAI Agents SDK。
SDK 默认会将 Trace 导出到 OpenAI。如果 GoModel 是您唯一的 OpenAI 客户端端点,请禁用链路追踪或配置单独的 OpenAI 追踪密钥。
1. 运行 GoModel
使用主密钥和上游提供商密钥启动 GoModel。本示例使用 OpenAI 作为上游:2. 确认 Responses 端点
通过 GoModel 发送一个简单的请求:ok。
3. 配置 SDK
将 SDK 的 OpenAI 客户端指向 GoModel:带命名空间的模型 ID
Python SDK 默认会将anthropic/claude-sonnet-4-20250514 和 gemini/gemini-2.0-flash 这类字符串视为带提供商前缀的模型名称。
如果您希望这些带命名空间的 GoModel ID 原样到达网关,请将 SDK 的模型提供商配置为模型 ID 透传模式:
支持的 SDK 路径
GoModel 支持 SDK 常规的 HTTP Responses 路径:- 非流式
Runner.run(...) - 通过 HTTP/SSE 进行流式传输的
Runner.run_streamed(...) - 函数工具循环
- 编译为模型工具调用的 handoff 和 agents-as-tools
- 重放输入历史的 SDK 托管本地会话
- 用于服务端托管对话资源的
/v1/conversations /v1/responses/input_tokens/v1/responses/compact- 通过
/v1/responses/{id}和/v1/responses/{id}/input_items检索本地响应
text 输出设置翻译为 Chat Completions 的 response_format
(并透传 text.verbosity);而对于有状态的或提供商原生的 Responses 字段,例如 previous_response_id、conversation
和托管工具项,则会返回明确的错误。
完整的功能矩阵请参阅 Responses 兼容性。
存储行为
GoModel 会存储本地响应快照,因此即使上游提供商不支持响应检索,生命周期端点也能正常工作。如果 SDK 发送store: false,GoModel 不会持久化该本地响应快照。
当前限制
- 尚未实现 Responses WebSocket 传输。请在 GoModel 上使用 SDK 的 HTTP/SSE 传输。
- 网页搜索、文件搜索和计算机操作(computer use)等托管工具需要支持相应工具载荷的原生上游提供商。Anthropic 和 Gemini 等通过 Chat 翻译的提供商会拒绝这些工具,除非 GoModel 为它们添加了明确的提供商能力映射。
- 在 Anthropic 上,
text.format由 Claude 原生的结构化输出(json_schema)或系统提示词指令(json_object)实现, 而text.verbosity会被丢弃并给出警告——Anthropic 没有对应功能。 previous_response_id会转发给原生支持 Responses 的提供商。对于通过 Chat 翻译的提供商,GoModel 会从其存储的响应中解析它, 并重放上一轮的输入和输出,因此上一个响应在创建时必须保持store开启。对于所有提供商,conversation都会从网关托管的对话中解析。- 链路追踪与模型路由相互独立。请禁用 SDK 的链路追踪,或配置真实的 OpenAI 追踪密钥。
更多示例
请参阅docs/examples/openai-agents-sdk/ 中可运行的示例。
参考
- OpenAI Agents SDK Python 配置: https://openai.github.io/openai-agents-python/config/
- OpenAI Agents SDK JavaScript 配置: https://openai.github.io/openai-agents-js/guides/config/
- OpenAI Agents SDK 运行智能体: https://openai.github.io/openai-agents-python/running_agents/