コンテンツに移動
デベロッパー

連携型 AI の構築: ADK を使用してマルチエージェント システムを構築するデベロッパー ガイド

2025年11月12日
https://storage.googleapis.com/gweb-cloudblog-publish/images/A_Developers_Guide_to_Multi-Agent_Systems_.max-2500x2500.png
Annie Wang

Google AI Cloud Developer Advocate

※この投稿は米国時間 2025 年 11 月 6 日に、Google Cloud blog に投稿されたものの抄訳です。

複数の AI エージェントが実際に連携して、単一のエージェントでは複雑すぎる問題を解決する方法について疑問に思ったことがあるなら、このブログ記事はまさにおすすめです。このガイドは、2 部構成の動画シリーズに基づいており、マルチエージェント システム(MAS)の基本コンセプトを説明し、Google のエージェント開発キット(ADK)によってデベロッパーがマルチエージェント システムを簡単に構築できる方法を紹介します。

Video Thumbnail
Video Thumbnail

この投稿を読み終える頃には、マルチエージェント システムとは何か、その構造化方法、ADK を使用してエージェント間の通信を可能にする方法を理解できるようになります。

それでは詳しく見ていきましょう。

マルチエージェント システムとは

マルチエージェント システムは、本質的には、目標を達成するために連携する個々の自律型エージェントの集合体です。これを理解するために、3 つの重要なアイデアに分けて説明します。

  • 分散型制御: すべてを制御する単一の「ボス」エージェントは存在しません。各エージェントは、独自ルールとローカル情報に基づいて独自の意思決定を行います。空を旋回する鳥の群れを思い浮かべてください。リーダーはいませんが、群れ全体で信じられないほど協調的なパターンを形成します。

  • ローカルビュー: 各エージェントはシステムの部分的なビューしか持ちません。システム全体の状態ではなく、直近の環境を認識して反応します。満員のスタジアムに立っていると想像してください。あなたが見て対応できるのは周囲の人々だけで、観客全体を同時に見て対応することはできません。

  • 創発的行動: ここで魔法が起こります。このような単純なローカルでのやり取りから、複雑でインテリジェントなグローバルな動作が生まれます。このようにエージェントが連携することで、単独では簡単に達成できないタスクを解決できます。
https://storage.googleapis.com/gweb-cloudblog-publish/images/8_bSozdwl.max-2000x2000.png

この連携アプローチにより、複雑な問題に対する堅牢でスケーラブルかつ柔軟なソリューションが可能になります。

ADK によるマルチエージェント システムのサポート

Google のエージェント開発キット(ADK)は、マルチエージェント システムを念頭に置いてゼロから構築されました。さまざまなコンポーネントを無理やり組み合わせるのではなく、3 つの主要なタイプのエージェントで構成される構造化されたフレームワークを提供します。各エージェントには特定の役割があります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/7_fe519aX.max-2000x2000.png
  • LLM エージェント: オペレーションの「頭脳」です。Gemini などの大規模言語モデルを活用して、自然言語の入力を理解し、問題を推論して、次の行動を決定します。

  • ワークフロー エージェント: タスクの実行方法をオーケストレートする「マネージャー」です。ワークフロー エージェントは、自身で作業を行うのではなく、他のエージェント間の実行フローを指示します。これらについては、後ほど詳しく説明します。

  • カスタム エージェント: 「スペシャリスト」です。他のエージェント タイプでは対応できない完全な制御や特定のロジックが必要な場合は、BaseAgent から継承して独自の Python コードを記述できます。

基本コンセプト: エージェントの階層

ADK を使用して構築する場合、エージェントは会社の組織図のように階層化されます。この構造はシステムのバックボーンであり、次の 2 つのシンプルなルールによって管理されます。

  • 親エージェントとサブエージェント: 親エージェントは 1 つ以上のサブエージェントを管理し、タスクを委任できます。

  • 単一の親ルール: 各エージェントは親を 1 つしか持てないため、明確な指揮系統とデータフローが確保されます。
https://storage.googleapis.com/gweb-cloudblog-publish/images/mutliagent_blog_visual_2.max-1000x1000.png

ルート エージェントは、オペレーション全体を監督する CEO のようなものです。そのサブエージェントは VP であり、VP はディレクター、マネージャー、一般社員を管理します。全員が明確な役割を持ち、協力して会社のミッションを達成します。こちらの例をご覧ください。

この階層構造は、マルチエージェント システムを整理してスケーリングするための基本です。

ワークフロー エージェントによるタスクのオーケストレーション

つまり、階層構造になっています。しかし、その構造内で作業の流れをどのように制御すればよいのでしょうか?ここでワークフロー エージェントが威力を発揮します。ADK には、サブエージェントを管理するための 3 つの事前構築されたオーケストレーターが用意されています。

  • SequentialAgent: このエージェントは、組み立てラインのように機能します。サブエージェントを事前定義された順序で 1 つずつ実行します。1 つのエージェントの出力を次のエージェントの入力として渡すことができるため、データの取得 → データのクリーンアップ → データの分析 → 調査結果の要約のようなマルチステップのパイプラインに最適です。こちらの例をご覧ください。
