Skip to main content

概述

Responses 格式转换器让 OpenAI Responses 客户端(OpenAI SDK 的 client.responses、Codex CLI 以及其他基于 Responses 的工具)可以调用 Anthropic、Gemini 和 Chat Completions 模型。原生支持 Responses API 的模型在同一路由上原样透传。
该路由是 Responses API 的无状态、部分兼容实现:支持文本、图片、函数调用、 推理和流式输出,不提供服务端响应存储,也不提供 OpenAI 托管工具。迁移工作流之前 请先阅读不支持的功能。

配置

SDK 配置

将 Base URL 设置为:

cURL / 直接调用

使用示例

无状态多轮对话

转换目标模型不保存任何服务端会话状态。请发送 store: false(或不传 store), 并由客户端自行携带历史:每一轮都把上一次响应的完整 response.output 数组追加到 input,再追加新的输入项。
回放规则:
  • 不要过滤、重排或改写输出项。reasoning 项的 summary 可能为空,只用于携带 encrypted_content;它必须保持在与其一同返回的函数调用之前。
  • 每个 function_call_output 引用的 call_id 必须出现在同一请求的 input 中。 同一历史中出现重复的 call_id 会返回 400。
  • encrypted_content 是不透明的提供商状态(Anthropic thinking 签名或 Gemini thought signature),只对签发它的提供商有效。其他提供商签发的内容会被忽略, 不会被回放。

思考与签名

Gemini 3 模型会校验当前回合内函数调用的 thought signature。这是模型的原生要求, 不是转换器规则,详见 Google 官方的 Thought signatures 文档。转换器负责把每个签名放在 reasoning 项中返回,并在你回放该项时把签名还原到 对应的函数调用 part 上。
已知限制:Gemini 3 签名与上游渠道切换。 PipeLLM 可能通过不同的上游渠道 处理同一模型的连续请求,而该路由不提供渠道亲和性。我们使用官方 OpenAI SDK 验证时,客户端正确回放了 encrypted_content,落在同一渠道的回放均成功,但有一次 回放落到了另一渠道,被上游以 400 Thought signature is not valid 拒绝。 此限制尚未解决:重试可能成功,但无法保证,请在 Gemini 3 工具循环中处理该错误。

Gemini 思考等级

Gemini 3 目标的 reasoning.effort 接受 low、medium、high,并映射为 thinkingLevel;Gemini 2.5 则使用 thinkingBudget。此转换路径不开放原生模型可能具备的 minimal 等其他等级;所选等级仍须由目标模型支持。

支持的功能

流式响应保证恰好以一个终态事件结束:response.completed、 response.incomplete(达到输出上限或内容过滤)或 response.failed (上游错误或流被截断)。 prompt_cache_key、client_metadata 和 stream_options.include_obfuscation 会被接受,但不产生效果。

不支持的功能

对于转换目标模型,任何无法在目标协议中表达的内容都会返回 400,不会被静默丢弃: 如果需要在 OpenAI 模型上使用这些功能,请走原生 /v1/responses 路由。

Codex CLI

Codex CLI 可以通过自定义 provider 使用该路由:设置 wire_api = "responses" 并使用 上面的 Base URL。对转换目标模型请关闭托管网页搜索(web_search = "disabled"), 因为托管工具会被拒绝。

相关文档

Converter 总览

所有 converter 路由

原生 Responses

面向 OpenAI 兼容模型的 /v1/responses

路由与协议

原生路由与 converter 路由的区别