Chat Completions API vs Responses API:背景、差异与业界支持情况

发布于 2026-06-13 03:03

Chat Completions API vs Responses API:背景、差异与业界支持情况

一、为什么会出现两种 API

OpenAI 的对外接口经历了三个阶段。

Completions API(2020 年):最早的文本补全接口。传入一段 prompt,模型续写后面的内容。纯文本输入输出,没有对话概念,不支持多轮。

Chat Completions API(2023 年 3 月):引入 messages 数组,每条消息有 role(system / user / assistant)和 content 字段。支持多轮对话、function calling、system prompt。这个接口迅速成为事实标准,几乎所有大模型厂商都兼容它的格式。你在 DeepSeek、通义千问、智谱 GLM 上调用的 chat/completions 端点,都是这个协议的实现。

Responses API(2025 年 3 月):专门为 Agent 场景设计。OpenAI 在发布时说得很明确——Chat Completions 适合简单对话,Responses 适合涉及工具调用、代码执行、状态管理的 Agent 工作流。旧的 Assistants API(2023 年 DevDay 发布,长期 beta)将在 2026 年上半年下线,由 Responses API 统一替代。

根本原因是:Chat Completions 在处理复杂 Agent 工作流时有结构性缺陷。每次调用必须手动传入完整历史对话,状态管理完全在客户端,多步骤工具调用需要开发者自己编排循环。当对话轮次变长,token 消耗线性增长,很快就会撞上上下文窗口上限。Responses API 把这些能力搬到了服务端。

二、两种 API 的核心差异

2.1 状态管理

这是两者最根本的差异。

Chat Completions 是无状态的。要维持多轮对话,客户端必须在每次请求中传入完整的 messages 数组。一个 50 轮的对话,第 51 次调用时要把前 50 轮全部重发一遍。开发者需要自己实现上下文压缩、历史摘要等逻辑。

Responses API 引入了 previous_response_id。服务端保存对话状态,客户端只需要传"上一轮的 response id"就能接续上下文。服务端还实现了 compaction(压缩)机制——当对话接近上下文窗口上限时,自动把早期对话总结为摘要,腾出空间继续对话。

实际影响:一个 100 轮的 Agent 对话,用 Chat Completions 每次调用可能消耗 50K+ tokens(全文重发),用 Responses API 只需要传新的一轮输入加上 response id,token 消耗可控。

2.2 数据结构

Chat Completions 的输入是 messages 数组,每条消息是 {role, content} 结构。输出是 choices[].message,也是一个 message 对象。所有信息都塞进 message 这一个概念里。

Responses API 的输入是 items 数组,item 是一个 union 类型,可以是 message、function_call、function_call_result、reasoning、image 等多种类型。输出也是 items[],每个 item 有自己的 type 字段。message 只是 item 的一种类型,不再是唯一的一等公民。

这个差异让 Responses API 能更精确地表达"模型做了什么"——是输出了文本、调用了工具、还是做了推理。Chat Completions 把所有这些都混在 message.content 里,解析起来更麻烦。

2.3 工具调用

Chat Completions 的 function calling 流程:

  1. 请求中传入 tools 数组(函数定义)
  2. 响应中检查 choices[0].message.tool_calls 字段
  3. 如果有 tool_calls,本地执行函数
  4. 把执行结果包装为 {role: "tool", content: "...", tool_call_id: "xxx"} 追加到 messages
  5. 再次调用 API,传入更新后的 messages

这个流程完全由开发者手动编排。

Responses API 的工具调用:

  1. 请求中传入 tools 数组
  2. 响应的 items 中直接包含 function_call 和 function_call_result 类型的 item
  3. 工具调用的输入输出是结构化的,不需要手动解析 tool_calls 字段

Codex CLI 能自动执行工具调用并继续循环,依赖的就是 Responses API 的这个能力。

2.4 内置工具

Chat Completions 只能调用开发者自定义的函数。

Responses API 可以直接使用 OpenAI 提供的内置工具:

  • code_interpreter:在沙箱中执行 Python 代码
  • file_search:搜索上传的文件
  • web_search:联网搜索

这些工具不需要开发者自己实现,直接写在请求的 tools 数组里就行。

2.5 多模态

Chat Completions 的多模态(图片、音频)需要在 message.content 数组里混合传入不同类型的内容块。

Responses API 的 input/output 天然支持多模态,不同类型的内容作为独立 item 处理,结构更清晰,解析更简单。

2.6 结构化输出

Chat Completions 用 response_format: {type: "json_schema", json_schema: {...}}

Responses API 用 text.format: {type: "json_schema", schema: {...}},参数路径不同,功能等价。

2.7 流式输出

Chat Completions 的流式输出是 delta 格式:每个 chunk 包含 choices[0].delta.content

Responses API 的流式输出是 events 格式:每个事件有自己的 type,如 response.output_text.delta(文本增量)、response.reasoning_summary_text.delta(推理增量)、response.completed(完成)等。事件格式让客户端能区分"模型在思考"和"模型在输出答案"。

2.8 Zero Data Retention

Responses API 的 compaction 机制支持 ZDR 模式:OpenAI 存储的是加密后的摘要密钥,而不是对话原文。对于有数据合规要求的企业,这是 Chat Completions 无法提供的能力。

三、差异对比汇总

维度 Chat Completions Responses API
发布时间 2023 年 3 月 2025 年 3 月
状态管理 客户端维护完整历史 服务端维护,previous_response_id
Token 消耗增长 线性(每轮重发全文) 可控(服务端 compaction)
上下文窗口 受限于单次请求大小 compaction 后可远超原生窗口
工具调用 手动解析 tool_calls 原生支持,结构化 item
内置工具 code_interpreter, file_search, web_search
多模态 content 数组混合 独立 item,类型明确
流式格式 delta events(含 reasoning 事件)
ZDR 合规 不支持 支持
SDK 成熟度 极高,所有语言完善 较新,部分语言仍在更新
行业兼容性 事实标准,所有模型支持 仅 OpenAI 原生 + 少数平台兼容

四、业界主流模型支持情况

4.1 Chat Completions API 支持

Chat Completions 是事实标准,几乎所有大模型都原生支持或通过代理兼容。

国际厂商

厂商 代表模型 兼容方式 兼容性
OpenAI GPT-4o, GPT-4.1, o3, o4-mini 原生 /chat/completions 完全
Anthropic Claude 3.5, 4, 4.1 需 LiteLLM 等代理转换 代理后完全兼容
Google Gemini 2.0, 2.5 需 LiteLLM 等代理转换 代理后完全兼容
xAI Grok 3, 4 需代理转换 代理后兼容

国内厂商

厂商 代表模型 接口地址 兼容性
DeepSeek V3, R1 api.deepseek.com/v1 原生兼容,高级参数(logprobs 等)可能不支持
通义千问(百炼) Qwen3-Max, Qwen3-Plus, Qwen3-Coder dashscope.aliyuncs.com/compatible-mode/v1 原生兼容
智谱 GLM-4, GLM-4.5, GLM-4-Flash open.bigmodel.cn/api/paas/v4 原生兼容
豆包 Doubao-pro, Doubao-vision ark.cn-beijing.volces.com/api/v3 原生兼容
月之暗面 Kimi, Moonshot api.moonshot.cn/v1 原生兼容,长上下文能力突出
MiniMax MiniMax-Text-01 api.minimaxi.chat/v1 原生兼容
百度文心 ERNIE-4.0, ERNIE-3.5 qianfan.baidubce.com/v2 原生兼容
腾讯混元 Hunyuan 官方 API 原生兼容

聚合平台

平台 端点 覆盖模型
OpenRouter openrouter.ai/api/v1/chat/completions 400+ 模型,统一 Chat Completions 端点
LiteLLM 自部署代理 100+ 模型,统一 Chat Completions 端点
Ollama localhost:11434/v1/chat/completions 本地模型,兼容 Chat Completions

结论:Chat Completions 的生态覆盖是无死角级别的。无论你用哪个模型、哪个平台,基本都能通过这个接口调通。

4.2 Responses API 支持

Responses API 是 OpenAI 的新一代接口,其他厂商的跟进进度远不如 Chat Completions。

完整支持的厂商

厂商 支持模型 接口地址 功能覆盖
OpenAI GPT-4.1, GPT-5, o3, o4-mini api.openai.com/v1/responses 完整:compaction、内置工具、ZDR、reasoning、streaming
阿里云百炼(通义千问) Qwen3-Max, Qwen3-Plus, Qwen3-Flash, Qwen3-Coder 全系列 dashscope.aliyuncs.com/compatible-mode/v1/responses 高:previous_response_id(7 天有效)、reasoning.effort、streaming、内置 web_search / code_interpreter / web_extractor、Session 缓存(Header: x-dashscope-session-cache: enable,最小 1024 tokens,有效期 5 分钟)

通过代理部分兼容的

平台 兼容方式 限制
LiteLLM 协议转换,将 Responses 请求映射到 Chat Completions 丢失服务端 compaction、previous_response_id 状态管理;items 多类型会扁平化为 messages;ZDR 不可用。本质上是让 SDK 能跑,但高级特性全部退化
老张 API 声称支持 /v1/responses 第三方聚合服务,功能覆盖不透明,未验证完整功能

不支持 Responses API 的主流平台

  • DeepSeek 官方:只提供 /chat/completions,不提供 /v1/responses。通过 LiteLLM 代理后可使用部分能力,但服务端 compaction 不可用
  • OpenRouter:仅提供 /chat/completions 端点,不提供 /responses
  • 智谱 GLM 官方:不支持
  • 豆包官方:不支持
  • 月之暗面 Kimi 官方:不支持
  • MiniMax 官方:不支持
  • 百度文心官方:不支持
  • 腾讯混元官方:不支持

