AIREITER

OpenAI Assistants API 關閉倒數:Responses API 遷移指南

最近更新: 2026-08-23 00:24:55

距離 OpenAI 在 2026 年 8 月 26 日關閉服務已不遠,最危險的誤判,就是以為這次遷移只是改個 API 名稱。OpenAI 早在 2025 年 8 月 26 日的棄用公告中,提前整整一年宣布 Assistants API sunset;接替者則是 Responses API。從物件名稱看起來,對應關係相當直觀,但底層編排邏輯並非如此。即使照著官方指南實作,仍有開發團隊在正式上線後出現故障。以下拆解哪些功能會消失、表面對應關係隱藏了什麼,以及該如何依你剩下的時間安排遷移。

2026 年 8 月 26 日之後:哪些 API 會失效,哪些資源還在

截止日過後,所有 Assistants 端點系列都會回傳錯誤。受影響範圍包括 /v1/assistants、/v1/threads、thread messages、runs 與 run steps,也包含仍在傳送 OpenAI-Beta: assistants=v2 header 的任何流程。Assistant 設定與 thread 歷史紀錄也將無法再透過 API 存取。

不過,與 Assistants 整合相關的所有東西並不會一併消失:

2026 年 8 月 26 日失效仍可使用
/v1/assistants CRUD 端點Vector stores 與已上傳檔案,可透過 Responses file search 繼續使用
/v1/threads、thread messagesChat 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設定移至 Dashboard 建立、可版本化管理的物件
ThreadsConversations儲存的是通用 items,包括 messages、tool calls 與 tool outputs,而非只有訊息
RunsResponses原本 create-run-poll-retrieve 的流程,收斂成一次 responses.create 呼叫
Run stepsItems涵蓋 messages、function calls 與 results 的 union type

這種流程收斂可從官方範例看得很清楚:在 gpt-4.1 上完成的 run,回報 34 個 prompt tokens 與 130 個 completion tokens;而在 gpt-5.5 上完成的 response,則回報 17 個 input tokens 與 150 個 output tokens。工作負載型態相近,但欄位名稱已不同。

這正是第一個容易被忽略的差異。若計費儀表板或 payload parser 綁定了舊版 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 只能在 Dashboard 建立,無法透過 API 建立;因此,凡是會依客戶、workspace 或文件集動態建立一個 Assistant 的系統,都會受到影響。官方指南本身也提醒,若要在長期整合中採用 prompt objects,必須先確認 prompt 的棄用時程,因為可重用的 prompt objects 也有自己的淘汰風險。更耐久的做法,是將 instructions、tool schemas 與 model 選擇保留在自己的 source control 中,並隨每次請求傳送。至於 thread 歷史資料,OpenAI 的立場只有一句話:「We will not provide an automated tool for migrating Threads to Conversations.」

三項內建工具該怎麼搬到 Responses

每一種 Assistants 工具在 Responses 中都有明確落點,但也都意味著更多工作要回到你的應用程式處理:

Assistants 工具在 Responses 的對應方式現在由應用程式負責的部分
File searchVector stores 會保留;每次請求時在工具定義中提供 vector_store_ids在每次呼叫前解析正確的 store IDs
Code interpreter以 type: "auto" 設定 ContainerContainer lifecycle
Functions移除巢狀 function key;name、description、parameters 上移一層Tool loop:執行呼叫、以對應的 call_id 回傳結果,並決定是否繼續迴圈

對多租戶應用來說,file search 那一列才是最安靜、卻最重要的架構變化。過去,每個 tenant 對應一個 vector store,可以在設定 Assistant 時綁定;現在,收到 session 後,必須先找出該 tenant 對應的正確 store IDs,才能送出請求。

已遷移團隊踩過的幾個坑

OpenAI 的說法是 Responses 已達到功能對等。不過,以下遷移經驗顯示,物件層級的對等,底下其實仍是一輪實質重構。一名多租戶 chatbot SaaS 經營者在 r/aiagents 分享了為期兩週的遷移過程;即使仔細閱讀官方指南,問題仍然出現:

我不得不把每個 optional field 都改成 ["type", "null"],感覺像是在繞過型別系統。— u/aidenclarke_12

嚴格的 tool schemas 要求 optional properties 同時宣告為 nullable,並且仍列在 required 中。因此 schema 會變得更大,而所有原本假設「缺少欄位就代表不存在」的 handler,也都必須重新檢查。同一位開發者還點出了更深層的改變所在:

vector store 的串接方式改變,才是真正的架構轉折。— u/aidenclarke_12

第二個不易察覺的破壞點是串流。Assistants 的 run streaming 不能直接套用到 Responses,必須改寫為處理具型別的 server-sent events,例如 response.created、response.output_text.delta、response.completed,以及 response.function_call_arguments.delta / .done。這些事件有明確的完成事件,也採用了新的 tool-call event 格式;事件名稱可在遷移報導整理中查到。SSE proxy 與 client handler 都得重寫,包含重新連線邏輯。

第三個問題不在 API 本身,而是周邊生態系還沒跟上:

Responses API 推出已經很久了,但還是有不少 framework 和 SDK 不支援它。— u/zhlmmc

