OpenAI 发布了新的 Responses API,简化了工具使用、代码执行和状态管理的工作流程,支持消息列表格式和 HTML 表单编码,并引入了三种内置工具:网络搜索、文件搜索和计算机使用代理。新的 API 比 Assistants API 更自然,后者将在 2026 年淘汰。Responses API 能管理服务器上的对话状态,解决了 Chat Completions API 需要手动维护对话记录的繁琐问题。
OpenAI 今天早上发布了一些新的 API 平台功能,标题是“构建代理的新工具”(他们把“agents代理”解释为“能代表用户独立完成任务的系统”)。
一个特别重要的变化是推出了新的 Responses API,这个 API 和他们过去几年提供的 Chat Completions API 有点不一样,而 Chat Completions API 已经被行业内很多人模仿,成了临时的标准。
在这篇指南里,他们解释了这些不同,并且保证:
- Chat Completions API 是构建 AI 应用的行业标准,我们打算一直支持这个 API。
- 我们推出 Responses API 是为了简化那些涉及工具使用、代码执行和状态管理的工作流程。
即将淘汰的 API
即将淘汰的API是Assistants API,它是 2023 年在 OpenAI DevDay 上首次发布的永久测试版。新的响应 API 可以有效地解决同样的问题,但效果更好,而助手将在“2026 年上半年”淘汰。
两者之间差异的最好例证是对GitHub 存储库openai-python 的这个巨大提交,它一次性更新了所有示例代码。
Responses API 的最重要功能(与旧版Assistants API 相同)是可以为您管理服务器上的对话状态。
Chat Completions API 的一个奇怪之处在于,您需要维护自己的当前对话记录,并在每次新提示时发回完整副本。最终,您需要调用类似下面这样的 API(来自他们的示例):
<pre class="displaycode"><code>json |
这些对话可能会变得很长,尤其是当涉及到图片等附件时,但真正的挑战是当你开始集成工具时:在使用工具的对话中,你需要保持完整的状态,并且插入一些消息来显示模型请求的工具的输出。处理这些并不简单。
新的 Responses API 仍然支持这种消息列表格式,但你也可以选择完全把这个交给 OpenAI 处理:你可以添加一个新的 "store": true 属性,然后在后续的消息中包含一个 "previous_response_id": response_id 的键来继续这个对话。
这比 Assistants API 感觉自然多了,Assistants API 要求你通过线程、消息和运行来实现同样的效果。
我们相信这个新的 API 原语会让我们更有效地增强 OpenAI 平台。
还有一点有趣的是:Responses API 现在除了支持 JSON,还支持 HTML 表单编码:
<pre class="displaycode"><code>bash |
我在一个很棒的 Twitter 线程中发现了这个,这个线程提供了 OpenAI 的 Atty Eleti 关于新 API 设计决策的背景信息。这里有一个 nitter 链接,给那些没有 Twitter 账号的人。
新的内置工具
今天可能更令人兴奋的变化是引入了默认default工具,你可以在使用新的 Responses API 时请求这些工具。一共有三个,都可以在 "tools": [...] 数组中指定。
- {"type": "web_search_preview"} -
和 ChatGPT 提供的搜索功能一样。文档没有说明使用的是哪个底层搜索引擎——最初以为是 Bing,但工具文档链接到了这个 OpenAI 爬虫概述页面,所以可能现在完全是自研的?网络搜索的价格在每千次查询 25 到 50 美元之间,具体取决于你使用的是 GPT-4o 还是 GPT-4o mini,以及你配置的“搜索上下文”大小。
- {"type": "file_search", "vector_store_ids": [...]}
提供了与最新版本的文件搜索向量存储的集成,主要用于 RAG(检索增强生成)。“使用费用为每千次查询 2.50 美元,文件存储费用为每天每 GB 0.10 美元,第一个 GB 免费”。
- {"type": "computer_use_preview", "display_width": 1024, "display_height": 768, "environment": "browser"}
这是最让我惊讶的:这是他们为 Operator 产品构建的计算机使用代理系统的工具访问权限。这个工具会很有趣。工具的文档中有一个关于提示注入风险的警告。不过仔细看下来,我觉得这可能更像Claude 的计算机使用功能,你需要自己运行沙盒环境,而不是把这部分复杂的任务交给他们。
为什么使用 Responses API?
Responses API 是我们最新的核心 API 和代理 API 原语,结合了 Chat Completions 的简单性和执行更多代理任务的能力。随着模型功能的发展,Responses API 是构建面向操作的应用程序的灵活基础,具有内置工具: