OpenAI Assistants API将在8月26日关闭:迁移Responses API最后阶段完整清单

文章摘要

OpenAI已经明确,Assistants API将在2026年8月26日停止服务。距离关闭日期不足一个月时,仍依赖Assistant、Thread、Run和Run Step对象的团队不能只把接口地址替换为Responses API。新架构使用Prompt或应用代码管理配置,以Conversation承载输入与输出Item,以Response取代Run,并要求应用更明确地管理工具循环、状态裁剪、重试和结构化输出。本文给出资产盘点、对象映射、数据迁移、工具调用、流式响应、双轨验证和切换回滚清单。

一、哪些系统需要立刻检查

如果代码中出现以下对象,应进入迁移范围:

Assistant
Thread
Message
Run
Run Step
required_action
submit_tool_outputs

常见接口:

/v1/assistants
/v1/threads
/v1/threads/{id}/runs
/v1/threads/{id}/messages

还要检查:

  • 使用Assistants的低代码平台;
  • 第三方SDK封装;
  • 内部API网关;
  • 定时任务;
  • 后台批处理;
  • 已经很久没有维护的实验项目。

不要只搜索主仓库,历史脚本和服务配置也可能继续调用旧API。

二、对象关系如何变化

核心映射:

Assistants API Responses API方向 说明
Assistant Prompt或应用配置 模型、指令、工具配置
Thread Conversation 由Item组成的会话流
Message Input/Output Item 不再局限于普通消息
Run Response 一次模型执行
Run Step Item 消息、工具调用、工具结果等
submit_tool_outputs 显式工具循环 应用负责继续提交结果

新模型更接近:

输入Items
→ Response
→ 输出Items

而不是:

创建Run
→ 轮询Run状态
→ 读取Run Steps

三、不要直接照搬Assistant对象

旧Assistant可能包含:

name
instructions
model
tools
metadata
response_format

迁移时要决定哪些内容放到:

  • 应用代码;
  • Prompt版本;
  • 数据库配置;
  • 环境变量;
  • Tool Registry;
  • 策略中心。

不建议继续把全部配置绑定在一个远程持久对象中。

推荐拆分:

Prompt行为
→ Prompt Registry

工具定义
→ Tool Registry

模型与参数
→ Model Routing Policy

权限
→ Application Policy

四、Prompt版本怎么迁移

旧系统可能在Assistant中直接保存instructions。

迁移前导出:

assistant_id
instructions
model
tools
response_format
created_at
updated_at

形成版本:

customer-service:v12
code-review:v7
sales-proposal:v4

每次调用记录:

prompt_key
prompt_version
model
schema_version
tool_set_version

不要只保留“当前Prompt”,否则无法还原历史行为。

五、Thread数据怎么处理

并非所有历史Thread都必须迁移为在线Conversation。

可以分三类:

活跃会话

最近仍在使用,需要继续对话。

迁移方式:

导出最近消息
→ 生成摘要
→ 创建Conversation
→ 写入必要上下文

历史只读会话

用于页面展示和审计,不需要继续调用模型。

迁移到自己的Chat History数据库即可。

无价值实验会话

按保留政策删除或归档。

不要把几年历史全部塞进新Conversation,否则成本和延迟都会失控。

六、消息要迁移为Item思维

Responses API中的Item可能是:

  • 用户消息;
  • 助手消息;
  • 工具调用;
  • 工具结果;
  • 推理相关输出;
  • 文件和多模态内容。

因此,自己的数据库也建议从单一Message表升级为事件结构:

{
  "itemId": "I1001",
  "conversationId": "C9001",
  "itemType": "TOOL_CALL",
  "role": "assistant",
  "payload": {},
  "createdAt": "2026-08-02T08:30:00Z"
}

七、工具循环需要重新验证

旧Assistants链路:

Run进入requires_action
→ 应用执行工具
→ submit_tool_outputs
→ Run继续

Responses架构中,应用应更清晰地处理:

模型返回工具调用Item
→ 校验工具名称与参数
→ 权限判断
→ 审批
→ 执行工具
→ 提交工具结果
→ 继续Response

必须重新验证:

  • 多个工具并行;
  • 工具失败;
  • 工具超时;
  • 重复工具调用;
  • 幂等;
  • 人工审批;
  • 工具结果过大;
  • 用户取消。

八、工具调用不能只看名称相同

旧Assistant工具定义和新工具定义即使名称相同,Schema也可能不同。

建立版本:

query-order:v3
create-ticket:v5
refund-order:v2

兼容检查:

字段新增是否可选
字段删除是否影响旧Prompt
枚举是否变化
类型是否变化
默认值是否变化

