メインコンテンツまでスキップ

ネイティブなマルチエージェントAPI:OpenAIのResponsesマルチエージェントベータ vs 自作

上級

18か月間、「マルチエージェント」とはあなたがファンアウトを書くことを意味した。コーディネータープロンプトを書き、N個の呼び出しを並列で発火させ、JSONをマージし、リトライを処理した。2026年7月9日、OpenAIはそれをリクエストパラメータに畳み込んだ:multi_agent.enabled: true をResponses APIに、そしてSol Ultra Modeという消費者向け機能でラップした。モデル自身がいくつのサブエージェントを生成するかを決め、並列で実行し、結果を統合する — すべて1回のHTTP呼び出しの中で。他のフロンティアベンダーはまだ対称的なプリミティブを出荷していない。このページでは、実際に出荷されたもの、その背後の数字、Anthropicが代わりに提供するもの、そして — 本当に重要な部分 — ネイティブプリミティブがコストに見合う3つのワークロードと、DIYファンアウトが依然として勝つ2つのワークロードを整理する。

What you'll learn
  • Responses APIのマルチエージェントリクエストボディの正確な形を読み、max_concurrent_subagentsが実際に何を上限にしているかを知る
  • コスト計算を行う:『モデルが4つのサブエージェントを生成する』とSol価格で実際にいくらかかるか
  • Anthropic側の同じ領域 — Cowork、Managed Agents、Claude Codeサブエージェント — をマッピングし、プリミティブのギャップを見る
  • ワークロードごとに正しいプリミティブを選ぶ:ネイティブマルチエージェント、DIYファンアウト、A2A、または単一の長いターン
  • 4エージェントのUltra呼び出しを、精度向上ゼロの4倍請求に変える4つの失敗モードを避ける

一文で言うと

Ultra ModeはResponses API上の multi_agent.enabled: true の消費者向けスキンである — モデルが1リクエスト内でサブエージェントを並列生成し、出力を統合して、単一のレスポンスを返すネイティブプリミティブ。並列化可能なタスクで小さいが実質的な精度向上を買える(Terminal-Bench 2.1: 88.8% → 91.9%)。トークン請求はモデルが生成することを選ぶサブエージェントの数にほぼ比例してスケールする。

2026年7月9日に実際に出荷されたもの

同じローンチで2つのものが登場した。分けて考える価値がある:

  • Ultra Mode — ChatGPTとCodex内のプロダクトトグル。フラッグシップティア(Sol)で利用可能。有効にすると、難しいタスクは統合前に並列サブエージェント実行に分解される。「4+エージェントを生成」と宣伝されるが、OpenAI自身のGAベンチマークチャートのいくつかはBrowseCompとSEC-Bench Proで16エージェント構成も示している。ただし4が既定の作業値。
  • Responses APIマルチエージェントベータ開発者向けプリミティブ。同じ基盤能力が client.beta.responses.create()multi_agent.enabled: true として公開されている。Ultraライクな体験を自分で作りたいならこれを使う。

マーケティングが残した混乱は本物:ビルダーが「Ultra ModeをAPIからどう呼ぶのか?」と繰り返し訊く。答えは、呼ばない — プロダクト機能の背後にあるプリミティブであるマルチエージェントベータを有効にするだけ。

Responses APIマルチエージェントリクエスト

具体的にはこの形(Python SDK):

最小限のマルチエージェントResponses API呼び出し

from openai import OpenAI

client = OpenAI()

resp = client.beta.responses.create(
  model="gpt-5.6-sol",
  input="Audit this repo for auth-bypass patterns and write a report.",
  multi_agent={
      "enabled": True,
      "max_concurrent_subagents": 3,
  },
  tools=[...],  # your MCP tools, function tools, etc.
  extra_headers={"OpenAI-Beta": "responses_multi_agent=v1"},
)

