Assistants APIからResponses APIへ移行する実務手順|state・tool・file・streaming・rollback
終了済みのAssistants APIからResponses APIへ移る手順を、保存済み履歴、Prompt設定、tool、file、streaming、テスト、復旧に分けて整理。再利用Promptも2026-11-30に終了予定のため、旧endpointやPrompt IDに依存しない進め方を公式Docsで確認します。
公開 2026.08.27 / 更新 2026.09.26
Assistants APIからResponses APIへ移すときは、API名の置換ではなくstate、tool、file、streaming、テスト、rollbackを分けて確認します。2026-08-27時点では公式ページ間に提供状態の表現差があるため、API probeなしに完全削除済みとは断定しません。
- Assistant・Thread・Run・Run stepの対応
- state・tool・file・streamingの移行
- fixture・テスト・feature flag・rollback
- 公式ページの終了日と利用可能表現の差
- 認証済みprojectへのAPI probe結果の断定
- 実値のAPI keyや秘密情報
- ChatGPT画面とAPI projectの混同
- 全toolの互換性保証
この記事のポイント
- Assistants APIは2026-08-26に終了済み。公式移行ガイドのAssistant→Prompt等の対応は、保存した設定をResponses側へ移すための手がかりとして使う
- 再利用Promptとv1/prompts APIは2026-11-30に終了予定。Prompt IDを長期依存先にせず、prompt内容をapplication codeへ移す
- 会話state、tool、file / vector store、streamingイベント、エラー処理を別々の移行項目として棚卸しする
- Assistantsのmessage取得APIは使えない。移行対象の履歴はアプリ側などに保存済みのものから確認する
- 小さなgolden testとfeature flagを用意し、復旧計画は終了済みのAssistants endpointへ戻らない形にする
AssistantsからResponsesへ移すときの確認軸
| state | Assistant / Thread / RunのID、保持、削除、再実行をConversation / Response / Itemへ対応づける |
| tool・file | function、File Search、Code Interpreter、vector store、承認、結果itemを個別に照合する |
| streaming | event順序、切断、再接続、cancel、timeoutを状態機械としてfixtureで確認する |
| 切り替え | feature flag、少数対象、ログ、未処理ID保全、rollbackを準備してから移す |
先に結論:AssistantsからResponsesへは、fieldごとに移す
Assistants APIは2026-08-26に終了し、現在は利用できません。移行はclientのメソッド名を一括置換する作業ではなく、アプリ側に保存済みの会話履歴、prompt設定、tool call、fileやvector store、streamingイベント、非同期処理、テスト、ログを別々に棚卸しする作業です。終了したendpointを使った履歴取得や切り戻しを前提にせず、保存済みのデータと設定からResponses API側を組み立てます。
| 旧側の概念 | 公式移行ガイドの対応 | 実装で棚卸しするもの |
|---|---|---|
| Assistant | Prompt(移行ガイド上の対応) | 保存済みのinstructions・model・tool設定を回収する。再利用Prompt objectは2026-11-30終了予定のため、長期運用するprompt内容はapplication codeへ移す |
| Thread | Conversation | 会話ID、メッセージ順、保持期間、ユーザーとの紐付け |
| Run | Response | アプリ側の実行状態、入力、出力、エラー、完了条件、再試行 |
| Run step | Item | tool call、tool output、reasoning以外の表示可能な出力、監査ログ |
1. prompt設定:再利用Prompt objectへ長期依存しない
OpenAIの移行ガイドはAssistantからPromptへの対応を示していますが、Reusable Prompt objectもdeprecatedで、v1/prompts APIは2026-11-30にshutdown予定です。Prompt作成も2026-06-03からde-emphasizedされています。Prompt objectを短期の橋渡しに使う場合も終了日を管理し、長く運用するinstructionsやvariablesはapplication codeへ移して、review・test・deployment・versioningをアプリ側で行います。
- Assistantのinstructions、model、tool定義、変数をアプリの設定や自社exportから回収し、出所とversionを記録する
- 長期運用するprompt内容はapplication codeへ移し、review・test・deployment・versioningをアプリのreleaseと一緒に管理する
- Responses APIのリクエストでPrompt IDを参照している場合は、その依存箇所と置換期限を棚卸しする
2. state:ThreadのIDをConversationへ機械的に置換しない
最初に、ThreadやRunに相当する履歴をどこへ保存し、何を再実行時に復元するかを図にします。Assistants API終了後は、同APIのmessage取得呼び出しで履歴を取り出せません。移行ガイドが示すのはアプリケーションに保存済みのmessagesを使う方法です。新規会話をResponses / Conversations側で作る経路と、手元に保存済みの既存履歴を変換する経路を分け、履歴が存在すると思い込んだり、同じID形式だと決めつけたりしないでください。
- Thread ID、user ID、tenant、保持期限、削除依頼の扱いをConversation IDと別に対応表へ記録する
- Runのqueued / in_progress / completed / failedなど、現在の画面やDBが見る状態をResponseの状態へ対応づける
- 過去Threadの再生が必要なら、保存済みメッセージから検証用fixtureを作り、本番履歴を無確認で再送しない
3. tool:function callingと組み込みtoolの境界を分ける
Assistants側のtool定義をResponses側へ移すときは、tool名、引数schema、必須値、呼び出し結果、承認、再実行、失敗時の表示を一つずつ照合します。function calling、File Search、Code Interpreterなどの組み込み機能は、同じ名前や同じevent列がそのまま存在するとは限りません。公式移行ガイドと現行tool仕様で、入力・出力item、対応model、利用条件を確認し、未確認の互換性を記事や本番の前提にしないでください。
| 項目 | 移行前に保存する事実 | Responses側で確認すること |
|---|---|---|
| function tool | 名前、JSON schema、timeout、結果形式 | tool call / output item、schema validation、retry |
| File Search | file ID、vector store、検索範囲、引用表示 | 対象resource、検索結果item、保持と削除の仕様 |
| Code Interpreter | 入力file、生成file、実行時間、表示内容 | 対応tool、file入出力、実行状態、利用条件 |
| 承認 | 書き込み・外部送信を止める地点 | tool実行前の人間確認と拒否時の処理 |
4. file:file IDとデータ保持を別の移行項目にする
fileは、promptへ添付したか、検索用vector storeへ登録したか、toolが生成したかで役割が変わります。移行時は、元ファイルの保存場所、file ID、vector store ID、アクセス主体、保持期限、削除フロー、ユーザーへ返すdownload linkを対応表にします。ファイルを再登録すれば同じIDになる、全履歴を自動で移せる、という前提は置かず、fixtureの小さなファイルで取得・検索・生成・削除を確認します。
- 個人情報、API key、Cookie、秘密鍵、社内資料を移行テストへ混ぜず、匿名化したfixtureだけで確認する
- fileのアップロード、参照、引用、生成物の取得、期限切れ、削除を別々のテストケースにする
- 旧resourceと新resourceの二重課金・二重保持を避けるため、移行後のcleanup ownerと期限を決める
- 検索結果の内容をそのまま信頼せず、tool出力のschema、対象file、ユーザー表示を人間が確認する
5. streaming / async:Run eventをResponse eventへ写経しない
UIがRunの状態更新やdelta eventを前提にしている場合、Responsesのstreaming event、item追加、tool call、完了、エラーの順序とpayloadを実測します。名称が似ているeventを一対一で置き換えず、途中切断、重複、再接続、tool結果待ち、キャンセル、タイムアウトを含む状態機械としてテストしてください。公式ページに書かれていないevent順序を保証扱いにせず、SDK versionと現行Docsを固定して検証します。
| ケース | 画面・workerが見る結果 | 合格条件 |
|---|---|---|
| 通常stream | 最終テキストと完了状態 | 途中deltaの欠落・二重表示がなく、完了を一度だけ描画 |
| tool callあり | 承認、tool output、続きの生成 | 承認前にwriteや外部送信を実行せず、拒否も終了状態にする |
| 接続断 | 再接続または失敗表示 | 二重実行を避け、再開地点とユーザー案内を記録 |
| cancel / timeout | 停止済み表示と再試行入口 | 無限retryせず、課金・ログ・stateを照合 |
6. test:保存済み結果を基に業務要件を比較する
移行テストは、HTTPが成功したかだけでは不十分です。代表的なprompt、保存済み会話、tool呼び出し、file検索、stream切断、拒否、空出力、再試行をfixture化し、過去のgolden outputとResponses側の結果を比較します。Assistants APIは終了済みなので、稼働中の旧経路とのA/B比較や旧endpointへのprobeを前提にしません。Responsesが業務要件を満たすかは別に評価します。
- 入力、model、tool、file、temperature等の条件を固定し、出力の意味・schema・安全な拒否を比較する
- streamingと非streaming、同期とworker、途中失敗と再試行を同じ観点で記録する
- token、latency、retry、tool実行回数、ログ量、API料金は手元の実測として残す
- 成功率だけでなく、誤ったtool call、重複実行、ユーザーに見えない失敗、レビュー修正量を見る
- ResponsesのSDK version、公式Docsの確認日、過去出力との比較条件をテストレポートに書く
- アプリ内に移したprompt内容とversionを固定し、保存済みのgolden fixtureを使ってResponsesの結果を比較する
7. 復旧設計:終了済みのAssistants APIへ戻る前提を置かない
切り替えはfeature flagや小さな対象範囲から行い、Responses側を停止した場合にどこで処理を止め、ユーザーへ状態を伝えるかを先に決めます。Assistants APIは終了済みなので、旧endpointへ戻すrollbackは計画に含めません。異常時は保存済み履歴と未処理IDを保全し、二重のtool実行や課金を避けて、検証済みの現行処理または手動対応へ切り替えます。
| 段階 | 実施すること | 停止条件 |
|---|---|---|
| 準備 | 対応表、fixture、flag、ログ、owner、公式確認日を作る | state・tool・fileの対応先が未確定 |
| shadow / canary | 保存済みgolden fixtureとResponses出力を比較し、少数ユーザーへ段階展開する | schema差、重複tool call、料金・latency異常 |
| 切り替え | 新規会話をResponses側へ寄せ、手元に保存済みの旧履歴は別管理する | stream・retry・削除・監査ログが未確認 |
| 異常時 | Responses側の処理を止め、未処理IDと保存済み履歴を保全してユーザーへ状態を示す | 終了済みAssistants endpointへ再送して復旧しようとする |
既存の廃止一覧記事との役割分担
OpenAI API全体の廃止日・対象・移行先を横断して棚卸ししたい場合は、既存の「OpenAI API廃止予定チェックリスト」を参照します。このページはAssistantsからResponsesへ移す現場の対応表、event、file、テスト、復旧設計を主題にし、廃止予定の総合inventoryを重複させません。
Assistants APIからResponses APIへ移行するFAQ
現在、Assistants APIへ新しいリクエストを送れますか?
OpenAI Developersの現行移行ガイドとchangelogでは、2026-08-26にshutdownされ、現在は利用できないと案内されています。日本語Help Center FAQには古い予定表現が残りますが、旧endpointへprobeする必要はありません。アプリ側などに保存済みの履歴や設定があるかは、個別に確認してください。
移行先にAssistantから作ったPrompt objectを使い続けられますか?
長期利用の前提にはできません。OpenAIはreusable Promptをdeprecatedとし、v1/prompts APIを2026-11-30にshutdown予定です。AssistantからPromptへの対応は移行時の手がかりとして扱い、prompt内容をapplication codeへ移して、review・test・deployment・versioningを管理してください。
ThreadをConversationへコピーすれば移行完了ですか?
完了ではありません。Assistants API終了後は同APIのmessage取得呼び出しが使えないため、アプリや自社exportに保存済みの履歴があるかを確認します。保持・削除、Run相当のアプリ状態、tool、file、streaming、ユーザー表示、監査ログも別々に照合してください。
Assistantsのtool定義はそのまま使えますか?
そのままとは扱いません。function schema、組み込みtool、file / vector store、tool output、承認、eventの対応を現行Docsと小さなfixtureで確認します。未確認の互換性を本番の前提にしないでください。
Assistants API向けの旧コードをすぐ削除してよいですか?
終了済みendpointへのrollbackは前提にできません。必要な履歴・設定と監査用記録を保存済みデータから確認し、呼び出し元が残っていないことを調べてから旧コードを整理します。Responses側を止める境界、未処理IDの保全、検証済みの代替処理、ユーザー案内も準備してください。
ChatGPTの画面を使っているだけでも移行が必要ですか?
必ずしもそうではありません。対象はAssistants APIを呼ぶproject、SDK、外部サービスです。通常のChatGPT利用とAPI projectを分け、どのendpoint・credential・SDKを使っているかを確認してください。