https://storage.googleapis.com/gweb-cloudblog-publish/images/mutliagent_blog_visual_6.max-1000x1000.png
  • ParallelAgent: このエージェントは、複数の従業員に一度にタスクを割り当てるマネージャーのように機能します。すべてのサブエージェントを同時に実行するため、情報を収集するために 3 つの異なる API を呼び出すなど、同時に実行できる独立したタスクに最適です。こちらの例をご覧ください。

https://storage.googleapis.com/gweb-cloudblog-publish/images/mutliagent_blog_visual_7.max-1000x1000.png
  • LoopAgent: このエージェントは、プログラミングの while ループのように機能します。特定の条件が満たされるか、最大イテレーション回数に達するまで、サブエージェントを繰り返し実行します。これは、ステータス更新のために API をポーリングしたり、オペレーションが成功するまで再試行したりするなどのタスクに役立ちます。こちらの例をご覧ください。

https://storage.googleapis.com/gweb-cloudblog-publish/images/6_zyKwPKJ.max-2000x2000.png

これらのワークフロー エージェントを使用すると、ボイラープレート コードに迷うことなく、複雑で動的な実行パスを構築できます。

エージェントのコミュニケーション方法

構造とマネージャーが揃ったら、最後の要素はコミュニケーションです。エージェントは実際にどのように情報を共有し、作業を委任するのでしょうか。ADK は、3 つの主要な通信メカニズムを提供します。

共有セッションの状態

共有セッションの状態は、共有のデジタル ホワイトボードのようなものです。エージェントは、共通の state オブジェクトに結果を書き込むことができ、階層内の他のエージェントはその情報を読み取って、自身のアクションに反映させることができます。たとえば、LLMAgent はユーザー入力を分析して主要なエンティティを state に保存し、CustomAgent はそれらのエンティティを使用してデータベースをクエリできます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/mutliagent_blog_visual_9.max-1000x1000.png

LLM による委任

LLM を活用した委任は、より動的でインテリジェントなコミュニケーションの形です。親エージェント(多くの場合 LLMAgent)はコーディネーターとして機能できます。受信したリクエストを分析し、推論機能を使用して、タスクの処理に最適なサブエージェントを決定します。たとえば、ユーザーが「先月の請求書を作成して」と依頼した場合、コーディネーター エージェントは、リクエストを専門の BillingAgent に動的にルーティングできます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/mutliagent_blog_visual_10.max-1000x1000.png

明示的な呼び出し(AgentTool)

明示的な呼び出し(AgentTool)は、1 つのエージェントが別のエージェントを関数のように直接呼び出すことができるパターンです。これは、親エージェントが呼び出しを選択できる「ツール」として、ターゲット エージェントをラップすることで実現されます。たとえば、主要な分析エージェントは、正確な数学的計算を必要とするタスクに遭遇するたびに、CalculatorAgent ツールを呼び出すことができます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/mutliagent_blog_visual_11.max-1000x1000.png

サブエージェントと AgentTool の違いを理解することが重要です。

  • サブエージェントは、組織図上の従業員として階層の恒久的な一部であり、常に親によって管理されます。

  • AgentTool は外部のコンサルタントのようなものです。特定の専門知識が必要なときに依頼しますが、コアチームの構造には含まれません。

https://storage.googleapis.com/gweb-cloudblog-publish/images/mutliagent_blog_visual_12.max-1000x1000.png

まとめ

これまでの内容を簡単に振り返りましょう。

  • マルチエージェント システムは、分散制御とローカルビューを使用して複雑な創発的行動を生成するため、強力です。

  • ADK は、LLM(頭脳)、ワークフロー(マネージャー)、カスタム(スペシャリスト)の 3 つのエージェント カテゴリを備えた堅牢なフレームワークを提供します。

  • エージェントの階層は、システムを組織化する構造を提供し、親子関係を明確に定義します。

  • ワークフロー エージェントSequentialParallelLoop)は、複雑なタスクフローをオーケストレートするためのパターンを提供します。

  • コミュニケーション メカニズム共有状態委任明示的な呼び出し)により、エージェントは効果的に連携できます。

これらのコンセプトを組み合わせることで、マルチエージェント システムは構造化されるだけでなく、真に協調的で、柔軟かつインテリジェントなものになります。これで、ADK を使用して独自のマルチエージェント アプリケーションを構築するための基礎知識が身につきました。こちらからチュートリアルを開始できます。

関連情報

ADK ドキュメント: https://google.github.io/adk-docs/ 

ADK のサンプル: https://github.com/google/adk-samples

ADK Codelab: https://codelabs.developers.google.com/onramp/instructions#0 

ADK マルチエージェントの例: https://github.com/cuppibla/adk_tutorial/tree/main

筆者への問い合わせ

-Google AI クラウド デベロッパー アドボケイト、Annie Wang

投稿先