若你的技術堆疊建立在仍假設 Threads/Runs 模型的 agent framework 之上,也就是 u/zhlmmc 遇到的情況,除了自己的 glue code 外,還要為這一層預留遷移時間。

多輪對話狀態怎麼留:串接、Conversations 或自行重播

Responses 有三種保留多輪上下文的方法,但它們不能任意互換:

策略適合情境注意事項
previous_response_id最簡單的串接方式,改動最少先前上下文仍會計入 billable input
Conversations API最接近 Threads 的替代方案;在伺服器端保存歷史Backfill 得自行實作,沒有 vendor 工具
手動重播,store: falseZDR 與嚴格資料保存要求所有 state 都由你管理;reasoning items 必須一併帶入後續請求

若要轉換舊有 thread 歷史,OpenAI 建議的流程如下:

  1. 依遞增順序列出 thread 的 messages。
  2. 將每則 user text message 轉為 input_text。
  3. 將每則 assistant text message 轉為 output_text。
  4. 將 image URL content 轉為 input_image,保留 image_url 與 detail。
  5. 使用轉換後的 items 建立 Conversation。

角色對應一旦出錯,會出現很具體的問題:模型可能把自己過去的回答當成使用者剛輸入的新指令。Stored responses 預設 TTL 為 30 天,除非傳入 store: false;而根據追蹤此事的遷移報導,截至 2026 年 7 月下旬,conversations 不受 response TTL 限制,且尚未另行公布保存期限。如果你的資料揭露承諾了刪除時間窗,這項細節就很關鍵。

遷移後,token 帳單會怎麼變

有兩項計費事實特別重要。

第一,previous_response_id 提供的是便利性,不是折扣。OpenAI 的Responses 遷移指南明確指出,response chain 中先前輸入的 tokens 仍會以 input tokens 計費。因此,若不做裁剪,長時間進行的對話成本會線性成長。

第二,cached input 比未快取 input 便宜得多。依 2026 年 7 月列出的 GPT-5.x 各級距價格,成本大約是 input rate 的十分之一;此外,根據彙整報導所引用的 OpenAI 內部測試,Responses 的 cache utilization 比 Chat Completions 高 40–80%。在自己的儀表板驗證前,應將這個利用率區間視為供應商提供的數字。真正重要的對等檢查,是切換前後你自己每個 session 的 token 數量。

若你也打算趁這次遷移重新評估 GPT-5.x 工作負載的價格,GPT-5.6 pricing breakdown整理了每 token 的計價方式;而 GPT-5.6 API page 這類 OpenAI-compatible endpoints,則能執行相同的 Responses-style 工作負載,方便直接比較。

依剩餘時間安排的遷移計畫

剩 1–6 天。先備份:以 limit=100 列出 assistants 與 vector stores、拉回檔案,並用 model_dump() 序列化 SDK objects。多篇優先備份的遷移文章都指出一項硬限制:沒有 list-threads endpoint,因此只能匯出你自己的應用程式原本就已保存的 thread IDs。接著用 feature flag 切換:新 session 立即走 Responses,舊 threads 則只在使用者重新開啟時才懶惰式 backfill。

至少還有一週。先挑一條低風險流程做端到端轉換,再處理其他部分。重建 tool loop,確認每個 function result 都帶有對應的 call_id;以依 event type 分支的方式取代舊的 stream handling;接著與 Assistants 基準比較行為、延遲、token 使用量與錯誤率,再逐步擴大流量。

已過截止日。端點會回傳錯誤,assistant configurations 也會從 API 端消失;此時只能根據應用程式資料庫與備份重建。不過,vector stores 與檔案仍可透過 file search 存取。

尚未消失的取捨是:你用伺服器代管的生命週期,包括 polling、truncation 與 tool loop,換來單次呼叫的模型,以及更容易觀察、測試的編排流程。一位同時使用過兩者的開發者如此形容:

Responses API 是很理想的折衷點:它處理了繁重工作,但仍保有足夠彈性,讓你管理自己的功能。— u/landongarrison

OpenAI Assistants API 關閉常見問題

Chat Completions API 也會一起停止服務嗎?

不會。Chat Completions 不在 2026 年 8 月 26 日的關閉範圍內。OpenAI 的建議是按流程逐一遷移至 Responses,而非面對強制遷移截止日。

OpenAI 會自動遷移我既有的 threads 嗎?

不會。官方遷移指南寫得很明白:「We will not provide an automated tool for migrating Threads to Conversations.」Backfill 必須由你撰寫應用程式程式碼,依照上述 item-conversion 流程完成。

2026 年 8 月 26 日後還能繼續使用 Assistants API 嗎?

不能。該日期之後,Assistants、threads、messages、runs 與 run steps 都會回傳錯誤,包括 assistants=v2 工作流程。請在截止日前匯出所有需要保留的資料。

Stored responses 會過期嗎?

會。除非傳入 store: false,stored responses 預設保存 30 天;根據 2026 年 7 月的報導,conversations 不受這項 TTL 限制。

我一定得把 assistant configuration 移到 Prompts 嗎?

不必;若你的 assistants 是動態產生,更不建議這麼做。Prompts 只能在 Dashboard 建立,且官方指南本身也提醒要檢視可重用 prompt objects 的棄用風險。把 instructions 與 tool schemas 放在 source control 中,並在每次請求時傳入,才是更耐久的模式。