AIREITER

OpenAI Assistants API 下线:Responses API 迁移指南

最后更新: 2026-08-23 00:24:26

距离 OpenAI 在 2026 年 8 月 26 日关闭 Assistants API 已经不远,最危险的误区就是把这次迁移当成简单的改名。OpenAI 早在 2025 年 8 月 26 日的Assistants API 下线说明和弃用公告中提前整整一年发出了通知,替代方案是 Responses API。对象名称看起来可以一一对应,但底层编排方式并没有这么简单;甚至有开发者完全照着官方指南迁移,最终仍然把故障带进了生产环境。下面就来看看哪些功能会消失、这些映射掩盖了哪些变化,以及在剩余时间有限的情况下应该怎么做。

2026 年 8 月 26 日之后,哪些会失效,哪些还能用

截止日期之后,Assistants 的所有端点系列都会返回错误,包括 /v1/assistants、/v1/threads、线程消息、runs 和 run steps,以及仍然发送 OpenAI-Beta: assistants=v2 请求头的调用。通过 API 访问 Assistant 配置和线程历史也会随之中断。

不过,和 Assistants 集成相关的资源并不会全部一起消失:

2026 年 8 月 26 日下线仍可使用
/v1/assistants CRUD 端点Vector stores 和已上传文件,可通过 Responses 的文件搜索复用
/v1/threads 及线程消息Chat Completions API(不在本次下线范围内)
Runs 和 run stepsResponses API 和 Conversations API
OpenAI-Beta: assistants=v2 工作流Realtime API

OpenAI 自己的弃用追踪页面也将 Responses 和 Conversations 列为指定替代方案:

OpenAI 弃用页面显示 Assistants API 将于 2026 年 8 月 26 日下线

四组对象映射,以及会改变架构的两个细节

OpenAI 的迁移指南将 Assistants 中的四个核心概念对应到了 Responses 体系:

Assistants API替代方案实际变化
AssistantsPrompts配置转移到由控制台创建、支持版本管理的对象中
ThreadsConversations存储的是通用 item,包括消息、工具调用和工具输出,而不只是消息
RunsResponses创建 run、轮询、获取结果的流程合并为一次 responses.create 调用
Run stepsItems一种联合类型,覆盖消息、函数调用和调用结果

流程合并在官方示例中体现得很直观:使用 gpt-4.1 的已完成 run 报告 34 个 prompt tokens 和 130 个 completion tokens,而使用 gpt-5.5 的已完成 response 报告 17 个 input tokens 和 150 个 output tokens。工作负载形态相近,字段名称却已经不同。

第一个容易被忽略的细节就是这些字段改名。凡是依赖旧 usage 字段的计费看板和请求解析器,都可能在不报错的情况下悄悄失效:

Assistants 字段Responses 字段
usage.prompt_tokensusage.input_tokens
usage.completion_tokensusage.output_tokens
max_completion_tokens / max_prompt_tokensmax_output_tokens
truncation_strategytruncation
object: "thread.run"object: "response"

第二个细节则是架构层面的:Prompts 只能在控制台创建,不能通过 API 创建。这会直接影响那些按客户、工作区或文档集合动态创建 Assistant 的系统。官方指南也建议,在长期集成中采用 prompt 对象之前,先确认其弃用时间表,因为可复用的 prompt 对象本身也存在下线风险。更稳妥的做法是把指令、工具 Schema 和模型选择保存在自己的代码仓库中,并在每次请求时传入。至于线程历史,OpenAI 的表述很直接:“我们不会提供将 Threads 迁移到 Conversations 的自动化工具。”

三个内置工具如何迁移

Assistants 的每个内置工具在 Responses 中都有对应落点,但不少原本由平台负责的工作会转移到你的应用:

Assistants 工具在 Responses 中的实现现在由应用负责的部分
文件搜索Vector stores 会保留;在每次请求的工具定义中传入 vector_store_ids在每次调用前解析正确的 store ID
代码解释器使用 type: "auto" 配置容器容器生命周期管理
Functions移除嵌套的 function 键;name、description 和 parameters 上移一层工具循环:执行调用、携带匹配的 call_id 返回结果,并决定是否继续循环

对于多租户应用来说,文件搜索这一行带来的变化最容易被低估。过去,每个租户对应的 vector store 通常在 Assistant 对象创建时绑定;现在,收到会话请求后,应用必须先识别所属租户,再解析出正确的 store ID,随后才能发起请求。

已经完成迁移的团队遇到了什么问题

OpenAI 给出的理由是 Responses 已经实现了功能对等。但下面这些迁移经历说明,对等主要体现在对象层面,底层仍然需要进行真正的重构。一位多租户聊天机器人 SaaS 的开发者在 r/aiagents 分享了为期两周的迁移过程;即使认真研读官方指南,问题仍然出现:

我不得不把每个可选字段都改造成 ["type", "null"],这感觉更像是在绕过类型系统。——u/aidenclarke_12

严格工具 Schema 要求可选属性声明为可空,同时仍然必须放进 required 数组。因此 Schema 会变得更复杂,所有默认“缺失就代表不存在”的处理逻辑也都需要重新检查。这位开发者还指出了更深层的变化:

真正的架构变化在于 vector store 的接入方式。——u/aidenclarke_12

流式传输是第二个容易无声破坏的部分。Assistants 的 run 流式处理不能直接套用到 Responses,必须改写为基于类型化服务器推送事件的实现,例如 response.created、response.output_text.delta、response.completed,以及 response.function_call_arguments.delta / .done。新的工具调用事件结构和明确的完成事件都需要单独处理,相关事件名称可以参考这篇迁移报道。SSE 代理和客户端处理器都要重写,重连逻辑也不能遗漏。

