今天,大模型 API 的接口形态其实发生了一次非常关键的变化。
很多人可能已经习惯使用这样的接口:
POST /v1/chat/completions
说实在的,我个人开发基本也都是用这个,毕竟Agent开发已经是后来的事情。
无论是 OpenAI、Azure OpenAI,还是各种兼容 OpenAI 协议的模型平台,大多数对话应用都是基于这个接口构建的。
大语言模型出现开始就是为了对话,这么设计也无可厚非。
然而从 2024 年开始,OpenAI 官方逐步推出并推荐一个新的接口:
POST /v1/responses
很多开发者,包括我第一次看到这个接口时都会产生疑问:
-
/v1/responses 和/v1/chat/completions到底有什么区别? - 为什么 OpenAI 要推出新的接口?
- 旧接口会不会被淘汰?
- 如果我要做 AI API 聚合平台,该如何设计?
一、ChatGPT-API
在 GPT-3.5 和 GPT-4 时代,最核心的接口就是:
/v1/chat/completions
这个接口本质上是为聊天设计的。
大语言模型,望文知义,就是为了聊天。
典型调用示例如下:
POST /v1/chat/completions
{
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant"
},
{
"role": "user",
"content": "解释一下什么是微服务架构"
}
],
"temperature": 0.7
}
这里有一个非常重要的概念:messages
它表示对话历史。
大模型开发中,我们常用这些配置进行处理。大模型本质是推理,他没有记忆,只能依靠上下文来实现记忆功能。
| role | 含义 |
|---|---|
| system | 系统设定 |
| user | 用户输入 |
| assistant | AI回复 |
例如:
user:你好
assistant:你好,请问有什么可以帮你
user:什么是AI
这是一段上下文对话。
二、Chat-Completions局限性
随着 AI 应用的发展,开发大模型的那批天才们逐渐发现一个问题:
chat/completions 接口太“单一”了。
无可厚非,它主要是为 文本聊天场景 设计的。
但现在 AI 的能力已经远远超出了聊天。
例如:
- 图片理解
- 文档分析
- 语音识别
- 代码执行
- 工具调用
- JSON结构输出
- Agent系统
而 chat/completions 在这些场景中逐渐显得不够灵活。
我们可以简单对比一下。
| 能力 | chat/completions |
|---|---|
| 文本对话 | ✅ |
| 多模态输入 | ❌ |
| 图片理解 | ❌ |
| 音频输入 | ❌ |
| 工具调用 | 部分 |
| 结构化输出 | 一般 |
出问题怎么办,要么受着,要么就是改变现状。
于是我们有了新的接口:Responses
三、Responses接口
新接口名称:
/v1/responses
名字非常直观:
Response(响应)
它代表:
模型对输入内容的响应。
此接口返回的数据相较于聊天更加全面,并且不再局限于聊天。
响应,意为你给我了什么要求,我给你什么响应。
四、Responses 的设计理念
OpenAI 在设计 responses API 时,其核心目标是:
通过一个接口,用以统一所有生成能力
也就是说:
未来所有 AI 能力都通过一个接口完成。
过去的 API 结构是这样的,接口细分过于严重,导致实际开发需要每个功能针对性解决。
chat/completions
completions
images
audio
embeddings
未来希望变成这样,一个接口解决所有的功能性问题开发。
responses
五、接口请求结构对比
Chat-Completions请求
POST /v1/chat/completions
{
"model": "gpt-4",
"messages": [
{
"role": "user",
"content": "介绍一下Java虚拟机"
}
]
}
特点:
- 必须使用
messages - 结构固定
- 只能处理文本
Responses 请求
POST /v1/responses
{
"model": "gpt-4.1",
"input": "介绍一下Java虚拟机"
}
接口更简单,同时语义更清晰。
也可以写成多模态结构:
{
"model": "gpt-4.1",
"input": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图片里是什么?"
},
{
"type": "input_image",
"image_url": "https://example.com/image.png"
}
]
}
]
}
这里出现了一个重要变化:
content 可以包含不同类型的数据。
| 类型 | 含义 |
|---|---|
| text | 文本 |
| input_image | 图片 |
| input_audio | 音频 |
六、返回结构差异
chat/completions 返回
{
"choices": [
{
"message": {
"role": "assistant",
"content": "Java虚拟机是..."
}
}
]
}
开发者通常这样取结果:
choices[0].message.content
responses 返回
{
"output": [
{
"content": [
{
"type": "output_text",
"text": "Java虚拟机是..."
}
]
}
]
}
取结果方式:
output[0].content[0].text
也可以直接:
response.output_text
七、多模态能力对比
随着 GPT-4o 等模型的出现,多模态成为 AI 的核心能力之一。
我们用一个表格总结。
| 能力 | chat/completions | responses |
|---|---|---|
| 文本生成 | ✅ | ✅ |
| 图片理解 | ❌ | ✅ |
| 音频处理 | ❌ | ✅ |
| JSON结构输出 | 一般 | 强 |
| 工具调用 | 部分 | 完整 |
| Agent支持 | 一般 | 强 |
八、真实开发案例
我们来看一个真实应用场景。
假设你在做一个 合同分析系统。
用户上传一份 PDF 合同。
系统需要:
- 提取关键信息
- 分析风险
- 生成 JSON 数据
例如:
合同金额
合同期限
违约责任
如果使用 chat/completions:
你只能这样做:
把合同文本复制进 prompt
让 AI 返回文本
再用代码解析
这种请求方式非常不稳定不说。
而使用 responses,我们可以直接要求JSON输出,模型会全力保证JSON输出合法性。
示例:
{
"model": "gpt-4.1",
"input": "分析合同",
"response_format": {
"type": "json_schema"
}
}
AI 会直接返回结构化数据。
九、为什么 OpenAI 要升级接口
其实原因非常简单。
AI 的发展已经进入 Agent时代。
未来 AI 应用会越来越复杂,例如下面的列表。
AI + 工具
AI + 数据库
AI + 浏览器
AI + 代码执行
这时候 API 需要支持:
- tool calling
- function calling
- json schema
- multimodal
而 chat/completions 已经不适合承载这些能力。
于是 responses 成为新的核心接口。
统一接口 + 多模态 + Agent能力
而 /v1/responses 正是这个趋势的起点。
| chat/completions | responses | |
|---|---|---|
| 设计时代 | GPT-4 | GPT-4o |
| 接口定位 | 聊天 | 通用生成 |
| 多模态 | ❌ | ✅ |
| JSON输出 | 一般 | 强 |
| Agent支持 | 一般 | 强 |

Comments NOTHING