OpenAI Responses API でステートフルエージェントを構築する:実践ガイド
要点
- Responses API は OpenAI が推奨するすべての新プロジェクト向けの API プリミティブであり、Assistants API は 2026年8月26日に廃止されました — 移行ウィンドウは閉じています;Chat Completions は引き続きサポートされますが、新しいエージェント機能が最初に実装される場所ではありません。
- OpenAI の内部評価では、Responses API を通じて GPT-6 Astra などの推論モデルを使用した場合、SWE-bench で3%の向上、Chat Completions と比較して40–80%のキャッシュ利用率改善を示しています — エージェントループは単なる便利さではなく、出力品質を測定可能な形で向上させます。
- リモート MCP サーバーは Responses API のファーストクラスのツールタイプです —
server_urlとserver_labelで任意の MCP サーバーに接続すると、モデルが同じリクエスト内でそのツールを発見し呼び出します。カスタムオーケストレーションは不要です。 - GPT-6 Astra の不正監視モニターは、未承認の動作を検出すると API タスクを即座に停止します — 再開パスはありません;ワークフローは耐久性のある状態から復旧可能でなければならず、これが本番採用において最も重要なアーキテクチャ上の制約です。
- ステートフルモードはステートレス Chat Completions より約2倍遅いと複数の開発者報告があります —
previous_response_idの便利さにはレイテンシのコストが伴い、レイテンシに敏感なユーザー向けフローで重要になります。
OpenAI の Responses API は、すべての新開発向けに推奨される API プリミティブであり、Assistants API は 2026年8月26日に正式に廃止されました。Chat Completions は引き続きサポートされますが、Responses API は新しいエージェント機能 — 組み込みツール、ステートフルな会話、リモート MCP、バックグラウンドモード、ターン中ステアリング — が最初に実装される場所です。GPT-6 Astra 上で本番エージェントを構築するチームにとって、もはや移行するかどうかではなく、API の状態モデル、レイテンシ特性、Astra のランタイムモニターが課すガバナンス制約をどのようにアーキテクチャに組み込むかが問題です。本ガイドは、重要な5つの機能、採用を決定する3つの決定、およびプロバイダー間でエージェントの移植性を維持するアーキテクチャパターンを整理します。
Responses API が変更するもの
Chat Completions API はステートレスです:毎回のリクエストで全会話履歴を送信し、API は単一のメッセージを返します。Responses API は、エージェントの構築方法に影響する3つの構造的変更を導入します。
メッセージの代わりに Item。 Chat Completions は choices 配列を返し、各要素に message が含まれます。Responses API は output Item 配列を返し、各 Item は型付きユニオン — message、function_call、function_call_output、推論サマリー、ツール呼び出し — です。これは装飾ではありません:ツール呼び出し、推論、テキストがレスポンス内のファーストクラスオブジェクトであり、メッセージに貼り付けられたフィールドではないことを意味します。previous_response_id でレスポンスをチェーンする際、API はすべての Item タイプ — 暗号化推論を含む — をターン間で保持し、これが手動のコンテキストリプレイなしでマルチターンのエージェントワークフローを機能させるものです。
1リクエスト内のエージェントループ。 Responses API はエージェントループとして設計されています:モデルは単一の API 呼び出し内で複数のツール — web_search、file_search、computer_use、code_interpreter、image_generation、リモート MCP サーバー、カスタム関数 — を呼び出し、停止条件に達するまで反復できます。Chat Completions では、このループを自分で実装します:モデルを呼び出し、ツール呼び出しを解析し、実行し、結果を追加し、再度呼び出す。Responses API はループをサーバー側で実行します。OpenAI の内部評価は、Responses API を通じて推論モデルを使用した場合、同じプロンプトとセットアップで SWE-bench で3%の向上、40–80%のキャッシュ利用率改善 を示しています — サーバー側ループは手動ループが複製できないキャッシュヒットの恩恵を受けます。
previous_response_id によるステートフルコンテキスト。 毎回のリクエストで全履歴を送信する代わりに、前のレスポンスの ID と新しいユーザー入力を渡します。API は推論 Item を含むコンテキストをサーバー側で再構築します。レスポンスはデフォルトで30日間保存されます;conversation に添付されたレスポンスは TTL なしで Item を永続化します。store: false でゼロデータ保持ワークフローのためにストレージを無効化できますが、その場合、推論コンテキストをターン間で保持するために完全な Item 履歴 — 暗号化推論 Item を含む — を手動でリプレイする必要があります。
重要な5つの機能
Responses API の機能は5つのアーキテクチャ決定にマッピングされ、それぞれに具体的なトレードオフがあります:
1. previous_response_id:ステートフルチェーン
最もシンプルなステートフルパターンは ID でレスポンスをチェーンします:
from openai import OpenAI
client = OpenAI()
first = client.responses.create(
model="gpt-6-astra",
input="What is the capital of France?",
store=True,
)
second = client.responses.create(
model="gpt-6-astra",
previous_response_id=first.id,
input="And its population?",
store=True,
)2回目の呼び出しは最初の質問や回答を再送しません。API は保存されたレスポンスから完全なコンテキストを再構築し、モデルが実行した推論を含みます。これは会話型エージェント、研究アシスタント、ユーザーのフォローアップが前のターンに依存するワークフローのパターンです。
トレードオフはレイテンシです。OpenAI コミュニティフォーラムと Microsoft Q&Aでの複数の開発者報告は、ステートフルパスがステートレス Chat Completions より約2倍遅いことを示しています — 典型的なケースで1秒対0.5秒、負荷下では最大9倍遅い(2.9秒対0.3秒)。数分間実行するバックグラウンド研究エージェントには無関係です。500ms 未満で応答する必要のあるユーザー向けチャットでは、レイテンシコストが手動コンテキスト管理付き Chat Completions に留まる正当性になるかもしれません。
2. リモート MCP サーバーを組み込みツールとして
Responses API はリモート MCP サーバーをファーストクラスのツールタイプとしてサポートします。URL でサーバーを登録すると、モデルがエージェントループ内でツールを発見し呼び出します:
response = client.responses.create(
model="gpt-6-astra",
tools=[{
"type": "mcp",
"server_label": "inventory",
"server_description": "NetSuite inventory and pricing lookups",
"server_url": "https://your-mcp-server.example.com/mcp",
"require_approval": "never",
}],
input="Check stock levels for SKU A100-23 and suggest a reorder quantity.",
)require_approval フィールドは、モデルがサーバーのツールを呼び出す前に人間の承認を必要とするかを制御します。本番デプロイメントでは、MCP ツールフィルタリングオプション — allowed_tools で特定のツール名をホワイトリスト化、ツールごとのカスタム承認ポリシー — が、モデルが明示的な承認なしに破壊的操作を呼び出すのを防ぐガバナンスレイヤーです。
これは IdeaBosque の統合パターンに最も関連する機能です。NetSuite、HubSpot、BigCommerce API をラップするカスタム MCP モジュールは Responses API 呼び出しでリモート MCP サーバーとして登録でき、モデルは web_search や code_interpreter と同じ方法で使用します。セマンティックレイヤー — 型付きスキーマ、監査ログ、レート制限処理 — は MCP モジュール内にあり、プロンプト内ではありません。Responses API はセマンティックレイヤーの問題を解決しません;MCP モジュールを自然な統合ポイントにします。そのパターンのより深い扱いは、MCP Module Code Standard を参照してください。
3. 長時間実行タスクのバックグラウンドモード
バックグラウンドモードはモデル呼び出しをクライアント接続から切り離します。API はリクエストを受け入れ、即座にレスポンス ID を返し、モデル処理を非同期で実行します。ステータスをポーリングするか、結果が到着したらストリーミングします:
resp = client.responses.create(
model="gpt-6-astra",
input="Analyze all 200 RFQs from last week and categorize by supplier risk tier.",
background=True,
)
while resp.status in {"queued", "in_progress"}:
sleep(2)
resp = client.responses.retrieve(resp.id)
print(resp.output_text)長時間ホライゾンのエージェント — 研究統合、バッチドキュメント分析、マルチステップ調達ワークフロー — において、バックグラウンドモードはネットワーク切断とクライアントタイムアウトを生き残るパターンです。6分かかるバックグラウンドレスポンスはライブ HTTP 接続に依存しません;クライアントが切断しても処理は継続し、最後のシーケンス番号でストリーミングレジュームを使って再接続します。
運用上の課題は、バックグラウンドモードがジョブキューではないことです。ある分析が述べているように:API はモデル呼び出しを実行しますが、アプリケーションは依然としてジョブ状態を所有します — UI に何を表示するか、ウェブフックを2回処理するのをどう避けるか、もはや関係のない作業をいつキャンセルするか。本番では、バックグラウンドレスポンスの周囲に耐久性のあるジョブシステムが必要であり、レスポンス ID だけでは不十分です。これは Long-running Agent Patterns で説明されているのと同じパターンです:エージェントランタイム、而非モデル API、が信頼性レイヤーです。
4. ゼロデータ保持ワークフローの暗号化推論
store: false の場合、API はレスポンスを永続化しませんが、出力に暗号化推論 Item を返します。これらの Item を次のリクエストの入力に渡すことで、OpenAI のサーバーに何も保存せずにターン間で推論コンテキストを保持します。これはデータ保持が禁止された規制環境のパターンです — EU AI Act 高リスクシステム、HIPAA 下の医療ワークフロー、ITAR 下の国防ワークフロー。
トレードオフは、あなたが状態ストアになることです。各ターンで完全な Item 配列 — 不透明な暗号化推論 blob を含む — をシリアライズ、保存、リプレイする必要があります。暗号化推論 Item を失うと、モデルは推論コンテキストを失い、出力品質が低下します。これは Chat Completions と同じ状態管理負担ですが、処理すべき追加の Item タイプがあります。
5. Astra タスク停止モニター
GPT-6 Astra はすべてのツール使用リクエストに不正監視を備えています。モニターが潜在的な未承認動作を検出すると、モデルのレスポンスに停止シグナルが含まれます。ChatGPT と Codex では、ユーザーはレビューのために一時停止したタスクを見ます。API では、タスクは即座に停止します — 再開パスはありません。
Responses API 上で構築された本番エージェントにとって、これは最も重要なアーキテクチャ上の制約です。previous_response_id チェーンやバックグラウンドモードで数時間実行されるタスクは、分類器によって途中で終了される可能性があります。ワークフローは耐久性のある状態から復旧可能でなければなりません — すべてのツール呼び出し、すべての中間結果、すべての部分的出力は、次の API 呼び出し前にあなた自身のストアに永続化されなければなりません。モニターが50ステップのうちステップ47でタスクを停止した場合、ゼロから再起動するのではなく、ステップ47から再開できる必要があります。
OpenAI の首席科学者 Jakub Pachocki は An Alien Mind(2026年9月6日)で、会社が思考チェーン監視に依存する能力が「徐々に低下」していることを明らかにしました — モデルは自身の推論プロセスについて推論し操作することがより上手になり、改良された事前トレーニングは言語化された推論なしでもモデルを賢くします。あなたのタスクを停止するモニターは、利用可能な最良のランタイム執行レイヤーですが、そのベンダーは依存するシグナルが劣化していると述べています。モデルの推論を読まない執行レイヤーのより深い扱いは、GPT-6 Astra Ships the Runtime Kill Switch を参照してください。
3つの採用決定
決定 1:ステートフルかステートレスか?
ワークフローが会話型、マルチターン、レイテンシ許容の場合は store: true と previous_response_id を使用します。ワークフローがゼロデータ保持を必要とする場合、またはコンテキスト管理を完全に制御する必要がある場合は store: false と手動 Item リプレイを使用します。レイテンシの違いは約2倍 — バックグラウンドエージェントには許容可能、ユーザー向けチャットには許容不能な可能性があります。
決定 2:組み込みツールかカスタム関数か?
組み込みツール(web_search、file_search、code_interpreter、computer_use、image_generation、リモート MCP)はサーバー側で実行され、エージェントループのキャッシュ最適化の恩恵を受けます。カスタム関数はツール呼び出しループを自分で実装する必要があります。実用的なルール:OpenAI があなたより良く提供できる機能(ウェブ検索、コード実行)には組み込みツールを使用し、あなた自身のシステム統合(NetSuite、HubSpot、BigCommerce)にはリモート MCP サーバーを使用します。MCP サーバーとして公開できない機能にのみカスタム関数を使用します。
決定 3:OpenAI のみかモデル柔軟か?
Responses API は OpenAI のプリミティブです。エージェントを完全に previous_response_id と組み込みツール上に構築すると、OpenAI の状態ストアとツールエコシステムにロックインされます。本番要件にモデル柔軟性が含まれる場合 — コスト感応度の高いタスクを Qwen3.8-27B のようなオープンウェイトモデルにルーティングする、または Claude の特定の機能にルーティングする — Responses API の Item モデルと他のプロバイダーが使用する Chat Completions メッセージ形式の間で変換する抽象化レイヤーが必要です。
これは Responses API がエージェントランタイム全体か、複数のバックエンドの1つかを決定するアーキテクチャ決定です。モデル柔軟な構築はエージェントループをあなた自身のランタイムに保持し、Responses API の機能がレイテンシとロックインを正当化する場合に使用し、そうでない場合は Chat Completions またはオープンウェイト推論にフォールバックします。推論エコノミクスは明確です:本番トークンボリュームの29%が既にオープンウェイトモデルで4%未満の支出で実行されています。ルーティング規律は生産現実であり、未来の計画ではありません。
マイグレーションチェックリスト
OpenAI のマイグレーションガイドが完全なチェックリストを提供します。コードだけでなくアーキテクチャに影響する決定:
- 状態モデルを決定する。
previous_response_id、手動 Item リプレイ、または Conversations API。これがレイテンシプロファイルとデータ保持姿勢を決定します。 - 関数定義を監査する。 カスタム関数はそのまま移行しますが、関数呼び出し出力には正しい
call_idを含める必要があります。コンテキストを手動で運ぶ際に推論や関数呼び出し Item を落とすのが最も一般的なマイグレーションエラーです。 - Structured Outputs スキーマを
response_formatからtext.formatに移動 — フィールド名が変更されました。 - 数秒以上実行するワークフローに耐久性のある状態永続化を追加。 Astra タスク停止モニターは再開パスなしで長時間タスクを終了できます;状態ストアが復旧メカニズムです。
- 本番トラフィックをルーティングする前にレイテンシ、トークン使用量、エラー率を比較。 3% SWE-bench 向上と40–80% キャッシュ改善は平均値です;ワークロードは異なる可能性があります。
- モデル柔軟性が重要な場合は Chat Completions フォールバックを維持。 Responses API は OpenAI のみ;他のプロバイダーは Chat Completions を使用します。
関連読書
- GPT-6 Astra Ships the Runtime Kill Switch — タスク停止制約の周囲にどうアーキテクチャするかを決定する執行パッケージと監視可能性開示
- Inference Economics: Why Always-On Production Agents Are Now Affordable — モデル柔軫ルーティング決定の背後にあるコストデータ、29% オープンウェイト / 4% 支出比率を含む
- Long-running Agent Patterns: Keeping Agents Alive Across Hours and Days — Astra タスク停止モニターが必須にする耐久性のある状態と復旧パターン
NetSuite と BigCommerce を実行する中規模ディストリビューターが、受信 RFQ を監視し、在庫とティア価格を確認し、見積もり回答をドラフトするエージェントを追加したいと考えています。NetSuite コネクタモジュールをラップするリモート MCP サーバー付きの Responses API は、動作するプロトタイプへの最速の道です — 1回の API 呼び出し、組み込みツールループ、カスタムオーケストレーションなし。しかし本番アーキテクチャにはモデル柔軟ルーティングレイヤー(推論ボリュームの60%をオープンウェイトモデルでコスト4%で実行)、耐久性のある状態ストア(Astra モニターが長時間 RFQ 分析タスクを途中で停止する可能性)、MCP モジュールのセマンティックレイヤー(Responses API が提供しない型付きスキーマ、監査ログ、レート制限処理)が必要です。それが私たちがスコープする構築です:Responses API を1つの実行バックエンドとして、MCP モジュールを統合レイヤーとして、あなたのランタイムを信頼性とルーティングレイヤーとして。
スコープされたビルドをリクエストしてください。1週間のディスカバリー。システムインベントリ、ワークフローマップ、固定スコープを入手できます — 当社と構築するかどうかにかかわらず。
あなたのシステムのためにこれを構築したいですか?
ここの各ドキュメントは実際の本番作業から来ています。ターゲットシステムとワークフローがあれば、1週間でスコープを定義できます。
スコープ付き構築を依頼1週間のディスカバリ。システムインベントリ、ワークフローマップ、固定スコープを提供します — 私たちと構築するかどうかにかかわらず。