GoogleのAgent Development Kit(ADK)とは?100行以下のコードでAIエージェントを開発する方法

AIエージェント/RAG

はじめに (2025年8月更新版)

2025年4月のGoogle Cloud NEXT ’25でオープンソースとして公開されたAgent Development Kit (ADK)は、AIエージェント開発の世界に大きなインパクトを与えました。公開から数ヶ月が経過し、ADKは活発なコミュニティと共に進化を続けています。本記事では、ADKの基本概要から、最新のアップデート内容や、より実践的な使い方までを網羅的に解説します。

Agent Development Kit (ADK) とは?

Agent Development Kit (ADK)は、AIエージェントを開発し、本番環境へデプロイするための一貫したフローを提供する、Google製のオープンソースフレームワークです。最新のGeminiモデルファミリーや各種生成AIツールとシームレスに連携し、特にGoogle Cloudエコシステムとの強力な統合を実現します。

ADKの核心的な思想は、シンプルな単一エージェントから始め、必要に応じて複数のエージェントが協調して動作する複雑なマルチエージェントシステムへと、スムーズにスケールアップできる設計にあります。このフレームワークは、実際にGoogleの内部サービスでも利用されている実績のあるものです。

なぜ今、ADKが重要なのか?

AIのトレンドは、単一のタスクをこなすモデルから、複数のツールや知識を駆使して自律的にタスクを遂行する「AIエージェント」へと急速にシフトしています。ADKは、こうした高度なエージェントを、信頼性・安全性を確保しながら効率的に構築・運用するという、現代のAI開発における最重要課題に応えるために設計されています。

ADKの主な特徴(最新アップデート対応)

  • マルチエージェント設計: 専門分野を持つ複数のエージェントを階層的に組み合わせ、複雑なタスクを分担・協調させることが可能です。
  • 豊富なツールエコシステム: Google検索やコード実行といった組み込みツールに加え、独自のPython関数や、LangChain、LlamaIndexなどのサードパーティライブラリとも柔軟に連携できます。
  • 柔軟なオーケストレーション: 事前に定義した順序で処理を行う静的なワークフローから、LLMが状況に応じて最適なエージェントやツールを動的に選択する適応的なルーティングまで、幅広い制御が可能です。
  • 本番環境へのデプロイ対応: 開発したエージェントはコンテナ化され、ローカル環境はもちろん、Google Cloud Runや、エンタープライズ向けのVertex AI Agent Engineなど、多様な環境にデプロイできます。
  • 組み込みの評価とデバッグ: エージェントの応答品質や処理プロセスを体系的に評価する機能が組み込まれています。特に、開発UI adk web ではエージェントの思考プロセス(Chain of Thought)がリアルタイムで可視化され、デバッグが非常に容易です。
  • 責任あるAI (Responsible AI) の実装: ユーザー入力を検証したり、不適切な出力をフィルタリングしたりするための「ガードレール」を簡単に実装でき、安全で信頼性の高いエージェント構築を支援します。
マルチエージェントシステムの構築を示すADKフレームワークのアニメーションGIF

ADKを始めるには (Gemini 2.5対応版)

1. インストール

ADKはPythonパッケージとして提供されており、pipコマンドで簡単にインストールできます。

pip install google-adk

2. 基本的なエージェントの作成

ADKでは非常に簡潔なPythonコードでエージェントを定義できます。以下は、最新のgemini-2.5-flashモデルを使った基本的なエージェントの例です。

from google.adk.agents import Agent

# エージェントが使用する「ツール」となるPython関数を定義
def get_weather(city: str) -> dict:
    """指定された都市の現在の天気予報を取得します。"""
    # 実際にはここで天気APIを呼び出す
    mock_weather_db = {
        "newyork": {"status": "success", "report": "ニューヨークは晴れ、気温は25℃です。"},
        "london": {"status": "success", "report": "ロンドンは曇り、気温は15℃です。"},
        "tokyo": {"status": "success", "report": "東京は小雨、気温は18℃です。"},
    }
    city_normalized = city.lower().replace(" ", "")
    return mock_weather_db.get(
        city_normalized,
        {"status": "error", "error_message": f"'{city}'の天気情報は利用できません。"}
    )

# エージェントの定義
weather_agent = Agent(
    # 最新モデルを指定。より高度なタスクには "gemini-2.5-pro" も選択可能
    model="gemini-2.5-flash", 
    name="weather_agent",
    description="都市の天気に関する質問に答えるエージェント。",
    instruction="あなたはユーザーの質問に答え、都市の天気を教えることができる親切なアシスタントです。",
    # 作成した関数をツールとして登録
    tools=[get_weather],
)
  • ツールの定義: get_weather のような通常のPython関数を定義するだけで、LLMがその機能を理解し、必要な時に呼び出せるようになります。関数のdocstring("""..."""の部分)がLLMへの説明書になるため、明確に記述することが重要です。
  • エージェントの作成: Agent クラスに、使用するLLM、エージェントの役割、そして利用可能なツールを渡すだけで基本的なエージェントが完成します。

