AI活用

OpenAI Multi-agent APIの使い方|GPT-5.6でサブエージェントを並列実行する方法

OpenAI Multi-agent APIでGPT-5.6のサブエージェントを並列実行する方法を解説。JavaScript例、向いている処理、HTTPとWebSocket、料金・安全性も紹介します。

この記事の目次
  1. 結論:独立した複数作業を並列化し、ルートエージェントが統合する
  2. OpenAI Multi-agent APIとは?
  3. Multi-agentが向いている作業
  4. 1つのエージェントを使うほうがよい作業
  5. ルートエージェントとサブエージェントの仕組み
  6. Multi-agentを利用する前提条件
  7. OpenAI Multi-agent APIのJavaScript実装例
  8. サブエージェントを使う条件をプロンプトで調整する
  9. 明示された場合だけ使わせる例
  10. 効果がある場合に積極的に使わせる例
  11. Multi-agentとツール呼び出し
  12. HTTPとWebSocketのどちらを使う?
  13. 料金と処理時間の注意点
  14. ベータ版で知っておきたい制約
  15. 安全に運用するためのポイント
  16. よくある質問
  17. まとめ
  18. 参考リンク

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.enabledtrueにする

ベータ期間中はレスポンス項目が変更される可能性があります。本番導入では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観点で並列レビューする、読み取り専用の小さな処理から試すと、効果とトークン使用量を比較しやすくなります。

参考リンク