4.3 国内大模型 Responses API 支持总结

国内大模型厂商中,阿里云百炼(通义千问)是唯一官方支持 Responses API 的平台

百炼的兼容不是简单的端点映射,而是实现了 Responses API 的核心特性:

  • previous_response_id 跨请求状态关联(ID 有效期 7 天)
  • reasoning.effort 推理强度控制(none / minimal / low / medium / high)
  • 流式 events 输出
  • 内置 web_search、code_interpreter、web_extractor 工具
  • Session 缓存降低多轮对话成本

其他国内厂商(DeepSeek、智谱、豆包、Kimi、MiniMax、百度、腾讯)都不提供 Responses API 兼容端点。如果你需要通过 Responses API 的协议格式使用这些模型(比如让 OpenAI SDK 的 client.responses.create() 跑起来),只能用 LiteLLM 做协议转换,但会丢失服务端状态管理能力,compaction 和 previous_response_id 都将不可用。

五、对实际项目的影响

5.1 什么时候必须用 Responses API

以下场景必须使用 Responses API + OpenAI 或阿里云百炼:

  1. 服务端 compaction:对话轮次多(50 轮以上),需要服务端自动压缩历史对话,不消耗客户端 token 预算
  2. previous_response_id:不想每次调用都重传完整对话历史,需要服务端维护状态
  3. 内置工具:需要直接使用 code_interpreter、file_search、web_search,不想自己实现
  4. ZDR 合规:企业数据合规要求对话不能被服务商存储原文,需要零数据留存模式
  5. Reasoning 事件:需要在流式输出中区分"模型在思考"和"模型在输出答案"

OpenRouter、LiteLLM 无法满足以上任何一条。

5.2 什么时候 Chat Completions 足够

以下场景用 Chat Completions 完全没问题:

  1. 简单多轮对话:轮次不多,手动传 messages 数组的成本可控
  2. 自定义工具调用:自己实现 tool call 解析和执行循环,不需要内置工具
  3. 国产模型优先:使用 DeepSeek、Kimi、GLM 等,这些模型不支持 Responses API
  4. 聚合平台接入:通过 OpenRouter/LiteLLM 统一管理多模型,这些平台只暴露 Chat Completions

5.3 对 Codex CLI 的影响

Codex CLI 选择 Responses API 不是偏好,是必须。它的三个核心能力绑定在 Responses API 上:

  • Auto-compaction:对话达到 auto_compact_limit 后自动调用 /responses/compact 端点,服务端生成加密摘要
  • ZDR 模式:支持 Zero Data Retention,适合处理敏感代码
  • 内置代码解释器:通过 code_interpreter 工具在沙箱中执行代码,这是它"能运行代码"的基础之一

用 Chat Completions 无法实现同等级别的能力。

5.4 对 Hermes Agent 的影响

Hermes Agent 不受 Responses API 限制。它的 agent loop 在客户端实现,上下文管理、工具调用循环、状态压缩都由本地代码完成,不依赖服务端特性。

Hermes 可以在 Chat Completions 上构建完整的 agent 工作流。Responses API 对它来说是加分项(如果用 OpenAI 模型,可以享受服务端 compaction),不是必需品。

这是 Hermes 的一个重要优势:你可以在 DeepSeek V3 上跑完整的 agent 工作流,不需要等 DeepSeek 支持 Responses API。

六、迁移建议

如果你现在有基于 Chat Completions 的项目,是否需要迁移到 Responses API?

不需要迁移的情况

  • 项目只用国产模型
  • 工具调用逻辑不复杂,手动编排可接受
  • 已有的 OpenRouter/LiteLLM 聚合方案运行良好

建议迁移的情况

  • 大量使用 OpenAI 模型,且对话轮次多、token 成本高
  • 需要服务端 compaction 来控制长对话成本
  • 需要 ZDR 数据合规
  • 新项目,没有历史包袱,想直接走 OpenAI 主推的技术路线

如果要用 Responses API + 国产模型(比如通过百炼用通义千问),需要注意:百炼的 Responses API 端点路径是 /compatible-mode/v1/responses,不是标准的 /v1/responses。在 SDK 里配置 base_url 时需要指向正确路径。

七、结尾

Chat Completions 和 Responses API 短期内会共存。OpenAI 已明确表示不会废弃 Chat Completions,新功能会优先在 Responses API 落地。

对其他厂商来说,Responses API 跟进的动力不足——大多数开发者的核心需求是"能用"而不是"用最好的接口",Chat Completions 已经满足了这个需求。国内厂商中,阿里百炼做了兼容,其他厂商暂时没有跟进的信号。

实际选型时,建议根据模型来源决定:用 OpenAI 则优先考虑 Responses API;用国产模型则安心用 Chat Completions,生态支持更完善。


如果你觉得本文有用,请点赞,收藏,转发

你有什么问题,请留言,我来帮你解答。


← 返回博客列表