🐶
GoogleのAgent Development Kitを使ってみた
はじめに
Google が Agent Development Kit(ADK)という AI エージェントフレームワークをオープンソースで公開しました。このフレームワークは、Gemini モデルと Google のエコシステムと緊密に統合されており、AI エージェントの開発とデプロイを簡単に行うことができます。
この記事では、公式のドキュメントを参考にしながら、サンプルコードを改造して、天気と時刻を取得、犬の画像を取得できるエージェントを作成してみます。
Agent Development Kit とは
Agent Development Kit は以下のような特徴を持つフレームワークです:
- Gemini モデルを使用した AI エージェントの開発が可能
- 柔軟なワークフローの構築(Sequential、Parallel、Loop など)
- マルチエージェントシステムの構築
- 豊富なツールエコシステム(検索、コード実行など)
- デプロイメントの容易さ(ローカル、Vertex AI、Cloud Run など)
- 評価機能の組み込み
セットアップ
環境構築
まず、uv を使用して環境を構築します。
# プロジェクトの初期化
uv init
# 仮想環境の作成と有効化
uv venv
# 仮想環境の有効化(macOS/Linux)
source .venv/bin/activate
# ADK のインストール
uv pip install google-adk
# workspace の作成
uv init multi_tool_agent
プロジェクトの作成
基本的なプロジェクト構造は以下のようになります。
作成
./
multi_tool_agent/
__init__.py
agent.py
.env
簡単なエージェントの作成
このエージェントは以下の機能を持っています
- 指定された都市の天気を取得
- 指定された都市の現在時刻を取得
- ランダムな犬の画像を取得(Dog API 連携。OpenAPI 使用)
今回は、Agent の設定と、ツールの設定を行います(今回は機能が多いので、これに限定します)
__init__.py の作成
from . import agent
agent.py の作成
import datetime
from zoneinfo import ZoneInfo
from google.adk.agents import Agent
from google.adk.tools.openapi_tool.openapi_spec_parser.openapi_toolset import OpenAPIToolset
# Dog APIのOpenAPI仕様
dog_api_spec = """
{
"openapi": "3.0.0",
"info": {
"title": "Dog API",
"version": "1.0.0",
"description": "犬の画像を取得するAPI"
},
"servers": [
{
"url": "https://dog.ceo/api",
"description": "Dog API Server"
}
],
"paths": {
"/breeds/image/random": {
"get": {
"summary": "ランダムな犬の画像を取得",
"operationId": "getRandomDogImage",
"description": "すべての犬種からランダムな画像を1枚取得します",
"responses": {
"200": {
"description": "成功レスポンス",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "画像のURL"
},
"status": {
"type": "string",
"description": "レスポンスのステータス"
}
}
}
}
}
}
}
}
}
}
}
"""
def get_weather(city: str) -> dict:
"""指定された都市の天気を取得します"""
weather_data = {
"new york": "晴れ、気温25度",
"tokyo": "曇り、気温20度",
"london": "雨、気温15度",
"paris": "晴れ、気温22度",
"sydney": "晴れ、気温28度"
}
city_lower = city.lower()
if city_lower in weather_data:
return {
"status": "success",
"report": f"{city}の天気は{weather_data[city_lower]}です。"
}
return {
"status": "error",
"error_message": f"'{city}'の天気情報は利用できません。"
}
def get_current_time(city: str) -> dict:
"""指定された都市の現在時刻を取得します"""
timezone_data = {
"new york": "America/New_York",
"tokyo": "Asia/Tokyo",
"london": "Europe/London",
"paris": "Europe/Paris",
"sydney": "Australia/Sydney"
}
city_lower = city.lower()
if city_lower in timezone_data:
tz = ZoneInfo(timezone_data[city_lower])
now = datetime.datetime.now(tz)
return {
"status": "success",
"report": f"{city}の現在時刻は{now.strftime('%Y-%m-%d %H:%M:%S %Z')}です。"
}
return {
"status": "error",
"error_message": f"'{city}'のタイムゾーン情報は利用できません。"
}
# Dog APIのツールセットを作成
dog_api_toolset = OpenAPIToolset(
spec_str=dog_api_spec,
spec_str_type="json"
)
dog_api_tools = dog_api_toolset.get_tools()
# エージェントの作成
root_agent = Agent(
name="weather_time_dog_agent",
model="gemini-2.0-flash-exp",
description="天気、時刻、そしてランダムな犬の画像を取得できるエージェント",
instruction="都市の天気と時刻に関する質問に答えることができます。また、「犬の画像を見せて」と言われたら、ランダムな犬の画像を表示します。",
tools=[get_weather, get_current_time] + dog_api_tools
)
認証設定
.env
ファイルを作成し、以下のように設定します:
# Google AI Studioを使用する場合
GOOGLE_GENAI_USE_VERTEXAI="False"
GOOGLE_API_KEY="your-api-key-here"
# Vertex AIを使用する場合
# GOOGLE_CLOUD_PROJECT="your-project-id"
# GOOGLE_CLOUD_LOCATION="your-location"
# GOOGLE_GENAI_USE_VERTEXAI="True"
エージェントの実行
エージェントを実行するには、以下の 3 つの方法があります:
adk web # ブラウザで開発用 UI を確認
adk run multi_tool_agent # エージェントを実行
adk api_server # API サーバーを実行
動作確認
おわりに
ADK は、Google の強力な AI 機能を活用しながら、簡単に AI エージェントを開発できるフレームワークです。今回は基本的な使い方を紹介しましたが、より高度な機能として以下のようなものもあります:
- マルチエージェントシステムの構築
- 複雑なワークフローの実装
- カスタムツールの追加
- Vertex AI や Cloud Run へのデプロイ
これらの機能を活用することで、より高度な AI アプリケーションを開発することができます。
基本的な使用感は OpenAI の Agent SDK と対して差は感じないですが、Google のエコシステムとの緊密な統合ができるので、その辺りは良いですね。
Discussion