フォーム読み込み中
皆さん、こんにちは。ソリューションアーキテクトの長岡です。
今回は、2025年春に発表されたGoogle Cloud Agent Development Kit (ADK) を使い、安定したマルチエージェント構成を構築する方法について解説します。
生成AIの登場により、自律的にタスクをこなす「AIエージェント」の開発が活発化していますね。皆様も日々オリジナルのエージェントをさまざまなツール上で開発されていることでしょう。このような状況の中、多くの開発者が「何でもできる万能エージェント」を一つ作ろうとして、思わぬ壁にぶつかっているのではないでしょうか。
例えば、一つのエージェントに「大阪出張の計画から予約まで全部お願い」と頼んだとします。最初は上手く動いても、予約サイトの仕様が変わった途端にエラーで停止したり、複数の処理が絡み合う中で「どこで間違えたのか」の特定が困難になったりします。
これは、一つのエージェントにあまりに多くの責任を負わせる、いわば「一枚岩(モノリシック)なエージェント」を作ってしまうことに起因します。
Google Cloud ADKが提案するのは、このアプローチを根本から見直すことです。つまり、万能なスーパースター選手を育てるのではなく、明確な役割を持つ『専門家エージェント』を複数連携させることで、変化に強く、管理しやすいシステムを構築します。
本稿ではその第一歩として、専門家たちを「Agent A→Agent B→Agent C」という決まった順序で動かすADKの組み込みのクラスである、`SequentialAgent`の基本的な使い方を解説します。どのようにして、ワークフロー全体の安定性を高められるかを一緒に見ていきましょう。
そもそもADKをよく知らないという方もいるでしょう。Google Cloud Agent Development Kit (ADK) は、Google CloudのVertex AIやGeminiモデルとシームレスに連携し、AIエージェントや、複数のエージェントが協調して動作する「マルチエージェントシステム」の開発を簡素化するために設計された注目のオープンソースフレームワークです。
主な特徴は以下の通りで、AIエージェント開発のための強力なツールと、Google Cloudの堅牢な基盤を組み合わせることで、エンタープライズレベルの要求に応えるアプリケーション開発を迅速にできる点が魅力だと言えます。
マルチエージェント設計:
→ 専門分野を持つ複数のエージェントを階層的に組み合わせ、複雑なタスクを解決するシステムの構築が可能
柔軟なモデル対応:
→ Googleの gemini-2.5-pro をはじめ、様々な大規模言語モデル(LLM)をサポート。LiteLLMを利用すればオープンソースモデルの利用も可能。VertexAIのModel Gardenも利用可能。
豊富な開発ツール:
→ 開発からデバッグ、評価までを効率化するコマンドラインツール(CLI)やWeb UI(ADK Web)を提供。(筆者の感覚だと、CLIが比較的安定しているためおすすめしたい)
セッション・記憶管理:
→ 対話の文脈管理や、対話を跨いだ長期的な記憶の管理機能が利用可能
ADKの`SequentialAgent`は、「決定論的(Deterministic)」なパターンで動作するよう設計されています。これは、AIの能力を、人間が定義した厳密で予測可能なワークフローの中で「1つのパーツ」として活用する考え方です。全体の流れは人間が管理するため、マルチエージェント間の連携が安定し、予期せぬエラーやログのトレースなども容易になります。
`SequentialAgent`は、複数のタスクを「A→B→C」という定義済みの順序で実行します。ビジネスにおける「1. 申請→2. 承認→3. 通知」のように、実行順序が重要となるワークフローの構築に不可欠です。
ここでは、「出張目的の確認 → 交通手段の仮予約 → 旅程の要約作成」という、順番が重要な出張申請の初期プロセスを例に実装方法を示します。
ADKでは、エージェント間のデータ連携は共有ステート(Session State)を介して行われます。各エージェントは、自身の処理結果を`output_key`で指定したキー名で共有ステートに書き込み、後続のエージェントが`{キー名}`の形式でその値を参照します。
from google.adk.agents import LlmAgent
# 役割1:「出張目的の明確化」担当
purpose_agent = LlmAgent(
name="purpose_clarifier",
instruction="あなたはアシスタントです。与えられた出張依頼から、主要な目的と訪問先を抽出してください。",
model="gemini-2.5-flash",
output_key="trip_purpose"
)
# 役割2:「交通手段の仮予約」担当
transport_agent = LlmAgent(
name="transport_booker",
instruction="あなたは旅行代理店です。抽出された目的「{trip_purpose}」に基づき、最適な交通手段(新幹線など)を仮予約し、予約情報を返してください。",
model="gemini-2.5-flash",
output_key="booking_info"
)
# 役割3:「旅程の要約」担当
summary_agent = LlmAgent(
name="itinerary_summarizer",
instruction="あなたは秘書です。出張目的「{trip_purpose}」と予約情報「{booking_info}」を基に、上司への申請用の簡潔な旅程を作成してください。",
model="gemini-2.5-flash"
)
sub_agentsの配列に、作成したシングルエージェントを渡します。この時、配列に格納した順番でエージェントがシーケンシャルに実行されます。(下記の例では、purpose_agent → transport_agent → summary_agent の順番で連続実行されます。)
from google.adk.agents import SequentialAgent
business_trip_planner = SequentialAgent(
name="business_trip_planner",
sub_agents=[
purpose_agent,
transport_agent,
summary_agent
]
)
次に、パイプラインを実行します。runner 変数には、マルチエージェントのbusiness_trip_planner と sessionを渡してシングルエージェント間の output_key を共有させます。
from google.adk.runtime import Runner
from google.adk.runtime.types import Content, Part
from google.adk.runtime.services import SessionService
runner = Runner(agent=business_trip_planner, session_service=SessionService())
initial_request = "来週、大阪のA社へ新製品のデモのため出張します。"
final_result = runner.run(
user_id="user_nagaoka",
new_message=Content(parts=[Part(text=initial_request)])
)
print(final_result.message.parts[0].text)
# 期待される出力例:
#
# 【出張旅程のご報告】
#
# 目的:大阪A社にて新製品デモ
# 交通:のぞみ225号 東京 12:10 -> 新大阪 14:40 (仮予約済)
#
# 上記内容で出張申請を進めます。
本稿では、ADKの基本思想と SequentialAgent による信頼性の高いワークフローの構築方法を解説しました。
ADKは「決定論的」な設計で、プロセスの信頼性を保証をする
その中でも SequentialAgent は、定義された順序でタスクを実行し、ワークフローを標準化できる
これにより、AIエージェントであっても、ルールベースに近い予測可能でエラートレース等が容易な、不足の事態に強い安定したワークフローの自動化が実現できる
次回の【第2部】では、複数のタスクを同時実行し、並列処理でマルチエージェントの処理の高速化と効率化を実現する ParallelAgent について解説します。お楽しみに!
Vertex AI Search を使って社内文書検索環境(RAG)を構築してみませんか?ソフトバンクのエンジニアが構築をサポートします。
Vertex AI DIY プランでは、以下の3つのことをご体験いただけます。詳細は、関連サービスにある「Vertex AI DIYプラン」をご確認ください。
Vertex AI Search を使って社内文書を検索する生成AIを構築してみませんか?
ソフトバンクのエンジニアが構築をサポートします。
Google の生成AIの導入を考えている方はもちろん、どのようなものか確認したいという方でもご活用いただけます。
Looker は定義から集計、可視化の一連のデータ分析プロセスをカバーする BI ツールを超えるデータプラットフォームです。ソフトバンクは、顧客のニーズに合わせて柔軟なサポートを提供し、Looker を活用したデータドリブンな企業変革を支援しています。
Google サービスを支える、信頼性に富んだクラウドサービスです。お客さまのニーズにあわせて利用可能なコンピューティングサービスに始まり、データから価値を導き出す情報分析や、最先端の機械学習技術が搭載されています。
MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。
条件に該当するページがございません