同一个 Base URL,为什么有的客户端能用,有的报错?
Responses API 与 Chat Completions API 使用不同的请求路径、输入字段和返回结构。Base URL 和 API Key 相同,也不能直接互换两种请求;还要确认模型与账户支持所选协议。
两个接口怎么区分?
| 项目 | Responses | Chat Completions |
|---|---|---|
| HTTP 请求路径 | /v1/responses | /v1/chat/completions |
| 常见文本输入字段 | input | messages |
| Python SDK 方法 | client.responses.create | client.chat.completions.create |
| SDK 读取文本示例 | response.output_text | response.choices[0].message.content |
output_text 是 OpenAI Python SDK 提供的文本便利属性;直接发 HTTP 时,需要按实际返回的 output 项读取内容。工具调用、图片、多轮状态与流式事件也要分别按对应接口处理,不能只替换网址。
Codex、Python SDK 应选哪个?
- Codex CLI:本站配置教程使用 Responses,并设置
wire_api = "responses"。只支持 Chat Completions 的渠道不能直接照用。 - 已有 Python 对话应用:先看调用的方法。本页下方给出两种最小文本示例,选择账户和模型明确支持的一个。
- Cursor、Cherry Studio 等客户端:以当前版本实际使用的接口与功能为准。能填写 OpenAI 兼容地址,不代表所有客户端功能都会经过该地址。
Python:比较两个最小请求
先按SDK 教程安装依赖并设置 MALLOW_API_KEY,再设置自己账户可用的 MALLOW_MODEL。以下两个例子分开运行,生成请求可能计费;同一个模型是否支持两种接口需要分别确认。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["MALLOW_API_KEY"],
base_url="https://api.mallowapi.com/v1",
)
model = os.environ["MALLOW_MODEL"]
Responses:在上面的初始化代码后运行。
response = client.responses.create(
model=model,
input="用一句话介绍 API。",
)
print(response.output_text)
Chat Completions:选择这个接口时,改用下面的调用。
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": "用一句话介绍 API。"}],
)
print(response.choices[0].message.content)
Base URL 要不要加上 /responses?
上面 SDK 的 base_url 只填到 /v1,SDK 会追加方法对应的路径。直接使用 curl 发 HTTP 请求时,才填写包含 /responses 或 /chat/completions 的完整地址。客户端有“完整 URL”选项时,应按该选项的说明配置。
按哪条顺序排错?
- 核对最终请求地址,排除重复的 /v1 或接口路径。
- 核对客户端调用的是 Responses 还是 Chat Completions,再检查 input / messages 字段。
- 核对 Key 所属分组与模型权限。GET /v1/models 成功,只说明这次列表请求成功。
- 发送一条短文本并检查返回内容;需要工具调用或流式输出时,再单独验证这些功能。
遇到 401、403、404、429 或超时,继续查看接口报错排查。标准字段参考:OpenAI Responses、Chat Completions。上游参考文档不代表本站支持其全部功能。