
GoogleのAgent Development Kit(ADK)のQuick Startをやってみた!
GoogleのAgent Development Kitとは
Google Cloud NEXT 2025において、Agent Development Kit(ADK)を発表されました。
こちらのドキュメントを元に、特徴を翻訳すると以下の通りです!今話題のMCPとの連携も含めたAIエージェント開発のSDKというところでしょうか。LLMプロバイダーが提供している点、OpenAI Agents SDKと似ていますね。
特徴 | 説明 |
---|---|
設計によるマルチエージェント | 複数の専門エージェントを階層的に組み合わせることで、モジュール式でスケーラブルなアプリケーションを構築できます。複雑な連携と委任を可能にします。 |
豊富なモデルエコシステム | ニーズに最適なモデルを選択できます。ADKはGeminiやVertex AI Model Gardenからアクセス可能な任意のモデルで動作します。また、このフラメワークはLiteLLM統合を提供し、Anthropic、Meta、Mistral AI、AI21 Labsなど多くのプロバイダーから幅広いモデルを選択できます! |
豊富なツールエコシステム | エージェントに多様な機能を装備:事前構築されたツール(検索、コード実行)、Model Context Protocol(MCP)ツールの使用、サードパーティライブラリ(LangChain、LlamaIndex)の統合、または他のエージェントをツールとして使用(LangGraph、CrewAIなど)できます。 |
組み込みストリーミング | ADKの独自の双方向音声・映像ストリーミング機能により、人間のような会話でエージェントとやり取りできます。数行のコードだけで、テキストを超えた豊かなマルチモーダル対話へと移行し、エージェントとの作業方法を変革する自然なインタラクションを作成できます。 |
柔軟なオーケストレーション | ワークフローエージェント(Sequential 、Parallel 、Loop )を使用して予測可能なパイプラインを定義するか、LLM駆動の動的ルーティング(LlmAgent 転送)を活用して適応的な振る舞いを実現します。 |
統合された開発者エクスペリエンス | 強力なCLIとビジュアルWebUIを使用して、ローカルで開発、テスト、デバッグを行います。イベント、状態、エージェントの実行をステップバイステップで検査できます。 |
組み込み評価機能 | 事前定義されたテストケースに対して、最終的な応答品質とステップバイステップの実行軌跡の両方を評価することで、エージェントのパフォーマンスを体系的に評価します。 |
簡単なデプロイ | エージェントをコンテナ化し、どこにでもデプロイできます。 |
ドキュメントはこちらです。
Agent Development Kit (ADK) is a flexible and modular framework for developing and deploying AI agents. ADK can be used with popular LLMs and open-source generative AI tools and is designed with a focus on tight integration with the Google ecosystem and Gemini models. ADK makes it easy to get started with simple agents powered by Gemini models and Google AI tools while providing the control and structure needed for more complex agent architectures and orchestration.
エージェント開発キット(ADK)は、 AIエージェントの開発と導入のための柔軟でモジュール化されたフレームワークです。ADKは、一般的なLLMやオープンソースの生成AIツールと併用でき、GoogleエコシステムおよびGeminiモデルとの緊密な統合に重点を置いて設計されています。ADKは、 GeminiモデルとGoogle AIツールを搭載したシンプルなエージェントを簡単に使い始めることができるだけでなく、より複雑なエージェントアーキテクチャとオーケストレーションに必要な制御と構造も提供します。
adkのリポジトリはこちらです。
Quick Startをやってみる
こちらをもとにQuickStartをやってみます。uvコマンドを使用する形に読み替えています。
プロジェクトを初期化します。
uv init
adkをインストールします。
uv add google-adk
uv sync
エージェントのソースコードのディレクトリを作成します。
mkdir -p src/multi_tool_agent
エージェントのロジックを記載していきます。
from . import agent
以下のツールをもったAIエージェント構築します。
- 天気を取得する
- 関数自体はNew Yorkだけ返すようにモックされています
- 現在時刻を取得する
import datetime
from zoneinfo import ZoneInfo
from google.adk.agents import Agent
def get_weather(city: str) -> dict:
"""Retrieves the current weather report for a specified city.
Args:
city (str): The name of the city for which to retrieve the weather report.
Returns:
dict: status and result or error msg.
"""
if city.lower() == "new york":
return {
"status": "success",
"report": (
"The weather in New York is sunny with a temperature of 25 degrees"
" Celsius (41 degrees Fahrenheit)."
),
}
else:
return {
"status": "error",
"error_message": f"Weather information for '{city}' is not available.",
}
def get_current_time(city: str) -> dict:
"""Returns the current time in a specified city.
Args:
city (str): The name of the city for which to retrieve the current time.
Returns:
dict: status and result or error msg.
"""
if city.lower() == "new york":
tz_identifier = "America/New_York"
else:
return {
"status": "error",
"error_message": (
f"Sorry, I don't have timezone information for {city}."
),
}
tz = ZoneInfo(tz_identifier)
now = datetime.datetime.now(tz)
report = (
f'The current time in {city} is {now.strftime("%Y-%m-%d %H:%M:%S %Z%z")}'
)
return {"status": "success", "report": report}
root_agent = Agent(
name="weather_time_agent",
model="gemini-2.0-flash-exp",
description=(
"Agent to answer questions about the time and weather in a city."
),
instruction=(
"I can answer your questions about the time and weather in a city."
),
tools=[get_weather, get_current_time],
)
Google AI Studioを使います。Vertex AIを使う場合はコメントアウトしている箇所を利用するのが良いと思います。
Google AI Studioの https://aistudio.google.com/apikey でAPIキーを発行します。
発行したAPIキーを設定します。
# If using Gemini via Google AI Studio
GOOGLE_GENAI_USE_VERTEXAI="False"
GOOGLE_API_KEY="paste-your-actual-key-here"
# # If using Gemini via Vertex AI on Google CLoud
# GOOGLE_CLOUD_PROJECT="your-project-id"
# GOOGLE_CLOUD_LOCATION="your-location" #e.g. us-central1
# GOOGLE_GENAI_USE_VERTEXAI="True"
src ディレクトリにcd(移動)します
.
├── main.py
├── pyproject.toml
├── README.md
├── src # <-- ここ
│ └── multi_tool_agent
│ ├── __init__.py
│ ├── .env
│ └── agent.py
└── uv.lock
localhost:8000でPlaygroundが起動しました。
$ uv run adk web
INFO: Started server process [32629]
INFO: Waiting for application startup.
+-----------------------------------------------------------------------------+
| ADK Web Server started |
| |
| For local testing, access at http://localhost:8000. |
+-----------------------------------------------------------------------------+
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
先ほど作成したAIエージェントを指定します。
new yorkの今日の天気は?
で送信してみると、レスポンスが返却されました!Playgroundには海外ベンダーのChatUIでありがちな補完確定で送信される問題がありますね...
チャットUIからそれぞれイベントを確認してみます
weather_time_agent -> get_weatherがどう呼び出された(引数など)かが、UI上から確認できますね。
次のイベントを確認してみます
次のイベントではweather_time_agent <- get_weatherで、ツール呼び出しの戻りが何かUI上から確認できます。
ChatUIにLangSmithやLangfuseでできるようなトレースの機能がついているのはとても便利ですね!
次にパリの時刻は何時ですか?
を聞いてみます。
ニューヨーク以外はモックされていないので回答としては正しいです!
こちらもツールへリクエストとレスポンスの内容がトレースできます。
次に音声入力を試してみます。ボタンを押して、適当に何か話すと、相手も音声で内容を返してきます。英語で返される or 英語まじりの日本語の応答が返ることが多かったです。こちらの内容は自分のUI上からトレースはできませんでした。
話した内容
「今日の天気はなんですか?」
「どちらの天気ですか?」
「ニューヨークで」
「しばらくお待ちください...ニューヨークの天気はトゥエンティファイで...」
ビデオの方も使えます!
ただ音声とビデオは会話が途切れたりするので安定はしませんでした。
ファイルが添付できるので、マルチモーダルも可能です!
さいごに
簡易ではありますが、ツール呼び出しをUIでトレース出来る点は非常に便利ですね。また音声入力、ビデオ入力も初期からサポートしていてさすがだなと思います!他にも気になる機能があるので追って試していきたいと思います!