每个人都在模仿的 OpenAI API 并不是官方推荐的那一个

大多数本地模型工具(如 Ollama、vLLM 和 LM Studio)都标有“OpenAI-compatible”(OpenAI 兼容)的徽章。

但问题在于,大多数人认为这指的是同一种东西。实际上,存在两种不同的格式。一种是行业标准,另一种才是 OpenAI 真正希望你使用的。

以下是详细解析。

旧标准:Chat Completions API

这是每个人都在模仿的格式。它使用包含 developeruserassistant 等角色的消息列表。

它有两个主要问题:

  • 它是无状态的 (stateless)。你必须每次都重新发送整个对话历史。
  • 它很臃肿。对于复杂的智能体 (agents) 而言,发送巨大的对话记录会变得缓慢且昂贵。

新标准:Responses API

OpenAI 在 2025 年 3 月推出了这一接口。它是为智能体 (agents) 设计的,而不仅仅是简单的聊天机器人。

为什么它更好:

  • 它是带状态的 (stateful)。服务器会记住对话内容,你不需要重新发送所有信息。
  • 它能更好地处理推理。它将模型的“思维链” (chain of thought) 保留在服务器端。
  • 它使用了更简洁的结构。它将指令与实际的用户输入分离开来。

混淆之处

当一个工具声称自己是“OpenAI-compatible”时,几乎总是意味着它支持旧的 Chat Completions 格式。

整个行业围绕这个旧格式构建了一个庞大的生态系统。因为它无处不在,所以成为了默认标准。这带来了一个风险:所有人都在构建一家公司私有 API 的克隆版。

解决方案:Open Responses

为了解决这个问题,OpenAI 与 Hugging Face 和 Vercel 等合作伙伴共同推出了 Open Responses 规范。

开发人员不再需要猜测 API 的工作原理,现在有了一个文档齐全、可测试的标准。这让你能够以极小的代码改动在 OpenAI 和本地模型之间进行切换。

你应该怎么做:

  • 如果你正在构建新项目,请使用 Responses API
  • 如果你正在维护旧应用,Chat Completions 将会得到长期的支持。
  • 务必检查你的工具是否支持新的带状态 (stateful) 格式,以节省成本并降低延迟。

了解其中的区别可以防止在 Token 计数和消息结构方面出现错误。

Source: https://dev.to/rlnorthcutt/the-openai-api-everyone-copied-isnt-the-one-openai-recommends-28o8

Optional learning community: https://t.me/GyaanSetuAi