文档接口与模型

Responses 与 Chat Completions

两个接口共用同一个 Base URL 和 API Key,但请求路径、字段和返回结构不同。Codex 只用 Responses;普通对话应用两种都可以。

更新于

两个接口怎么区分

项目ResponsesChat Completions
请求路径/v1/responses/v1/chat/completions
输入字段inputmessages
Python SDK 方法client.responses.createclient.chat.completions.create
读取文本response.output_textchoices[0].message.content
谁在用Codex、新项目大多数聊天客户端、旧项目

output_text 是 SDK 提供的便捷属性;直接发 HTTP 请求时,要从返回的 output 数组里取文本。工具调用、图片输入、多轮对话和流式事件,两个接口的写法也不同,换接口时不能只改网址。

该用哪个

  • Codex:只能用 Responses,配置里写 wire_api = "responses",见 Codex CLI。
  • 已有的对话应用:原来用哪个就继续用哪个,棉花糖 API 两个接口都支持。
  • 新项目:两者都可以。Responses 是 OpenAI 目前主推的接口。
  • Cherry Studio、Cursor 等客户端:以客户端实际调用的接口为准,一般是 Chat Completions。

同一个问题,两种写法

初始化代码相同,见 OpenAI SDK。Responses:

response = client.responses.create(
    model="gpt-6.1-sol",
    input="用一句话介绍 API",
)
print(response.output_text)

Chat Completions:

completion = client.chat.completions.create(
    model="gpt-6.1-sol",
    messages=[{"role": "user", "content": "用一句话介绍 API"}],
)
print(completion.choices[0].message.content)

Base URL 要不要带接口路径

SDK 和客户端里的 Base URL 只填到 /v1,它们会自己拼接口路径。只有直接用 curl 发请求时,才写完整地址,例如 https://api.mallowapi.com/v1/responses。

排查顺序

  1. 看最终请求地址,有没有重复的 /v1 或多余的路径。
  2. 看客户端用的是哪个接口,字段是 input 还是 messages。
  3. 看密钥所在分组能不能用这个模型。GET /v1/models 成功只说明列表请求成功。
  4. 发一条短文本确认能回复;需要工具调用或流式输出时,再单独测试。

字段的完整定义见 OpenAI 官方的 Responses 和 Chat Completions 文档。官方文档列出的功能,不代表网关全部支持。