この形について自明でない点が4つ:

  • max_concurrent_subagents は総予算ではない。 これは任意の瞬間にツリー全体(ルート+子孫)でアクティブなサブエージェントターン数を上限にする。モデルはリクエストの生存期間にわたってはるかに多い総数のサブエージェントを生成できる;単に一度にNを超えるアクティブ状態にできないだけ。
  • 深さは無制限。 サブエージェント自身がサブエージェントを生成できる。ツリー深さや実行あたりの総サブエージェント数に固定の上限はない。コスト面は「N呼び出し」ではなく — 実行時にモデルが形作るツリーである。
  • ルートが統合する。 ルートエージェントがサブエージェントの応答を最終回答にマージする責任を持つ。構造化された {subagents: [...]} オブジェクトは返ってこない;1つのレスポンスが返り、中間のエージェントターンはコードから不透明。
  • 一部のパラメータは黙って無効化される。 reasoning.summarymax_tool_calls はマルチエージェント有効時にサポートされず、コンパクションエンドポイントはマルチエージェント応答に対してサポートされない。可観測性のために推論サマリーに依存しているなら、これをオンにした瞬間に失う。

マーケティングページに載っていないコスト計算

SolのGA価格 入力$5 / 出力$30 / 100万トークン で、算術は容赦ない。実際のUltra実行をリバースエンジニアリングしたビルダーの記録から:

  • Ultraが2サブエージェントに分解するタスク ≈ 単一Sol呼び出しの出力トークンコストの2倍 — 両サブエージェントが出力を生成し、ルートがその上に統合を生成するため。
  • Ultraが5サブエージェントを生成するタスク ≈ 5倍 — 同じ推論、加えてツリー全体で比例して多くの入力トークンリプレイ。
  • BrowseComp / SEC-Benchチャートが示す16エージェント構成は無料の昼食ではない:研究グレードのデモであり、既定値ではない。Solで16並列サブエージェントなら、難しいクエリごとに出力トークンだけで2桁ドル台中盤の請求を見ることになる。

考え方:Sol呼び出しのモンテカルロ + その上の1回の統合パスに払っている。 時にそれは意味のある精度を買う。時にそれは、単一の呼び出しで解けたタスクへの4倍請求にすぎない。

精度が実際に買うもの

並列化可能な評価 — Ultra Modeが設計対象とするワークロード — で公表されたデルタは本物だが控えめ:

ベンチマークSol(単一)Sol Ultraデルタ評価が測るもの
Terminal-Bench 2.188.8%91.9%+3.1マルチステップのコマンドライン計画、ツール調整
BrowseComp87.5%92.2%+4.7複数ソースのウェブリサーチと統合
SEC-Bench Pro74.3%(単一モード数値は非公表)大規模コーパスにわたる規制文書推論

この表について3点:

  • +3〜5点の帯は、並列サンプリング(best-of-N、自己一貫性)が他のフロンティアで歴史的に買ってきたものと一致する。プリミティブは真に有用だが、デルタはステップチェンジではない。
  • これらはベストケース — モードを見せるために選ばれた評価。順次タスク(線形なコード編集、単一ファイル書き換え、短いチャット)では、Ultraは統合レイテンシとコストを追加するが精度は動かない。
  • 同じTerminal-Bench 2.1チャートで、AnthropicのOpus 4.8は78.9%を記録した — つまりSol Ultraのリードはより良いベースモデルその上に積まれたマルチエージェント上昇の両方から来ている。OpusからSol Ultraに移行するなら、ギャップ全体をマルチエージェントプリミティブに帰属させないこと。

Anthropicは代わりに何をしているか

Anthropicは対称的なAPIプリミティブを出荷していない。最も近い類似物はそれぞれ同じ問題の異なる断面を解く:

  • Coworkプロダクト面。エージェントがユーザーと並んで持続的なマルチステップ作業を行うエージェンティックなデスクトップワークスペース。Ultra Modeと機能としては比較可能だが、APIプリミティブとしてではない。
  • Managed Agentsmanaged-agentsメモリストア — 永続状態とスケジューリングを備えたホスト型エージェントループ。「長時間実行のバックグラウンドエージェント」枠を埋めるものであり、「4つを並列に生成してマージ」枠ではない。
  • Claude Codeサブエージェントサブエージェントフリート制限 — ファーストクラスのサブエージェントプリミティブだが、Claude Code CLIにスコープされる。文書化されており、並列で生成可能で、multi_agent.enabled最も近い類似物 — 重要な違いは、コーディネータープロンプトを自分で書くこと。
  • Messages APIでの エージェント構築 — DIY経路。N個の messages.create 呼び出しを並列でファンアウトし、統合プロンプトを書き、リトライを処理する。同じ結果、より多くのコード。

ギャップ:現在、単一のブール値を反転させるだけでモデル自身がいくつのサブエージェントを生成しどうマージするかを決めるAnthropic API面は存在しない。 Claudeに対してその動作が欲しいなら、自分で作る — プロダクト側のストーリーは Cowork & Agent Teams、ホストループのプリミティブは Managed Agents を参照。

ワークロードごとに正しいプリミティブを選ぶ

Guided walkthrough1 of 5
  1. サブタスクが互いの結果を待たずに実行できるなら — リポジトリ監査、多数のソースにわたるトピック調査、N個のファイルを独立にリファクタ — ファンアウト形はコストに見合う。タスクが順次(Aを編集、次にAの結果を読み、次にBを編集)なら、どのマルチエージェントプリミティブも利得なしに統合オーバーヘッドを追加する。

Ultraを何もない4倍請求に変える4つの失敗モード

  • 順次タスクでオンにする。 タスクが並列化しないときでもモデルは分解して統合する。並列化が不要だった作業への調整オーバーヘッドを払う。経験則:最初のサブエージェントが走っている間に2番目のサブエージェントが何をしているか説明できないなら、マルチエージェントを有効にしない。
  • 推論サマリー可観測性をダッシュボードに残す。 reasoning.summary はマルチエージェントで黙ってサポートされない。監視がそれに依存していると、空フィールドを取得してモデルが考えていないと思う。フラグを反転させる前にスキーマ変更を出荷する。
  • max_tool_calls を安全リミットとして使う。 マルチエージェントで同じく黙って無効化される。持っていたと思っていた安全ストーリー — 「リクエストあたり最大20ツール呼び出し」 — は消える。ツール呼び出し上限はリクエストパラメータ経由ではなく、ツールアダプター層で強制する。
  • max_concurrent_subagents をコスト上限と仮定する。 リクエスト全体で生成された総数ではなく、瞬間のアクティブサブエージェントを上限にする。単一のUltra呼び出しは順次に数十のサブエージェントを生成しても max_concurrent_subagents: 3 制限を尊重できる。コストが天井なら、リクエストレベルで max_output_tokens を追加する。

「ネイティブマルチエージェント」ではないもの

隣接する2つのプリミティブがしばしば混同される:

  • n > 1 サンプリングではない。 OpenAIの古い n パラメータは複数の補完をサンプルして全部返す;あなたが1つを選ぶ。マルチエージェントは異なるサブエージェントが異なる作業を行い、その出力を統合する。前者は温度サンプリング;後者はタスク分解。
  • バッチ推論ではない。 バッチAPI は多数の独立リクエストをバックグラウンドで処理する。マルチエージェントは1つのインタラクティブリクエスト内の多数の協調されたサブエージェント。バッチはスループット指向、マルチエージェントは結果指向。

これがどこに向かっているか

A2Aプロトコル(A2A: The Agent-to-Agent Protocol 参照)はベンダー間マルチエージェントをカバーする。multi_agent.enabled: trueモデル内マルチエージェントをカバーする。埋まっていないスロットはクロスベンダープリミティブ — ベンダーA上のモデルがベンダーB上のサブエージェントを生成し結果をマージ — で、まだそれの公開仕様はない。到着するときは、どちらか側の新しいAPIとしてではなく、A2A + ネイティブなハンドオフ動詞として着地する。その空間を注視すること。

Check yourself

0/4
  1. Responses マルチエージェントベータで max_concurrent_subagents は何を上限にするか?
  2. マルチエージェントを有効にしたら、監視ダッシュボードで推論サマリーフィールドが突然空になった。何が起きた?
  3. 2つのベンダーにまたがる異なる顧客アカウントで実行される並列サブエージェントが必要。どのプリミティブが正しい?
  4. 以下のうち、Ultra Mode / multi_agent.enabled の候補として悪いのはどれ?
カードがまだありません — 追加して学習を始めましょう。🃏

情報源と追加読解