第三个问题来自生态适配速度,而不是 API 本身:

Responses API 已经发布很久了,但仍然有不少框架和 SDK 不支持它。——u/zhlmmc

如果你的技术栈依赖某个仍然假设 Threads/Runs 模型存在的智能体框架,也就是 u/zhlmmc 遇到的那类兼容性问题,那么除了修改自己的胶水代码,还要为框架这一层预留时间。

状态管理怎么选:链式调用、Conversations 还是手动重放

在 Responses 中维持多轮上下文主要有三种方式,但它们并不能互相替换:

策略适合场景需要注意
previous_response_id最简单的链式调用,改动最少之前的上下文仍会计入可计费输入
Conversations API最接近 Threads 的方案,由服务端保存历史历史回填需要自行实现,没有厂商工具
手动重放,store: falseZDR 和严格数据保留要求所有状态由你负责;推理 item 也必须继续传递

对于历史记录,OpenAI 建议按以下顺序转换旧线程:

  1. 按升序列出线程中的消息。
  2. 将每条用户文本消息转换为 input_text。
  3. 将每条助手文本消息转换为 output_text。
  4. 将图片 URL 内容转换为 input_image,同时保留 image_url 和 detail。
  5. 使用转换后的 items 创建 Conversation。

角色映射出错会带来一个很具体的问题:模型会把自己过去的回答当成新的用户指令来理解。除非传入 store: false,否则存储的 response 默认 TTL 为 30 天;截至 2026 年 7 月下旬,conversation 不受这一 response TTL 约束,OpenAI 也没有单独公布其保留时长,相关迁移报道对此有所记录。如果你的隐私说明承诺了明确的删除窗口,这一点尤其重要。

迁移会如何影响 Token 账单

这里有两个计费事实需要记住。

首先,previous_response_id 带来的是便利,而不是折扣。OpenAI 的Responses 迁移指南明确指出,response 链中之前的输入 tokens 仍会按照输入 tokens 计费。因此,如果不主动裁剪上下文,长对话的成本会线性增长。

其次,缓存输入的价格远低于未缓存输入:按照 2026 年 7 月的价格表,GPT-5.x 各档位的缓存输入价格大约是未缓存输入价格的十分之一;在 OpenAI 报告的内部测试中,Responses 的缓存利用率也比 Chat Completions 高 40–80%,汇总报道对此进行了整理。不过,在自己的监控面板验证之前,最好把这个利用率区间视为厂商数据。真正应该对比的是切换前后每个会话的实际 token 数。

如果你正好想借迁移机会重新评估 GPT-5.x 工作负载的定价,可以参考GPT-5.6 定价解析了解每 token 的计算方式;兼容 OpenAI 的端点,例如GPT-5.6 API 页面,也可以运行相同的 Responses 风格工作负载,方便直接比较。

按剩余时间制定迁移计划

还剩 1–6 天。先备份:使用 limit=100 列出 assistants 和 vector stores,拉取文件,并用 model_dump() 序列化 SDK 对象。一些强调先备份的迁移指南指出了一个硬限制:API 没有 list-threads 端点,因此你只能导出应用自己保存过 ID 的线程。随后通过功能开关切换:新会话立即走 Responses,旧线程则等用户重新打开时再按需回填。

还剩一周或更久。先挑一个低风险流程,完整迁移并跑通,再处理其他部分。重建工具循环,确认每个函数结果都带有匹配的 call_id;用基于事件类型的分支逻辑替换原有流式处理;最后将行为、延迟、token 使用量和错误率与 Assistants 基线进行对比,确认无误后再扩大流量。

已经超过截止日期。相关端点会返回错误,Assistant 配置也会从 API 一侧消失。届时只能依靠应用数据库和备份中的数据重建;vector stores 和文件仍可通过文件搜索访问。

这次迁移留下的核心取舍很明确:你不再依赖服务端管理轮询、截断和工具循环的完整生命周期,而是换成一次调用、但编排过程完全可见且可测试的模型。一位同时在两种 API 上完成过上线的开发者这样概括:

Responses API 恰好处在两者之间:它负责最繁重的工作,同时又保留了足够的灵活性,让你管理自己的功能。——u/landongarrison

OpenAI Assistants API 下线常见问题

Chat Completions API 也会下线吗?

不会。Chat Completions 不在 2026 年 8 月 26 日的下线范围内,OpenAI 的建议是将其按流程逐步迁移到 Responses,而不是要求在某个强制期限前一次性完成。

OpenAI 会自动迁移现有线程吗?

不会。官方迁移指南明确写道:“我们不会提供将 Threads 迁移到 Conversations 的自动化工具。”历史回填需要由应用自行编写代码,并按照上面的 item 转换流程完成。

2026 年 8 月 26 日之后还能继续使用 Assistants API 吗?

不能。Assistants、threads、messages、runs 和 run steps 在该日期之后都会返回错误,使用 assistants=v2 的工作流也不例外。请在截止日期前导出所有需要保留的数据。

存储的 responses 会过期吗?

会。除非传入 store: false,否则存储的 responses 默认保留 30 天;根据 2026 年 7 月的相关报道,conversations 不受这一 TTL 限制。

必须把 Assistant 配置迁移到 Prompts 吗?

不必;对于动态生成的 assistants,更不建议这么做。Prompts 只能在控制台创建,官方指南也提示需要关注可复用 prompt 对象的弃用情况。更持久的做法是把指令和工具 Schema 放进代码仓库,并在每次请求时传入。