Search the alley

記事を検索

2文字以上でタイトル・カテゴリ・タグを検索できます。

Assistants APIからResponses APIへ移行する実務手順|state・tool・file・streaming・rollback

Assistants APIからResponses APIへ移行するときの実務を、state、tool、file、streaming、テスト、rollbackの単位で整理します。公式ページの終了日と利用可能表現の差も分けて確認します。

公開 2026.08.27 / 更新 2026.08.27

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の互換性保証

この記事のポイント

  • OpenAI公式移行ガイドのAssistant→Prompt、Thread→Conversation、Run→Response、Run step→Itemという対応を起点にする
  • 会話state、tool、file / vector store、streamingイベント、エラー処理を別々の移行項目として棚卸しする
  • 公式ページのshutdown日とHelp Centerの利用可能表現に差があるため、API probeなしに完全削除済みとは断定しない
  • 小さなgolden test、feature flag、旧経路の読み取り保持、rollbackを用意してから切り替える

AssistantsからResponsesへ移すときの確認軸

stateAssistant / Thread / RunのID、保持、削除、再実行をConversation / Response / Itemへ対応づける
tool・filefunction、File Search、Code Interpreter、vector store、承認、結果itemを個別に照合する
streamingevent順序、切断、再接続、cancel、timeoutを状態機械としてfixtureで確認する
切り替えfeature flag、少数対象、ログ、未処理ID保全、rollbackを準備してから移す

先に結論:AssistantsからResponsesへは、fieldごとに移す

Assistants APIをResponses APIへ移行する作業は、clientのメソッド名を一括置換する作業ではありません。会話の状態、入力と出力の保存方法、tool call、fileやvector store、streamingイベント、非同期処理、テスト、ログ、切り戻しを別の境界として棚卸しします。最初に公式移行ガイドの対応表を読み、現在のコードがどのオブジェクトとイベントを前提にしているかを記録してください。

旧側の概念公式移行ガイドの対応実装で棚卸しするもの
AssistantPromptDashboardでのPrompt作成、Prompt ID、exported spec、instructions、model、tool定義、version
ThreadConversation会話ID、メッセージ順、保持期間、ユーザーとの紐付け
RunResponseアプリ側の実行状態、入力、出力、エラー、完了条件、再試行
Run stepItemtool call、tool output、reasoning以外の表示可能な出力、監査ログ

1. state:ThreadのIDをConversationへ機械的に置換しない

最初に、ThreadやRunをどこへ保存し、どの時点でユーザーへ見せ、再実行時に何を復元しているかを図にします。現行の公式移行ページには既存ThreadをConversationsへ自動移行するtoolの案内が見当たらないため、非提供を一般断定せず、自分のprojectで移行手段を確認します。新規会話をResponses / Conversations側で作る経路と、既存履歴を参照専用で保持する経路を分け、履歴を黙って捨てたり、同じID形式だと決めつけたりしないでください。

  • DashboardでPromptを作成し、Prompt ID、exported spec、instructions、model、temperature等の設定とversionを残す
  • Thread ID、user ID、tenant、保持期限、削除依頼の扱いをConversation IDと別に対応表へ記録する
  • Runのqueued / in_progress / completed / failedなど、現在の画面やDBが見る状態をResponseの状態へ対応づける
  • 過去Threadの再生が必要なら、保存済みメッセージから検証用fixtureを作り、本番履歴を無確認で再送しない

2. 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 Searchfile ID、vector store、検索範囲、引用表示対象resource、検索結果item、保持と削除の仕様
Code Interpreter入力file、生成file、実行時間、表示内容対応tool、file入出力、実行状態、利用条件
承認書き込み・外部送信を止める地点tool実行前の人間確認と拒否時の処理

3. 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、ユーザー表示を人間が確認する

4. 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を照合

5. test:品質比較と提供状態確認を分ける

