MENU

Agent Development Kit (ADK) 登場!100行でマルチモーダルAIエージェント開発を実現するGoogleの新ツールキット徹底解説

Agent Development Kit (ADK) 登場!100行でマルチモーダルAIエージェント開発を実現するGoogleの新ツールキット徹底解説
  • URLをコピーしました!

「AIエージェント開発、もっと直感的でパワフルにならないかな?」「特にマルチエージェントやマルチモーダルなものを作りたいけど、複雑すぎて時間がかかる…」そんな悩みを抱えていませんか? Google Cloudを利用している開発者なら、なおさらGoogleのエコシステムと緊密に連携できるフレームワークが欲しいと感じているかもしれません。

そんなあなたに朗報です!Googleがこれまでの本番環境でのエージェント開発経験を結集し、全く新しいオープンソースプロジェクト「 Agent Development Kit (ADK)」をリリースしました。ADKは、複雑なAIエージェント、特にマルチエージェントやマルチモーダルエージェントの開発を、より直感的かつ制御しやすくすることを目指しています。

モデルやデプロイ先に縛られず、既存ツールとの連携もスムーズ。まるで通常のソフトウェア開発のように、Pythonコードでエージェントの振る舞いを定義し、デバッグやバージョン管理も容易に行えます。さらに、ローカルでのテストやデバッグを加速するUIプレイグラウンドも内蔵。

この記事では、Agent Development Kit (ADK) の基本概念から、インストール、コア機能、高度なエージェント構築テクニック、開発支援ツールまで、Google Cloud Nextで発表された最新情報を交えながら、その全貌を解説します。

目次

Agent Development Kit (ADK) とは?初心者向け解説

ADKで何ができる?Google発フレームワークの全体像

Agent Development Kit(ADK)は、Googleが開発した、AIエージェントを開発し、デプロイするための柔軟でモジュール式のオープンソースフレームワークです。一般的な大規模言語モデル(LLM)やオープンソースの生成AIツールと組み合わせて使用でき、特にGoogleのエコシステムやGeminiモデルとの緊密な連携を重視して設計されています。

ADKを使用すると、シンプルなエージェント開発から、複雑なマルチエージェントアーキテクチャや高度なオーケストレーションまで、幅広い開発ニーズに対応できます。

ADKはエージェント開発のための包括的なキットです。主な機能は以下の通りです。

  • 柔軟なオーケストレーション: ワークフローエージェント(Sequential, Parallel, Loop)による予測可能なパイプライン、LLM駆動の動的ルーティング。
  • マルチエージェントアーキテクチャ: 専門サブエージェントを階層的に組み合わせ、モジュール性とスケーラビリティを向上。
  • 豊富なツールエコシステム: 組み込みツール、カスタム関数、サードパーティライブラリ連携、他エージェントのツール利用。
  • デプロイ準備: コンテナ化により、ローカル、Vertex AI Agent Engine、Cloud Run、Dockerなどへ容易にデプロイ。
  • 組み込み評価機能: 応答品質と実行ステップを体系的に評価 (adk eval)。
  • 責任あるエージェント構築: コールバック等を活用し、安全で信頼性の高いエージェント構築を支援。

ADKは、アイデア検証から本番運用まで、AIエージェント開発のライフサイクル全体をサポートします。

この動画では、Googleが新たにリリースしたオープンソースの「Agent Development Kit (ADK)」を紹介しています。ADKは、特にマルチエージェントやマルチモーダルなAIエージェントの開発を、より直感的かつ制御しやすくすることを目指したPython SDKです。

主な特徴として、Geminiモデルをはじめとする様々なLLMを選択できる「モデル非依存性」、ローカル環境からクラウドまで対応する「デプロイ非依存性」、既存ツールや他のフレームワークとも連携可能な「相互運用性」が挙げられています。

また、開発プロセスを従来のソフトウェア開発に近づける「コードファースト」のアプローチを採用し、クラスや関数によるエージェント定義、ネイティブな双方向音声・動画ストリーミング機能、ローカルでのテスト・デバッグを容易にするUIプレイグラウンド (adk webコマンドで起動) を内蔵している点が強調されています。

動画内では、ADKを使って旅行プランナーエージェント(アイデアを出すエージェントと予算をチェックするエージェントの2つのサブエージェントをオーケストレーションするメインエージェント)を30行程度のコードで構築し、ローカルUIでテキストおよび音声で対話するデモンストレーションが行われました。これにより、ADKのシンプルさと強力な機能が示されています。