3. エージェントの実行とテスト

ADKには、開発サイクルを高速化するための便利な実行インターフェースが用意されています。

  • 開発UI (adk web): ブラウザ上で対話しながらエージェントをテストできます。思考プロセスがリアルタイムで表示されるため、デバッグに最適です。
  • ターミナル (adk run): コマンドラインで素早くエージェントと対話したい場合に便利です。
  • APIサーバー (adk api_server): エージェントをFastAPIベースのAPIとして公開し、他のアプリケーションから呼び出せるようにします。
ADK Web UIインターフェースのチャット画面

実践:マルチエージェントシステムの構築

ADKの真価は、複数のエージェントを連携させた「マルチエージェントシステム」で発揮されます。司令塔となるルートエージェントがユーザーからのリクエストを受け取り、タスクに応じて専門のサブエージェントに処理を委任します。

# ... (get_weather関数の定義は省略) ...

# 挨拶を専門に行うサブエージェント
greeting_agent = Agent(
    model="gemini-2.5-flash",
    name="greeting_agent",
    description="ユーザーへの簡単な挨拶や自己紹介を担当する。",
    instruction="あなたの唯一の仕事は、ユーザーにフレンドリーな挨拶を返すことです。",
)

# 全体を統括するルートエージェント
root_agent = Agent(
    model="gemini-2.5-flash",
    name="coordinator_agent",
    description="天気に関するリクエストを処理し、挨拶は専門家に委任する司令塔。",
    instruction="""あなたはチームを調整する司令塔です。
- ユーザーの入力が「こんにちは」などの挨拶であれば、'greeting_agent'に処理を委任してください。
- ユーザーの入力が天気に関する質問であれば、自分で'get_weather'ツールを使って回答してください。
- それ以外の話題については、対応できない旨を伝えてください。""",
    tools=[get_weather],
    # 作成したサブエージェントを登録
    sub_agents=[greeting_agent],
)

この構成では、ユーザーが「こんにちは」と入力すると、root_agentはそれが挨拶であると判断し、greeting_agentに処理を自動的に委任します。一方、「東京の天気は?」と尋ねると、自身のget_weatherツールを実行します。このように、LLMが各エージェントのdescriptioninstructionを解釈し、自律的にタスクを振り分けるのが特徴です。

エコシステムの拡大:Agent2Agent (A2A) プロトコル

GoogleはADKと同時に、Agent2Agent (A2A) プロトコルというオープンな標準仕様も提唱しています。これは、ADK、LangChain、CrewAIなど、異なるフレームワークで構築されたエージェント同士が相互に通信するための共通言語です。

A2Aプロトコルの登場により、特定のベンダーやフレームワークにロックインされることなく、様々なエージェントを組み合わせて、より広範で強力なAIシステムを構築する未来が開かれつつあります。発表から数ヶ月で参加パートナーは100社以上に拡大しており、業界標準としての地位を確立し始めています。

デプロイオプション:ローカルからクラウドへ

開発したエージェントは、目的に応じて様々な環境にデプロイできます。

  • ローカル実行: 開発やデバッグ段階では、adk webadk runで手軽に実行できます。
  • コンテナ化 (Docker): エージェントをDockerコンテナとしてパッケージ化し、オンプレミスや任意のクラウド環境で実行できます。
  • サーバーレス (Cloud Run): Google Cloudのサーバーレス環境であるCloud Runにデプロイすれば、トラフィックに応じて自動でスケールするAPIとして公開できます。
  • フルマネージド (Vertex AI Agent Engine): エンタープライズレベルのセキュリティ、スケーラビリティ、監視機能が求められる本番環境には、Google Cloudの完全マネージドサービスであるAgent Engineが最適です。GitHubリポジトリから直接デプロイする機能もサポートされ、CI/CDパイプラインとの連携も容易です。
Vertex AI Agent Engineのアーキテクチャ図

まとめ

GoogleのAgent Development Kit (ADK)は、単なる開発ツールキットではなく、AIエージェントの設計、テスト、デプロイ、運用までをカバーする包括的なエコシステムです。シンプルなコードで始められ、企業の複雑な要求にも応えられるスケーラビリティを両立している点が最大の魅力です。今後、A2Aプロトコルと共に、AIエージェント開発の中心的な役割を担っていくことが期待されます。

参考リソース