移行テストは、HTTPが成功したかだけでは不十分です。代表的なprompt、長い会話、tool呼び出し、file検索、stream切断、拒否、空出力、再試行をfixture化し、旧経路と新経路の差を比較します。Responses側が利用できることと、業務要件を満たすことも別の判定です。API probeをしていない段階では、この記事の公式文言と自分のprojectで確認した状態を混同しません。

  • 入力、model、tool、file、temperature等の条件を固定し、出力の意味・schema・安全な拒否を比較する
  • streamingと非streaming、同期とworker、途中失敗と再試行を同じ観点で記録する
  • token、latency、retry、tool実行回数、ログ量、API料金は手元の実測として残す
  • 成功率だけでなく、誤ったtool call、重複実行、ユーザーに見えない失敗、レビュー修正量を見る
  • API status、管理画面、SDK version、公式Docsの確認日をテストレポートに書く
  • Prompt IDとexported specを固定し、旧経路と新経路のA/B結果を同じfixtureで比較する

6. rollback:旧経路を消す前に、戻せる境界を作る

切り替えはfeature flagや小さな対象範囲から始め、旧Assistants経路の読み取り・診断・停止手順を先に残します。新経路で異常が出たら、履歴を再送して二重のtool実行や課金を起こすのではなく、処理を止めて状態を確認します。旧APIの提供可否は変わり得るため、rollbackとは「いつでも旧endpointが動く」という保証ではなく、未処理データを保全し、ユーザーへ案内し、別の処理へ切り替える計画です。

段階実施すること停止条件
準備対応表、fixture、flag、ログ、owner、公式確認日を作るstate・tool・fileの対応先が未確定
shadow / canaryread-onlyや少数ユーザーで結果を比較するschema差、重複tool call、料金・latency異常
切り替え新規会話をResponses側へ寄せ、旧履歴は別表示にするstream・retry・削除・監査ログが未確認
異常時flagを戻し、未処理IDを保全し、ユーザーへ状態を示す旧経路が使えると仮定して無限retryする

既存の廃止一覧記事との役割分担

OpenAI API全体の廃止日・対象・移行先を横断して棚卸ししたい場合は、既存の「OpenAI API廃止予定チェックリスト」を参照します。このページはAssistantsからResponsesへ移す現場の対応表、event、file、テスト、切り戻しを主題にし、廃止予定の総合inventoryを重複させません。

Assistants APIからResponses APIへ移行するFAQ

2026-08-27現在、Assistants APIは完全に削除済みですか?

この記事では断定しません。公式migrationページは2026-08-26のshutdown予定を示しますが、日本語Help Centerには利用可能な間の既存Assistantに関する表現があります。認証済みprojectへのAPI probe、管理画面、実際のerrorを確認して、自分の環境の状態を確定してください。

ThreadをConversationへコピーすれば移行完了ですか?

完了ではありません。会話履歴、保持・削除、Run相当のアプリ状態、tool、file、streaming、ユーザー表示、監査ログを別々に照合します。現行の公式ページに自動移行toolの案内が見当たらないことを非提供の断定には使わず、自分のprojectで利用可能な移行手段を確認してください。

Assistantsのtool定義はそのまま使えますか?

そのままとは扱いません。function schema、組み込みtool、file / vector store、tool output、承認、eventの対応を現行Docsと小さなfixtureで確認します。未確認の互換性を本番の前提にしないでください。

旧APIをすぐ削除してよいですか?

先にログと履歴を保全し、feature flag、未処理IDの扱い、ユーザー案内、停止・切り戻しを準備します。rollbackは旧endpointが永遠に使える保証ではなく、二重実行やデータ消失を避けるための運用計画です。

ChatGPTの画面を使っているだけでも移行が必要ですか?

必ずしもそうではありません。対象はAssistants APIを呼ぶproject、SDK、外部サービスです。通常のChatGPT利用とAPI projectを分け、どのendpoint・credential・SDKを使っているかを確認してください。