ジェネラティブエージェンツの大嶋です。
「AIエージェントキャッチアップ #29 - Agent Development Kit (ADK)」という勉強会を開催しました。
generative-agents.connpass.com
アーカイブ動画はこちらです。
Agent Development Kit (ADK)
今回は、Googleが公開したAIエージェントのフレームワーク「Agent Development Kit (ADK)」について、公式ドキュメントを読んだり動かしたりしてみました。
ADKのGitHubリポジトリはこちらです。
公式ドキュメントはこちらです。
今回のポイント
ADKの概要
Agent Development Kit (ADK) は、Googleが公開したAIエージェントのフレームワークです。
ツールを使用するシンプルなAIエージェントから、ワークフロー、マルチエージェントなど、様々な構成をサポートしています。
Memory機能やデプロイ、評価といった機能も備えており、LLMアプリケーションのフルスタックなフレームワークと言えます。
基本的な使い方
ADKはpipコマンドでインストールできます。
pip install google-adk
基本的なエージェントの実装例は以下のようになります。
from google.adk.agents import Agent def get_weather(location: str) -> str: ... root_agent = Agent( name="weather_agent", model="gemini-2.0-flash", description=( "Agent to answer questions about the weather in a city." ), instruction=( "You are a helpful agent who can answer user questions about the weather in a city." ), tools=[get_weather], )
作成したエージェントは、コマンドラインから対話的に実行したり、ウェブインターフェースで利用したり、APIサーバーとして起動したりできます。
# コマンドライン実行 adk run <ディレクトリ名> # ウェブインターフェース起動 adk web # APIサーバー起動 adk api_server
ウェブインターフェース
ADKには組み込みのウェブインターフェースが用意されており、adk webコマンドで起動できます。
このインターフェースでは、テキストでのチャットや、LLMやツールの呼び出しの可視化などができます。
音声機能に対応したモデル(gemini-2.0-flash-live-001など)を使用することで、ブラウザ上での音声対話も可能です。

エージェントのプログラム上での実行
ADKが提供しているCLIコマンド、Web UI、APIサーバーではなく、Pythonのコード上からエージェントを実行する場合は、以下のようになります。
session_service = InMemorySessionService() APP_NAME = "weather_tutorial_app" USER_ID = "user_1" SESSION_ID = "session_001" session = session_service.create_session( app_name=APP_NAME, user_id=USER_ID, session_id=SESSION_ID ) runner = Runner( agent=root_agent, app_name=APP_NAME, session_service=session_service ) content = types.Content(role='user', parts=[types.Part(text="What is the weather like in London?")]) final_response_text = "Agent did not produce a final response." async for event in runner.run_async(user_id=USER_ID, session_id=SESSION_ID, new_message=content): if event.is_final_response(): if event.content and event.content.parts: final_response_text = event.content.parts[0].text break print(final_response_text)
まず、セッション(チャットのスレッドのようなもの)を管理するsession_serviceを準備してsessionを作成します。 その後、agentとsession_serviceをもとにrunnerを作成してrunner.run_asyncのようにしてエージェントを実行します。
マルチエージェント機能
ADKはマルチエージェントもサポートしています。 以下のようにsub_agentsを指定することで、必要に応じてサブエージェントが呼び出されます。
from google.adk.agents import Agent agent_team = Agent( : sub_agents=[sub_agent_1, sub_agent_2] )
ワークフローの実装
ADKでは、ワークフローの実装もサポートしています。
以下のようにしてワークフローを組むことができるとのことです。
from google.adk.agents.sequential_agent import SequentialAgent SequentialAgent(sub_agents=[sub_agent_1, sub_agent_2])
LangChain v0の頃に提供されていたSequentialChainを思い出しますね。
直列でのエージェントの連結以外にも、ループ・並列もサポートされており、カスタムのワークフローも実装できるようです。
その他
ADKでは「イベント」を基本単位として様々な処理が実行されているようです。
今回はこの「イベント」についてしっかり理解する時間はとれませんでしたが、実際にADKをうまく使う場合は重要かもしれません。
また、ADKにはエージェントの評価の機能もあります。
こちらも今回詳細まで確認できませんでしたが、さわってみると面白いかもしれません。
次回のご案内
以上、今回は「Agent Development Kit (ADK)」をキャッチアップしました。
次回は「AIエージェントキャッチアップ #30 - A2A (Agent2Agent)」ということで、エージェント連携のプロトコル「A2A (Agent2Agent)」がテーマです!
generative-agents.connpass.com
ご興味・お時間ある方はぜひご参加ください!
また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!