高风险工具迁移时应先只读运行或影子执行。

九、File Search和向量数据怎么迁移

如果旧系统使用:

  • File Search;
  • Vector Store;
  • 文件附件;
  • Assistant级资源;

需要建立清单:

assistant_id
vector_store_id
file_id
file_name
checksum
owner
retention

核对:

  • 新架构如何引用文件;
  • 文件权限是否按会话隔离;
  • 旧文件是否仍需要;
  • 是否存在重复文件;
  • 是否需要重新解析;
  • 删除要求是否同步执行。

不要假设“模型配置迁移后,文件自然会跟过去”。

十、结构化输出迁移

旧代码可能使用:

response_format

Responses API的结构化输出定义位置和调用形态与旧接口不同。

迁移时:

保存旧JSON Schema
→ 建立Schema版本
→ 在新API配置结构化输出
→ 本地再次校验
→ 对比新旧成功率

需要覆盖:

  • 必填字段;
  • 顶层数组;
  • 枚举;
  • 日期;
  • 额外字段;
  • 嵌套对象;
  • 失败重试。

十一、流式接口不能只验证“能显示文字”

需要验证事件语义:

response.created
output_item.added
content_part.added
tool_call
response.completed
response.failed

客户端状态机应正确处理:

  • 文本增量;
  • 工具调用增量;
  • 连接断开;
  • 用户取消;
  • 最终Usage;
  • 错误事件;
  • 重连和重复事件。

不要把所有事件都当成普通Token字符串。

十二、previous_response_id和Conversation怎么选

Responses API可以通过响应关联或Conversation管理上下文。

previous_response_id

适合:

  • 简单连续调用;
  • 轻量对话;
  • 不需要复杂会话管理。

Conversation

适合:

  • 长期会话;
  • 多类Item;
  • 工具轨迹;
  • 跨服务;
  • 需要会话对象治理。

企业项目仍应独立保存完整Chat History和业务状态,不要把Provider会话对象当唯一数据库。

十三、迁移测试矩阵

至少覆盖:

场景 必测内容
普通问答 文本一致性
多轮会话 上下文连续性
File Search 引用和权限
单工具 参数和结果
多工具 顺序、并行、失败
结构化输出 Schema成功率
流式 事件、取消、错误
长任务 超时和恢复
安全 注入、越权、泄露
成本 Token和调用数量

十四、新旧系统双轨验证

推荐影子模式:

真实请求
→ 旧Assistants API正常服务
→ 同步复制给Responses API
→ 新结果不返回用户
→ 对比结果和轨迹

对比:

任务成功率
结构化输出成功率
工具调用准确率
平均步骤数
P95延迟
Token
成本
安全拦截

不要只比较最终文本相似度。

十五、灰度切换

内部员工
→ 测试租户
→ 1%
→ 10%
→ 30%
→ 50%
→ 100%

每阶段设置退出条件:

错误率高于阈值
工具异常增加
成本超预算
安全事件

一旦触发,自动回退旧链路。

十六、8月执行时间表

8月2日至7日

  • 搜索所有旧API调用;
  • 导出Assistant配置;
  • 分类Thread;
  • 建立迁移负责人。

8月8日至14日

  • 完成Responses适配层;
  • 迁移工具循环;
  • 迁移结构化输出;
  • 建立影子流量。

8月15日至20日

  • 完成File Search和会话迁移;
  • 压测;
  • 安全测试;
  • 灰度生产流量。

8月21日至25日

  • 全量切换;
  • 保留紧急回滚;
  • 停止创建新Assistant;
  • 导出最终历史数据。

8月26日

  • 确认无旧API流量;
  • 关闭旧凭证和定时任务;
  • 完成迁移审计。

十七、最容易遗漏的事项

□ 后台脚本仍调用旧API
□ 第三方平台内部依赖Assistants
□ 旧Thread没有导出
□ 工具Schema发生变化
□ File Search权限丢失
□ 流式事件状态机不完整
□ Usage统计口径变化
□ 结构化输出没有回归
□ 新系统没有回滚开关
□ 团队仍在创建新Assistant

总结

Assistants API迁移的本质不是对象名称替换,而是把更多编排责任明确交还给应用:

Prompt版本
+Conversation与Item
+工具循环
+历史裁剪
+结构化输出
+重试和评测

距离8月26日关闭日期不足一个月,生产系统应立即进入双轨验证和灰度切换阶段,而不是继续等待最后一周。

延伸阅读

想持续跟踪大模型、AI Agent、RAG、MCP与开发者生态的最新变化,欢迎访问 智元界

https://www.zyentor.com/

智元界将持续分享AI热点解读、技术实战、工具推荐与企业落地案例。