Chat Completions 与 Responses

结城 AI 6 次阅读 1531 字 发布于 14 天前 预计阅读时间: 7 分钟


今天,大模型 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用户输入
assistantAI回复

例如:

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/completionsresponses
文本生成
图片理解
音频处理
JSON结构输出一般
工具调用部分完整
Agent支持一般

八、真实开发案例

我们来看一个真实应用场景。

假设你在做一个 ​合同分析系统

用户上传一份 PDF 合同。

系统需要:

  1. 提取关键信息
  2. 分析风险
  3. 生成 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/completionsresponses
设计时代GPT-4GPT-4o
接口定位聊天通用生成
多模态
JSON输出一般
Agent支持一般
给时光以生命,给岁月以文明
最后更新于 2026-06-15