ADKは、Googleの本番環境でのエージェント開発経験に基づいており、開発者が複雑で強力なAIエージェントを効率的に構築するための堅牢な基盤となることを目指しています。

なぜADK?既存フレームワークとの違いとメリット

LangChainやLlamaIndexなどの既存フレームワークがある中で、ADKが登場した背景には、Googleの強みと開発課題への対応があります。

ADKの主なメリットと特徴:

  1. Googleエコシステムとの親和性: Geminiモデル、Vertex AI、Google Cloudサービスとの緊密な連携を前提とし、Google Cloud環境に最適化。
  2. 「ソフトウェア開発」としてのエージェント構築: Pythonのクラス/関数ベースのコードファーストアプローチ。モジュール性、テスト容易性、バージョン管理、デバッグのしやすさを重視。
  3. 本番運用を見据えた機能: デプロイ容易性(コンテナ化、Cloud Run/Vertex AI Agent Engine対応)や評価機能 (adk eval) を初期から組み込み。
  4. ネイティブなマルチモーダル対応: 音声・映像の双方向ストリーミング機能をSDKコアに実装。
  5. 柔軟なモデル選択と相互運用性: Geminiに最適化しつつ、LiteLLM連携でGPTやClaude等100以上のLLMを利用可能。既存ツールとの連携も考慮。
  6. ローカル開発の容易さ: adk webコマンドで起動する開発UIプレイグラウンドにより、ローカルでの迅速なテスト・デバッグが可能。
開発UIでローカルでエージェントと対話。
出典:https://google.github.io/adk-docs/get-started/quickstart/

上の図は開発UIでローカルでエージェントと対話している様子です。

Googleは既存フレームワークの知見を活かし、より実践的でスケーラブル、本番運用に適したフレームワークとしてADKを提供しています。

ADKが目指す「ソフトウェア開発のような」エージェント構築

ADKの核心思想は「エージェント開発をソフトウェア開発のように感じられるようにする」ことです。AIエージェント開発を、エンジニアが慣れ親しんだ従来の方法論に近づけることを目指しています。

主なアプローチ:

  1. コードファースト開発: エージェントロジック等をPythonコードで直接記述。IDE、デバッガー、Gitなどを活用可能。
  2. クラスと関数ベース: エージェントやツールをPythonのクラスや関数として定義。オブジェクト指向の原則適用や継承が自然。
  3. モジュール性: マルチエージェントアーキテクチャを推奨。特定タスクに特化したエージェント(モジュール)を組み合わせ、開発・保守を容易化。
  4. テスト容易性: コードベースのためユニットテスト等を適用しやすい。組み込みの評価機能 (adk eval) も提供。
  5. デバッグのしやすさ: `adk web`コマンドで起動するローカル開発UIが強力な支援を提供。内部状態、イベントフロー、LLM/ツール連携をステップごとに追跡・可視化。
開発UIはエージェント内部のデバッグを支援します。
出典:https://github.com/google/adk-python

開発UIはエージェント内部のデバッグを支援します。

ADKは、AI特有の課題に対応しつつ、開発プロセスを確立されたソフトウェア工学の手法に近づけ、効率的で品質の高い、保守しやすいエージェント構築を目指しています。

ADKを始めよう!インストールから最初の実行まで

簡単インストール!pipコマンド1つで準備完了

ADKの利用開始は非常にシンプルです。Python 3.9以上の環境があれば、pipコマンド一つで基本的なインストールが完了します。

ターミナルを開き、以下のコマンドを実行してください。

pip install google-adk

これでADKコアライブラリと基本依存関係がインストールされます。

Gemini以外のLLMも利用する場合 (オプション):
GPTやClaudeなど他のLLMを利用予定なら、litellmもインストールします。

pip install litellm

この手軽さがADKの特徴です。

開発環境のセットアップ:仮想環境と依存関係

本格的な開発では、仮想環境を利用してプロジェクトごとに依存関係を管理することを強く推奨します。

1. 仮想環境の作成と有効化
プロジェクトディレクトリ内で仮想環境を作成・有効化します。

# プロジェクトディレクトリ作成と移動 (例)
mkdir my-adk-project
cd my-adk-project

# 仮想環境 (.venv) の作成
python -m venv .venv

# 仮想環境の有効化 (OSに応じて選択)
# macOS / Linux: source .venv/bin/activate
# Windows (cmd): .venv\Scripts\activate.bat
# Windows (PowerShell): .venv\Scripts\Activate.ps1

有効化されるとプロンプトに (.venv) が表示されます。

2. ADKと必要なライブラリのインストール
仮想環境内で pip を使ってインストールします。

pip install google-adk
# 必要に応じて pip install litellm など

3. 依存関係の管理
requirements.txt や poetry, pipenv を利用して、使用ライブラリとそのバージョンを記録・管理します。

requirements.txt の場合:

pip freeze > requirements.txt # 書き出し
pip install -r requirements.txt # 再現

poetry の場合:

poetry install # pyproject.toml からインストール

クリーンで再現性のある環境を維持することが、効率的な開発と共同作業、デプロイメントの鍵となります。

クイックスタート:マルチツールエージェントを作ってみる

ADKの基本を理解するため、都市の天気と時刻を取得する2つのツールを持つエージェントを作成します。

1. プロジェクト構造
parent_folder/multi_tool_agent/ 内に init.py, agent.py, .env を作成。

2. init.py

# multi_tool_agent/__init__.py
from . import agent # agent.py をインポート可能に

3. agent.py (エージェントとツール定義)

# multi_tool_agent/agent.py
import datetime
from zoneinfo import ZoneInfo
from google.adk.agents import Agent

# --- ツール1: 天気 (モック) ---
def get_weather(city: str) -> dict:
    """指定都市の天気予報(モック)を取得。"""
    print(f"--- ツール: get_weather ({city}) ---")
    mock_data = {"new york": "晴れ、25℃", "london": "曇り、15℃", "tokyo": "小雨、18℃"}
    city_lower = city.lower()
    if city_lower in mock_data:
        return {"status": "success", "report": f"{city}の天気は{mock_data[city_lower]}です。"}
    else:
        return {"status": "error", "error_message": f"{city}の天気情報はありません。"}

# --- ツール2: 時刻 (モック) ---
def get_current_time(city: str) -> dict:
    """指定都市の現在時刻(モック)を返す。"""
    print(f"--- ツール: get_current_time ({city}) ---")
    tz_map = {"new york": "America/New_York", "london": "Europe/London", "tokyo": "Asia/Tokyo"}
    city_lower = city.lower()
    if city_lower in tz_map:
        try:
            tz = ZoneInfo(tz_map[city_lower])
            now = datetime.datetime.now(tz)
            report = f'{city}の現在時刻は{now.strftime("%Y/%m/%d %H:%M:%S %Z%z")}です。'
            return {"status": "success", "report": report}
        except Exception as e:
            return {"status": "error", "error_message": f"時刻取得エラー({city}): {e}"}
    else:
        return {"status": "error", "error_message": f"{city}のタイムゾーン情報はありません。"}

# --- エージェント定義 ---
root_agent = Agent(
    name="weather_time_agent",
    model="gemini-1.5-flash-latest", # 使用するモデル
    description="都市の時刻と天気を答えるエージェント。",
    instruction="ユーザー指定の都市の天気や時刻を尋ねられたら、適切なツール(get_weather, get_current_time)を使って答えてください。対応都市はNY, London, Tokyoのみです。",
    tools=[get_weather, get_current_time] # 利用可能なツール
)

ポイント: ツール関数には型ヒントと詳細なDocstringを。Agent定義でツールを指定。

4. .env ファイル設定
APIキーなどを設定します(前のセクション参照)。

# multi_tool_agent/.env
GOOGLE_GENAI_USE_VERTEXAI="False"
GOOGLE_API_KEY="YOUR_API_KEY_HERE" # 実際のキーに置き換え

これで基本的なエージェントが準備できました。adk run multi_tool_agent や adk web で実行してみましょう。

プロジェクト構成:`agent.py`と`.env`ファイルの役割

ADKプロジェクトの基本構成要素(ディレクトリ構成)、agent.pyと.envの役割です。

(あなたの作業ディレクトリ)
└── parent_folder
    └── multi_tool_agent # エージェントパッケージ
        ├── __init__.py # パッケージマーカー
        ├── agent.py # ★ エージェントロジックとツール定義
        └── .env # ★ 環境設定と機密情報
この図は`agent.py`のエージェントが`.env`の設定に基づきLLMやツールと連携する流れを示しています。
出典:https://google.github.io/adk-docs/get-started/quickstart/

この図は`agent.py`のエージェントが`.env`の設定に基づきLLMやツールと連携する流れを示しています。

1. agent.py ファイル:エージェントの「設計図」
開発の核心部分。以下を記述します。

  • ライブラリインポート
  • ツール定義(Python関数):型ヒント詳細なDocstringがLLMの理解に不可欠。
  • エージェント定義(`Agent`クラス):name(一意名)、model(LLM)、description(能力説明)、instruction(LLMへの指示)、tools(利用ツールリスト)などを設定。

2. .env ファイル:環境ごとの「設定値」と「秘密鍵」
コードと分離して管理すべき環境依存・機密情報を格納。

  • 主な内容: APIキー、DB接続情報、GCP設定 (`GOOGLE_CLOUD_PROJECT`等)。
  • 形式: キー=値 形式。
  • 読み込み: ADKが起動時に自動で読み込み、環境変数として設定。
  • セキュリティ: 絶対にGit等でバージョン管理しない (.gitignoreに追加必須)。.env.exampleで必要項目を示すのが良い。

この役割分担を理解し、適切に構成することが、整理され安全で保守しやすいADKプロジェクトの基本です。

モデル設定:Gemini APIキーとVertex AIの選択方法

ADKエージェントがGeminiモデルと通信するには、主に2つの接続方法があり、.envファイルで設定します。

方法1:Google AI Studio APIキー
個人開発やプロトタイピング向け。

  1. Google AI StudioでAPIキーを取得・管理。
  2. .envに以下を記述: # .env ファイル GOOGLE_GENAI_USE_VERTEXAI=False GOOGLE_API_KEY=取得したAPIキーをここに貼り付け

方法2:Google Cloud Vertex AI
チーム開発、本番運用、Cloudサービス連携、高度なセキュリティが必要な場合に推奨。

  1. 前提: GCPアカウント/プロジェクト、Vertex AI API有効化、gcloud CLI設定、`gcloud auth login`認証。
  2. .envに以下を記述: # .env ファイル GOOGLE_GENAI_USE_VERTEXAI=True GOOGLE_CLOUD_PROJECT=あなたのGCPプロジェクトID GOOGLE_CLOUD_LOCATION=利用するリージョン (例: us-central1) APIキーは不要。`gcloud`認証情報等が使われます。

選択指針:

  • 手軽さ・個人・学習: Google AI Studio APIキー
  • チーム・本番・Cloud連携・セキュリティ: Vertex AI

プロジェクト要件に合わせて選択し、.envを正しく設定してください。

ローカル実行:ターミナルと開発UIでの動作確認

ADKエージェントの動作は、ローカル環境で簡単に確認できます。エージェントディレクトリの親ディレクトリからコマンドを実行します。

実行方法1:開発UI (adk web) – 推奨
インタラクティブなテストとデバッグに最適。

  1. 親ディレクトリで `adk web` 実行。
  2. 表示URL (`http://127.0.0.1:8000` 等) をブラウザで開く。
  3. UI左上で対象エージェントを選択。
  4. テキストボックスでチャット。
  5. 右側タブで内部動作(イベント、リクエスト/レスポンス)を確認。
開発UIでのチャット対話例。
出典:https://google.github.io/adk-docs/get-started/quickstart/

開発UIでのチャット対話例。

出典:https://google.github.io/adk-docs/get-started/quickstart/

関数呼び出しの詳細を確認。

対応モデルでの音声入力。
出典:https://google.github.io/adk-docs/get-started/quickstart/

上記は対応モデルでの音声入力です。

実行方法2:ターミナル (adk run)
シンプルなテキストベース対話。

  1. 親ディレクトリで adk run 実行。
  2. User: プロンプトに入力、Agent: に応答表示。
  3. Cmd/Ctrl + C で終了。
ターミナルでの対話実行例。
出典:https://google.github.io/adk-docs/get-started/quickstart/

上記はターミナルでの対話実行例です。

実行方法3:APIサーバー (adk api_server)
ローカルAPIサーバーとして起動。HTTP経由でテスト。

  1. 親ディレクトリで `adk api_server` 実行。
  2. FastAPIサーバーが起動し、エンドポイント(例: /invoke/)利用可能に。
  3. `curl`等でPOSTリクエスト送信。詳細はローカルテストドキュメント参照。
APIサーバー起動時の出力例。
出典:https://google.github.io/adk-docs/get-started/quickstart/

上記はAPIサーバー起動時の出力例です。

これら方法で、開発フェーズに応じた効率的なローカルテスト・デバッグが可能です。

ADKのコア機能:エージェント構築の構成要素

エージェント定義:`Agent`クラスの基本パラメータ解説

ADKエージェント構築の中心は Agentクラス(LLM利用時は LlmAgent)です。インスタンス化時のパラメータで特性や能力を定義します。

# 必要なインポート (例)
from google.adk.agents import LlmAgent
# ツール関数、サブエージェント、コールバックは別途定義前提

# LlmAgent定義例(主要パラメータ)
root_agent_example = LlmAgent(
    name="エージェント識別名",         # 必須: 一意な名前
    model="使用するLLMモデル",          # LlmAgent必須: 例 "gemini-1.5-flash-latest"
    description="エージェントの能力説明", # 推奨: マルチエージェントで重要
    instruction="LLMへの指示(プロンプト)", # 推奨: 応答品質に影響大
    tools=[ツール関数1],             # オプション: 利用可能ツールリスト
    sub_agents=[サブエージェント1],    # オプション: 委任可能なサブエージェントリスト
    output_key="状態保存キー名",       # オプション: 応答を状態で保存
    before_model_callback=入力チェック関数, # オプション: LLM呼び出し前コールバック
    before_tool_callback=引数チェック関数  # オプション: ツール実行前コールバック
)

主要パラメータ:

  • name (必須): 一意な識別子。
  • model (LlmAgent必須): 使用LLM。Gemini以外はLiteLlmでラップ。
  • description (推奨): 能力説明。マルチエージェントでの委任判断に利用。
  • instruction (推奨): LLMへの指示書。役割、振る舞い、ツール使用法、制約などを記述。
  • tools (オプション): 直接使える能力(関数、組み込みツール等)リスト。
  • sub_agents (オプション): タスク委任可能な他エージェントリスト。Auto Flow(自動委任)を有効化。
  • output_key (オプション): 最終応答テキストをセッション状態に保存するキー。
  • コールバック関数 (オプション): before_model_callback, before_tool_callback等で処理フローに介入。

これらのパラメータ設定でエージェントの基本動作を定義します。

ツール活用術:カスタム関数からGoogle Searchまで

ツール」はADKエージェントが具体的アクションを実行する機能部品です。

1. カスタムPython関数
最も基本的な方法。独自のロジックを実装。

# 例:加算ツール
def add_numbers(a: int, b: int) -> int:
"""二つの整数を加算します。(詳細なDocstringが重要)"""
print(f"--- ツール: add_numbers ({a}, {b}) ---")
return a + b
# Agent定義時に tools=[add_numbers] として渡す

重要点: 型ヒント、詳細なDocstring、シンプルな入出力、エラーハンドリング。

2. ADK組み込みツール
google_search などが用意されています。

from google.adk.tools import google_search
search_agent = Agent(..., tools=[google_search])

別途APIキー設定等が必要な場合あり。

3. OpenAPI仕様からのツール生成
OpenAPI仕様ファイルからAPI呼び出しツールを自動生成可能。

4. サードパーティライブラリ統合
LangChain等で定義されたツールも利用可能。

5. 他エージェントのツール利用
sub_agentsパラメータで指定しタスク委任。

設計ヒント:

  • 粒度: 具体的で単一タスクに。
  • 状態アクセス (ToolContext): 会話文脈が必要なら最後の引数に tool_context: ToolContext を定義し tool_context.state でアクセス。

柔軟なツールシステムでLLMの能力を拡張し、高度なエージェントを構築します。

オーケストレーション:柔軟なワークフロー定義とLLM駆動ルーティング

ADKはエージェント間の連携やタスク進行(オーケストレーション)を柔軟に制御できます。

1. ワークフローエージェントによる予測可能なパイプライン
処理順序が決まっている場合、SequentialAgent, ParallelAgent, LoopAgent を使用。サブエージェントをルール通りに実行します。

  • SequentialAgent サブエージェントを順番に実行。
  • ParallelAgent 複数サブエージェントを並行実行。
  • LoopAgent 条件を満たすまでサブエージェントを繰り返し実行。
この図はワークフローエージェントで処理の流れを構造化したものです。
出典:https://google.github.io/adk-docs/agents/

上の図はワークフローエージェントで処理の流れを構造化したものです。

2. LLM駆動の動的ルーティング (LlmAgentによる委任)
状況に応じて柔軟に動作を変えたい場合は、親 LlmAgent がLLMに判断させ、最適なサブエージェントに処理を委任(転送)します。

  • 設定: 親 `LlmAgent` の `sub_agents` にサブエージェントリストを指定。
  • 動作: 親LLMがユーザー入力、自身の指示、サブエージェントの`description`を考慮し委任先を決定。ADKが選択されたサブエージェントを呼び出す。

Agent Development Kit (ADK) による高度なエージェント構築

複数LLMの活用:LiteLLM連携によるモデル選択の自由度

ADKはモデル非依存性を提供し、LiteLLMとの統合により100種類以上のLLMを利用可能です。

メリット: 性能最適化、コスト効率、機能活用、可用性・冗長性。

利用方法:

  1. pip install litellm を実行
  2. 利用LLMのAPIキーを環境変数.envに設定。
  3. LlmAgent定義時、modelパラメータにLiteLlmクラスでモデル識別子(例: "openai/gpt-4o")をラップして指定。
from google.adk.agents import LlmAgent
from google.adk.models.lite_llm import LiteLlm

agent_gpt = LlmAgent( name="gpt_agent", model=LiteLlm(model="openai/gpt-4o"), ...)

これにより、コアロジックを変更せず、様々なLLMを柔軟に選択・変更できます。

エージェントチームとデリゲーション:タスクの専門化と自動ルーティング

複雑なタスクには、専門エージェントが協力するマルチエージェントアーキテクチャが有効です。ADKはこれをタスク委譲(デリゲーション)と共にサポートします。

利点: モジュール性向上、専門化による効率/性能最適化、スケーラビリティ、複雑な協調・委譲。

ADKでの実装:

  1. 専門エージェント定義: 各タスク担当エージェントをAgentで定義。descriptionに能力を明確・簡潔に記述(委任判断に最重要)。
  2. 親エージェント定義とsub_agents指定: タスク振り分け役の親エージェントを定義し、sub_agentsにサブエージェントリストを指定。instructionで委任方針を指示。
# greeting_agent, weather_checker は定義済みとする
coordinator_agent = LlmAgent(
    name="Coordinator",
    instruction="内容に応じて適切なサブエージェントに委任...",
    sub_agents=[greeting_agent, weather_checker] # サブエージェント指定
)

自動デリゲーション(Auto Flow):
sub_agents指定により有効化。親LLMがユーザー入力とサブエージェントのdescriptionを考慮し、最適な委任先を自動判断。ADKが処理を転送します。

コーディネーターがリクエストを受け、専門サブエージェントに委譲。役割定義を通じて効率的で管理しやすいマルチエージェントシステムを構築できます。

状態管理とメモリ:SessionService, ToolContext, output_key

エージェントが過去の対話や設定を記憶する「メモリ」機能(状態管理)は自然な対話に不可欠です。ADKはSessionService, ToolContext, output_keyでこれを実現します。

1. SessionService:セッション情報管理

  • 役割: 各セッションの会話履歴 (`contents`)セッション状態 (`state` – 辞書) を管理。
  • `InMemorySessionService`: テスト用のメモリ実装(再起動で消失)。本番用はカスタム実装要。
from google.adk.sessions import InMemorySessionService
session_service = InMemorySessionService()
session = session_service.create_session(app_name="app", user_id="user", session_id="s1")

2. ToolContext:ツールからの状態アクセス

  • 使い方: ツール関数の最終引数に `tool_context: ToolContext` を定義。ADKが自動注入。
  • アクセス: `tool_context.state` で状態辞書を読み書き。
from google.adk.tools.tool_context import ToolContext

def my_tool(arg1: str, tool_context: ToolContext):
    pref = tool_context.state.get("preference", "default") # 読み取り
    tool_context.state["last_used"] = "my_tool" # 書き込み

3. output_key:最終応答の自動保存

  • 使い方: `Agent`定義時に `output_key=”キー名”` を指定。
  • 動作: エージェントの最終応答テキストを指定キーで `session.state` に自動保存(上書き)。
agent = LlmAgent(..., output_key="last_agent_response")

これらでエージェントに記憶を持たせ、文脈に応じた対話を実現します。

安全性とガードレール:コールバックによる動作制御 (before_model/before_tool)

エージェントの動作を制御し安全性を確保するガードレールは重要です。ADKはコールバック関数で処理フローに介入できます。特にbefore_model_callbackとbefore_tool_callbackが有効です。

1. before_model_callback:LLM入力の事前チェック

  • タイミング: LLMリクエスト送信直前
  • 目的: 入力検証、不適切リクエストのブロック/修正。
  • 実装: `callback_context`, `llm_request` を引数に取る関数定義。
    • ブロック: 問題あれば`LlmResponse`を`return`。LLM呼び出しスキップ。
    • 許可: 問題なければ`None`を`return`
# (概念コード)
def check_input_cb(callback_context, llm_request):
    if is_inappropriate(llm_request):
        return LlmResponse(...) # ブロック応答
    return None # 許可

# Agent(..., before_model_callback=check_input_cb)

2. before_tool_callback:ツール実行前の引数チェック

  • タイミング: ツール関数実行直前
  • 目的: LLM生成のツール引数を検証し、実行阻止/引数修正。
  • 実装: `tool`, `args`, `tool_context` を引数に取る関数定義。
    • ブロック/上書き: 問題あれば辞書 (Dict) を`return`。これがツール結果となり、実ツールはスキップ。
    • 許可: 問題なければ`None`を`return`。`args`修正も可。
# (概念コード)
def check_tool_args_cb(tool, args, tool_context):
    if tool.name == "risky_tool" and args.get("param") == "bad_value":
        return {"status": "error", "message": "実行がブロックされました"} # エラー辞書を返す
    return None # 許可

# Agent(..., before_tool_callback=check_tool_args_cb)

両方を指定し、多層ガードレールも可能です。これらコールバックは、安全で信頼性の高いADKエージェント構築に不可欠です。

Agent Development Kit (ADK) の今後の展望とコミュニティ

ライセンスとプレビュー段階について

ADKはオープンソース(Apache 2.0 License)です。ライセンス詳細はリポジトリ内のLICENSEファイル参照。

現在(Next ’24時点)、ADKはプレビュー (Pre-GA) 段階です。Google Cloudのサービス規約「Pre-GA Offerings Terms」に従います。

  • 現状有姿 (As Is): 機能変更・廃止の可能性あり。
  • 限定サポート: サポートが限定的。
  • 本番利用非推奨: 主に評価・実験・デモ目的。
  • バグ報奨プログラム非対象。

プレビュー期間中のフィードバックは正式リリースに向けた改善に役立てられます。

貢献方法とコミュニティ参加

ADKはオープンソースであり、コミュニティからの貢献を歓迎します。
貢献の種類: バグ報告、機能リクエスト、ドキュメント改善、コード貢献、サンプル追加、コミュニティ議論参加など。

貢献を始める前に: メインリポジトリのCONTRIBUTING.md (貢献ガイドライン) を確認してください。

主なコミュニティ・報告先:

コミュニティへの参加と貢献を通じて、ADKを共に発展させることができます。

関連リンクとドキュメント

ADKに関する詳細情報と学習リソースです。

これらのリソースを活用し、ADKでのエージェント開発を進めてください。

本記事をご覧いただいた方にはこちらの資料がおすすめです!

【目的別】生成AIの使い方がわかる! 生成AI活用事例集カバー画像

【目的別】生成AIの使い方がわかる! 生成AI活用事例集

「生成AIって色々ありすぎてよくわからない・・・」という方向けに、汎用型生成AIであるChatGPT、Claude、Gemini、Perplexityの比較や、画像、音声、動画生成のツールなどを、どの様な場面のときにどのように使用するのが効果的かという点を重点的に、事例をまとめて紹介いたします。これを読めば、生成AIの効果的な使い方がわかります!本資料は、

  • 生成AIとはなに?
  • ChatGPTを使ってみよう
  • 生成AIを業務で活用する
  • 生成AIツールを使いこなす
  • 生成AI利用の注意点

といった内容の構成になっており、ChatGPTや生成AIの基礎から、業務上の実務的な使用方法までをお伝えする資料です。

このような方にオススメ

  • ChatGPTや生成AIの基礎を知りたい方
  • ChatGPTや生成AIの基礎は理解しているが、有効な活用方法を知りたい方
  • 生成AIの効果的な業務活用方法を知りたい方
Agent Development Kit (ADK) 登場!100行でマルチモーダルAIエージェント開発を実現するGoogleの新ツールキット徹底解説

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次