OpenAI APIのMulti-agentは、GPT-5.6が複数のサブエージェントを並列で動かし、最後に結果を統合するResponses APIのベータ機能です。
大きなコードベースの別々の領域を調査する、複数の提案書を比較する、正しさ・セキュリティ・テストの観点で同時にレビューするといった、独立した作業へ分けられるタスクに向いています。
この記事では、OpenAI Multi-agent APIの仕組み、向いている作業、JavaScriptでの最小実装、ルートエージェントとサブエージェントの関係、HTTPとWebSocketの選び方、料金と安全性の注意点を解説します。
情報確認日:2026年7月11日(日本時間)
結論:独立した複数作業を並列化し、ルートエージェントが統合する
この記事の結論
- GPT-5.6のルートエージェントが、必要に応じてサブエージェントを作成する
- 各サブエージェントは担当範囲ごとに独立したコンテキストを持つ
- 調査、比較、レビュー、独立した実装やテストの並列処理に向いている
- 前の結果が次へ必須となる直列処理や、同じデータへ同時に書き込む作業には向きにくい
- ベータ機能のため、SDK、ヘッダー、レスポンス項目の変更に注意する
OpenAI Multi-agent APIとは?
Multi-agentを有効にすると、1つのResponses APIリクエスト内でルートエージェントが複数のサブエージェントを作成し、作業を割り当て、結果を待ち、最終回答へまとめられます。
アプリ側で「必ずこの順番で3つのエージェントを起動する」と固定するのではなく、モデル自身が、並列化によって速度や品質が改善すると判断したときにサブエージェントを使います。開発者メッセージで、積極的に使うか、明示された場合だけ使うかを調整できます。
この記事の範囲:一般的なマルチエージェント設計ではなく、GPT-5.6のResponses APIに追加されたmulti_agentベータ機能の実装を扱います。
Multi-agentが向いている作業
- 大きなコードベースの別々のディレクトリを調査する
- 複数の提案、資料、仮説を同じ評価軸で比較する
- 複数の情報源を同時に調査する
- 独立したコンポーネントやテストスイートを作成する
- 障害原因の候補を別々の観点から調べる
- 同じ問題に対する複数の解決案を比較する
各担当の作業が独立しているほど並列化しやすく、コンテキストを分けることで、別の観点の情報が混ざりにくくなります。
1つのエージェントを使うほうがよい作業
- 各手順が前の結果に直接依存する
- 短時間で完了する小さな作業
- 複数エージェントが同じファイルやレコードを同時に変更する
- 固定された決定的な実行グラフが必要
- 外部APIの1つの遅い処理が全体時間を決めている
サブエージェントを増やすとトークン使用量も増えます。並列化できない仕事に使うと、料金が増えても速度や品質が改善しない場合があります。
ルートエージェントとサブエージェントの仕組み
ルートエージェントは/rootという名前を持ちます。作成されたサブエージェントは、次のような階層パスで管理されます。
/root
├── /root/researcher
├── /root/security-reviewer
└── /root/security-reviewer/tester
サブエージェントも、必要に応じてさらに子エージェントを作成できます。ルートエージェントは、サブエージェントへ追加情報を送り、作業を再開させ、結果を待ち、重複や矛盾を整理して最終回答を作ります。
| 内部アクション | 役割 |
|---|---|
spawn_agent |
サブエージェントを作成し、最初の担当を渡す |
send_message |
実行中のエージェントへ情報を送る |
followup_task |
既存のサブエージェントへ追加作業を渡す |
wait_agent |
エージェントからの更新を待つ |
interrupt_agent |
コンテキストを削除せず、進行中の作業を中断する |
list_agents |
エージェントの階層、状態、直近の担当を確認する |
これらはResponses APIが管理するホスト側の処理です。アプリがmulti_agent_callを実行したり、結果を返したりする必要はありません。
Multi-agentを利用する前提条件
- GPT-5.6 Sol・Terra・Lunaのいずれかを使う
- ベータ版Responses SDKを利用する
- HTTPでは
responses_multi_agent=v1をbetasへ指定する - 生のHTTPやWebSocketでは
OpenAI-Beta: responses_multi_agent=v1ヘッダーを付ける multi_agent.enabledをtrueにする
ベータ期間中はレスポンス項目が変更される可能性があります。本番導入ではSDKのバージョンを固定し、変更履歴を確認できるようにします。
OpenAI Multi-agent APIのJavaScript実装例
次の例では、Pull Requestの差分を、正しさ、セキュリティ、不足テストの3観点へ分けて並列レビューします。
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
async function reviewPullRequest(diff) {
const response = await client.beta.responses.create({
model: "gpt-5.6-sol",
input:
"次のPull Requestを3つの観点で並列レビューしてください。" +
"1人目は正しさ、2人目はセキュリティ、3人目は不足テストを担当します。" +
"重複や矛盾を整理し、重要度順にファイル名と行の根拠を付けてください。\n\n" +
`<diff>\n${diff}\n</diff>`,
multi_agent: {
enabled: true,
max_concurrent_subagents: 3,
},
betas: ["responses_multi_agent=v1"],
});
return response.output
.flatMap((item) => {
const isRootFinal =
item.type === "message" &&
item.agent?.agent_name === "/root" &&
item.phase === "final_answer";
return isRootFinal ? item.content : [];
})
.filter((part) => part.type === "output_text")
.map((part) => part.text)
.join("");
}
const diff = process.argv.slice(2).join(" ");
const result = await reviewPullRequest(diff);
console.log(result);
max_concurrent_subagentsは、同時に動けるサブエージェント数です。ルートエージェントを除き、子、孫、それより深いエージェントを含めた全体へ適用されます。
固定された上限はありませんが、公式ガイドの初期値と推奨値は3です。数を増やす前に、担当が本当に独立しているか、重複調査が増えていないかを確認します。
サブエージェントを使う条件をプロンプトで調整する
Multi-agentを有効にしても、すべての依頼で必ずサブエージェントが作られるわけではありません。開発者メッセージで使用方針を追加できます。
明示された場合だけ使わせる例
利用者が並列作業、役割分担、サブエージェントを明示した場合だけ、
サブエージェントを作成してください。
効果がある場合に積極的に使わせる例
独立した作業へ分割でき、速度または品質が明確に改善する場合は、
サブエージェントを使ってください。担当範囲を重複させず、
最後に根拠の重複と矛盾を整理してください。
「3人で調べて」だけでは担当が重なる場合があります。「料金」「安全性」「実装難易度」のように、担当と評価軸を明確にすると統合しやすくなります。
Multi-agentとツール呼び出し
ルートとサブエージェントは、リクエストへ設定した同じツールへアクセスできます。Functionを呼び出した場合は、通常のResponses APIと同じように、アプリがfunction_callを実行してfunction_call_outputを返します。
権限に注意:すべてのエージェントへ同じ書き込みツールを与えると、複数のエージェントが同じ対象を変更する可能性があります。調査用エージェントには読み取り専用ツールだけを渡す設計が安全です。
複数ツールの結果をコードで集計する処理は、Programmatic Tool Callingの使い方も選択肢になります。Multi-agentは別々の推論や調査、Programmatic Tool Callingは予測可能なツール処理のコード化に向いています。
HTTPとWebSocketのどちらを使う?
| 接続方法 | 特徴 | 向いている場面 |
|---|---|---|
| HTTP | アクティブなエージェントが完了またはFunction待ちになると、アプリがまとめて結果を返す | ホストツール中心、Functionが少ない、1回で終わる処理 |
| WebSocket | Functionの結果を準備できた順に注入し、待機中のエージェントをすぐ再開できる | 長時間、ツールが多い、エージェントごとの完了時間が異なる処理 |
長いMulti-agent処理や、複数のFunctionを頻繁に使う処理では、待ち時間と継続リクエストを減らせるWebSocketが向きやすいです。最初の小さな検証ではHTTPから始めても構いません。
料金と処理時間の注意点
サブエージェントはそれぞれ入力、推論、ツール結果、出力を扱うため、1エージェントよりトークン使用量が増える場合があります。並列処理によって経過時間を短縮できても、料金が同じになるとは限りません。
- サブエージェント数ごとのトークン使用量
- 1エージェントとの処理時間差
- 重複した調査や回答の割合
- 最終統合で失われた重要情報
- Function呼び出し回数と外部API料金
- 同じ品質をTerraやLunaで維持できるか
最初はmax_concurrent_subagents: 3のまま代表的なタスクを試し、1エージェント、2エージェント、3エージェントで精度、時間、料金を比較します。
ベータ版で知っておきたい制約
- レスポンス項目やSDKの型が変更される可能性がある
/responses/compactエンドポイントはMulti-agent有効時に使えない- Multi-agent有効時はエージェントごとの自動コンパクションが暗黙に有効になる
reasoning.summaryは利用できないmax_tool_callsは利用できない- 固定されたエージェント総数・階層上限はないため、プロンプトと同時実行数で制御する
安全に運用するためのポイント
- 担当範囲を独立させ、同じ対象への同時書き込みを避ける
- 調査用エージェントには読み取り専用権限を使う
- Functionの引数と権限をアプリ側で検証する
- 送信、公開、削除、デプロイなどは人の承認を必須にする
- ルートエージェントへ、重複、矛盾、根拠不足の整理を指示する
- ログで、どのエージェントがどのツールを使ったか追跡する
よくある質問
Multi-agentはすべてのOpenAIモデルで使えますか?
2026年7月11日時点では、GPT-5.6モデルファミリーで利用できるベータ機能です。
サブエージェントは別のモデルを使えますか?
Responses APIのMulti-agentでは、サブエージェントはリクエストで指定したモデルと利用可能なツールを共有します。
サブエージェント数は多いほどよいですか?
多いほどよいわけではありません。独立した担当がないと重複とトークン使用量が増えます。初期値の3から評価するのが基本です。
Agents SDKのマルチエージェントと同じですか?
目的は近いですが、この記事の機能はResponses APIがホストするGPT-5.6のMulti-agentベータです。独自の固定ワークフローや異なるモデル構成を細かく制御したい場合は、Agents SDKによるオーケストレーションも検討します。
Programmatic Tool Callingとの違いは何ですか?
Multi-agentは複数の推論担当へ仕事を分けます。Programmatic Tool Callingは、予測可能な複数ツール処理をJavaScriptでまとめます。
まとめ
OpenAI Multi-agent APIは、GPT-5.6が複数のサブエージェントへ独立した作業を割り当て、並列で進め、ルートエージェントが最終結果へ統合する機能です。
- 独立した調査、比較、レビュー、実装に使う
- 直列処理や共有データへの同時書き込みには使いすぎない
multi_agent.enabledとベータ指定を追加する- 同時実行数は初期値の3から評価する
- 全エージェントが同じツールへアクセスする前提で権限を絞る
最初は、同じ資料を「正確さ」「安全性」「不足情報」の3観点で並列レビューする、読み取り専用の小さな処理から試すと、効果とトークン使用量を比較しやすくなります。