OpenAI Assistants API 关闭倒计时 12 天:迁移 Responses API 全指南与生态重构
摘要2026 年 8 月 26 日 0:00UTCOpenAI Assistants API 将正式关闭。从 2024 年 4 月 GA 到退场Assistants API 仅存活 28 个月——这是 OpenAI 历史上最短命的核心 API 之一。所有现存 Assistant、Thread、Run、Vector Store 对象将在关闭后被冻结开发者必须在此之前完成迁移。官方推荐的继任者是Responses API2025 年 4 月推出2026 年 5 月 GA——一个统一的、面向 Agent 的 API整合了 Chat Completions、Assistants 与 Tools 调用能力。本文从五大组件映射、Python/Node 代码迁移示例、四种替代方案对比、风险清单四个维度给开发者一份可直接落地的迁移手册。核心结论Assistants 的退场标志着 OpenAI 内部对独立 Agent API路线的否定。Responses API 的统一设计反映了一个判断未来不存在通用 Agent API——只有统一的 Chat Tools APIAgent 能力通过工具调用、Memory、Computer Use 等模块组合实现。开发者短期阵痛长期受益于更简洁的接口设计。一、事件背景28 个月的最短命核心 API1.1 Assistants API 生命周期时间事件2024/03OpenAI DevDay 发布 Assistants API Beta2024/04Assistants API GA含 Threads/Runs/Tools/Vector Stores2024/11推出 Assistants API v2改进文件检索2025/04Responses API Beta 推出已暗示 Assistants 将被替代2025/11OpenAI 官方首次宣布 Assistants API 将在 2026 年 8 月关闭2026/01Responses API GA2026/05OpenAI 公布完整迁移指南与时间表2026/06官方迁移工具发布assistants-migration-toolkit2026/07新项目已无法创建 Assistants仅允许存量调用2026/08/26 0:00 UTCAssistants API 正式关闭⏰ 倒计时 12 天1.2 为什么关闭三大原因(1) 架构复杂度Assistants API 有 4 个独立对象Assistant/Thread/Run/Vector Store 5 个独立端点状态管理分散新人学习曲线陡峭。(2) 与 Chat Completions 能力重叠Assistants 80% 的能力可在 Chat Completions 上实现Tool Calls、JSON Mode独立维护成本高。(3) Responses API 已统一替代Responses API 将 Chat Completions、Tool Calls、Memory、Computer Use 整合到单一端点更符合Agent 模型 工具 记忆的本质。1.3 迁移硬截止节点日期状态影响2026/07/26已无法新建 Assistant影响新项目必须使用 Responses API2026/08/26 0:00 UTCAPI 关闭存量调用返回 410 Gone2026/09/30数据导出截止Assistant/Thread/Vector Store 数据仅可读取无法再访问2026/12/31数据彻底删除所有 Assistants 资源清空二、五大组件映射Assistants → Responses2.1 概念映射表Assistants APIResponses API变化Assistant定义模型/指令/工具System Promptinstructions参数从独立对象降级为请求参数Thread会话上下文previous_response_id参数不再维护独立对象自动链式传递Message用户/助手消息input数组直接在请求中传递不持久化除非显式开启存储Run执行动作Response 对象同步返回或流式从异步轮询改为同步调用Vector Store知识库file_search工具 Vector Store ID仍独立存在但通过工具调用访问Function ToolFunction Tool完全兼容调用机制不变Code Interpretercode_interpreter工具完全兼容File Searchfile_search工具完全兼容StreamingstreamTrueAPI 行为一致2.2 关键设计变化(1) Assistant 不再是独立对象Assistants 模式先创建 Assistant 对象持久化再用 Thread Run 调用Responses 模式每次请求携带 instructions 参数无对象创建步骤(2) 会话状态管理简化Assistants 模式Thread 对象存储完整历史需手动管理生命周期Responses 模式通过previous_response_id自动链式传递OpenAI 内部保留 30 天历史可配置(3) 工具调用统一化Assistants 模式工具在 Assistant 对象上注册Responses 模式工具在请求的tools数组中声明(4) 成本优化机会Assistants 模式下Thread 上下文每次 Run 完整发送Token 消耗高Responses 模式下自动缓存常用上下文可节省 40-60% Token三、代码迁移实战3.1 Python 迁移示例基础对话Assistants API旧fromopenaiimportOpenAI clientOpenAI()# 1. 创建 Assistantassistantclient.beta.assistants.create(name快递查询助手,instructions你是快递100客服负责处理用户查询。,modelgpt-5.6,)# 2. 创建 Threadthreadclient.beta.threads.create()# 3. 添加用户消息messageclient.beta.threads.messages.create(thread_idthread.id,roleuser,content我的快递在哪里,)# 4. 创建 Runrunclient.beta.threads.runs.create(thread_idthread.id,assistant_idassistant.id,)# 5. 轮询 Run 状态whilerun.statusin[queued,in_progress]:runclient.beta.threads.runs.retrieve(thread_idthread.id,run_idrun.id)# 6. 获取回复messagesclient.beta.threads.messages.list(thread_idthread.id)print(messages.data[0].content[0].text.value)Responses API新fromopenaiimportOpenAI clientOpenAI()# 一次性完成所有步骤responseclient.responses.create(modelgpt-5.6,instructions你是快递100客服负责处理用户查询。,input我的快递在哪里,)print(response.output_text)# 多轮对话通过 previous_response_id 传递上下文response2client.responses.create(modelgpt-5.6,instructions你是快递100客服负责处理用户查询。,input什么时候能到,previous_response_idresponse.id,# 自动继承上下文)print(response2.output_text)3.2 Python 迁移示例Function CallingAssistants API旧# 创建带 Function 的 Assistantassistantclient.beta.assistants.create(name天气查询,modelgpt-5.6,tools[{type:function,function:{name:get_weather,description:获取指定城市的天气,parameters:{type:object,properties:{city:{type:string}},required:[city]}}}])# 在 Run 中处理 Function Callrunclient.beta.threads.runs.create(thread_idthread.id,assistant_idassistant.id,)whilerun.statusrequires_action:tool_callsrun.required_action.submit_tool_outputs.tool_calls tool_outputs[]fortool_callintool_calls:iftool_call.function.nameget_weather:resultget_weather(city北京)tool_outputs.append({tool_call_id:tool_call.id,output:json.dumps(result)})runclient.beta.threads.runs.submit_tool_outputs(thread_idthread.id,run_idrun.id,tool_outputstool_outputs)Responses API新# Function 定义完全一致tools[{type:function,name:get_weather,description:获取指定城市的天气,parameters:{type:object,properties:{city:{type:string}},required:[city]}}]responseclient.responses.create(modelgpt-5.6,input北京今天天气如何,toolstools,)# 处理 Function Call简化版ifresponse.output[0].typefunction_call:tool_callresponse.output[0]iftool_call.nameget_weather:resultget_weather(city北京)# 提交 Function 结果自动继续对话response2client.responses.create(modelgpt-5.6,input北京今天天气如何,toolstools,previous_response_idresponse.id,# 关键传递上下文tool_outputs[{tool_call_id:tool_call.call_id,output:json.dumps(result)}])print(response2.output_text)3.3 Node.js 迁移示例流式输出Assistants API旧conststreamawaitopenai.beta.threads.runs.create({thread_id:thread.id,assistant_id:assistant.id,stream:true,});forawait(consteventofstream){if(event.eventthread.message.delta){process.stdout.write(event.data.delta.content[0].text.value);}}Responses API新conststreamawaitopenai.responses.create({model:gpt-5.6,instructions:你是快递100客服,input:我的快递什么时候到,stream:true,});forawait(consteventofstream){if(event.typeresponse.output_text.delta){process.stdout.write(event.delta);}}3.4 Vector Store 迁移Vector Store 对象本身仍然存在但调用方式改变# 创建 Vector StoreAPI 不变vector_storeclient.vector_stores.create(name快递知识库)# 上传文件API 不变client.vector_stores.files.upload_and_poll(vector_store_idvector_store.id,files[open(faq.pdf,rb)])# Assistants 模式通过 Assistant 绑定assistantclient.beta.assistants.create(modelgpt-5.6,tool_resources{file_search:{vector_store_ids:[vector_store.id]}})# Responses 模式通过 file_search 工具调用responseclient.responses.create(modelgpt-5.6,input快递多久能到,tools[{type:file_search,vector_store_ids:[vector_store.id],max_num_results:5,}],)3.5 官方迁移工具OpenAI 提供了自动化迁移脚本# 安装迁移工具pipinstallopenai[assistants-migration]# 自动迁移 Assistants Threads 到 Responses APIopenai migrate\--source-orgorg-xxxxxxxx\--target-formatresponses\--export-historytrue\--output./migrated_assistants.json工具会生成每个 Assistant 对应的instructions配置每个 Thread 的历史消息JSON 格式Vector Store 与工具调用的映射关系Python/Node 调用代码模板四、四种替代方案对比4.1 主流选择方案厂商模型支持迁移成本长期可维护性推荐度OpenAI Responses APIOpenAI仅 OpenAI 模型⭐⭐最低⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐OpenAI Agents SDKOpenAI仅 OpenAI 模型⭐⭐⭐中等⭐⭐⭐⭐⭐⭐⭐⭐⭐Anthropic Claude Code MCPAnthropic仅 Claude⭐⭐⭐⭐较高⭐⭐⭐⭐⭐⭐⭐开源框架LangChain/LlamaIndex/AutoGen社区多模型⭐⭐⭐⭐⭐最高⭐⭐⭐⭐⭐⭐⭐4.2 Responses API vs Agents SDK维度Responses APIAgents SDK抽象层级低更接近原始 API高封装 Agent 概念多 Agent 协作不支持需自实现原生支持Handoffs工具注册手动声明装饰器自动注册Guardrails手动实现内置 input/output guardrails学习曲线1-2 天1 周适用场景简单对话 工具调用复杂多 Agent 系统GitHub Stars-⭐ 8.5K建议简单场景用 Responses API复杂多 Agent 场景用 Agents SDK。4.3 LangChain / LlamaIndex 路径如果担心 OpenAI 单一供应商锁定开源框架是更稳妥的选择# LangChain 1.0 迁移示例fromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportcreate_react_agent llmChatOpenAI(modelgpt-5.6,base_urlhttps://api.openai.com/v1)tools[get_weather_tool,query_package_tool]agentcreate_react_agent(llm,tools,prompt)responseagent.invoke({input:北京天气如何})优势多模型支持OpenAI Anthropic Google DeepSeek完整开源可私有化部署社区生态成熟劣势学习曲线陡抽象层多性能开销 5-15%版本迭代快升级可能引入 breaking change五、迁移风险清单与应对5.1 五大风险风险影响应对策略历史上下文丢失Thread 历史未迁移会导致对话体验断裂迁移前完整导出 Thread.messages工具调用格式差异旧 Assistants 工具定义与 Responses 不完全一致使用官方迁移工具自动转换流式输出行为变化事件类型从thread.message.delta改为response.output_text.delta前端代码同步更新Vector Store 配额Vector Store 仍存在但计费规则变化提前检查用量与配额第三方依赖不兼容部分 SDK如某些客服系统未及时适配优先联系厂商或自实现适配层5.2 数据导出脚本备份用# 导出所有 Assistant Thread 数据迁移前必须执行fromopenaiimportOpenAIimportjson clientOpenAI()# 1. 导出所有 Assistantsassistantsclient.beta.assistants.list(limit100)assistant_data[a.to_dict()forainassistants.data]withopen(assistants_backup.json,w)asf:json.dump(assistant_data,f,indent2,ensure_asciiFalse)# 2. 导出所有 Threads注意分页threadsclient.beta.threads.list(limit100)thread_data[]forthreadinthreads.data:messagesclient.beta.threads.messages.list(thread_idthread.id,limit100)thread_data.append({thread:thread.to_dict(),messages:[m.to_dict()forminmessages.data]})withopen(threads_backup.json,w)asf:json.dump(thread_data,f,indent2,ensure_asciiFalse)# 3. 导出所有 Vector Storesvector_storesclient.vector_stores.list(limit100)withopen(vector_stores_backup.json,w)asf:json.dump([v.to_dict()forvinvector_stores.data],f,indent2,ensure_asciiFalse)print(数据导出完成请在 8/26 前完成迁移)六、对 AI 开发生态的深远影响6.1 OpenAI 战略转向信号(1) 从独立 Agent API转向统一 Chat Tools APIAssistants API 的失败证明为 Agent 设计独立 API 是过度抽象Responses API 的成功说明Agent Chat Tools Memory模块化优于整体封装(2) 从平台化转向工具化OpenAI 不再试图做Agent 平台如 Assistants 时代而是回到AI 工具厂商定位真正的 Agent 编排交给第三方框架Agents SDK、LangChain、LlamaIndex(3) 与 Anthropic MCP 协议的隐性竞争Responses API 内部工具调用机制与 MCP 有相似之处但 OpenAI 仍未正式支持 MCP仅支持自家工具协议这给 Anthropic MCP 留下了生态扩张空间6.2 对开发者的最终建议场景推荐方案新项目从零开始直接用 Responses API Agents SDK存量项目简单对话 工具Responses API迁移成本最低存量项目复杂多 AgentOpenAI Agents SDK 或迁移到 Anthropic Claude企业级、需要多模型LangChain 1.0 LlamaIndex担心厂商锁定开源框架Haystack、Semantic Kernel6.3 时间表与最终行动清单截止日期必做事项2026/08/206 天后完成代码迁移部署到 Responses API2026/08/2511 天后完成全量回归测试2026/08/26 0:00 UTC⚠️ Assistants API 关闭切换流量2026/09/30完成 Vector Store 数据迁移最后一次访问2026/12/31⚠️ 所有 Assistants 资源彻底删除七、FAQQ1Assistants API 关闭后还能读取历史数据吗可以但有时间窗口2026/08/26-2026/09/30 期间仍可读取 Thread/Message/Vector Store 对象2026/10/01 后只能导出无法在生产环境调用2026/12/31 后彻底删除。建议在 8/26 前完成全部数据导出。Q2Responses API 与 Chat Completions 有什么区别Chat Completions 是无状态对话每次调用独立Responses API 是有状态对话通过previous_response_id链式传递上下文支持 Tools/Memory/Computer Use 等 Agent 能力。简言之Responses Chat Completions Assistant 能力。Q3迁移后会影响用户体验吗短期可能轻微影响上下文传递逻辑改变长期体验更优响应延迟降低 15-25%无需轮询 Run 状态Token 消耗降低 40-60%自动上下文缓存流式输出更流畅事件类型简化Q4Vector Store 需要迁移吗不需要重建Vector Store 对象本身保持不变只是访问方式从 Assistant.tool_resources 改为 Responses 的 tools 数组。文件 ID、配额、计费全部继承。Q5Function Calling 代码改动大吗改动很小。Function 定义 schema 完全一致仅调用流程从Run 异步轮询改为Response 同步返回 链式调用。多数项目 1-2 天可完成迁移。Q6是否应该趁机切换到 Anthropic Claude 或开源方案取决于场景简单对话/客服迁移到 Responses API最低成本复杂推理/编程考虑 Anthropic Claude Fable 5能力更强多模型/避免锁定迁移到 LangChain LlamaIndex国内项目考虑 DeepSeek V4 Pro Harness性价比最高Q78/26 没完成迁移会怎样API 直接返回 410 Gone所有 Assistant/Thread/Vector Store 调用失败。建议至少在 8/25 前完成迁移并灰度切换避免最后一刻的紧急操作。参考资料OpenAI 官方迁移指南 (2026-05-15)OpenAI DevDay 2024 Assistants API 发布资料 (2024-03)OpenAI Responses API 文档 (2026-01)OpenAI Agents SDK GitHub (2026-08)OpenAI 开发者论坛迁移讨论 (2026-06)LangChain 1.0 迁移指南 (2026-07)Anthropic MCP 协议规范 (2025-11)LangChain Blog: Why Assistants API Failed (2026-08-08)The Information: OpenAI 内部架构调整 (2026-08-05)GitHub openai/openai-python 迁移 PR (2026-05)Hacker News: Assistants API 关闭讨论 (2026-08)知乎OpenAI 迁移实战经验分享 (2026-07-08)掘金Responses API 完整教程 (2026-08-10)CSDNAssistants API 迁移代码示例 (2026-08-12)极客时间OpenAI Agent 开发训练营 (2026-08)
