始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Run the agent using the ADK's Web UI
/ 25
Run an agent programmatically
/ 25
Chat with an agent via the command-line interface
/ 25
Preview a multi-agent example
/ 25
エージェント アプリケーションを構築する開発者にとって、Agent Development Kit には、次のような重要なメリットがあります。
SequentialAgent、ParallelAgent、LoopAgent)を使用して、予測可能なパイプラインのワークフローを定義します。また、LLM による動的ルーティング(LlmAgent 転送)を活用して適応性のある動作を実現します。他の生成 AI SDK やエージェント フレームワークでも、モデルのクエリやツールによるモデルの強化は可能ですが、複数のモデル間の動的な調整には、開発者によるかなりの作業が必要になります。
Agent Development Kit は、これらのツールよりも高レベルのフレームワークを提供します。これにより、複数のエージェントを簡単に連携させて、複雑ながらも保守が容易なワークフローを実現できます。
また、これらの複雑なエージェント システムを Agent Engine のフルマネージド エンドポイントにデプロイでき、インフラストラクチャの割り当てとスケーリングが自動で行われるため、開発者はエージェントのロジックに集中できます。
このラボでは、検索ツールを利用できる単一のエージェントを作成します。作成したエージェントを、ADK のブラウザ UI、CLI チャット インターフェース、およびスクリプト内のプログラムによってテストします。
次の点について学びます。
こちらの手順をお読みください。ラボの時間は制限されており、一時停止することはできません。[ラボを開始] ボタンをクリックするとタイマーが開始され、Cloud リソースを利用できる時間が表示されます。
この Qwiklabs ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。一時的な認証情報が新しく提供されるため、ラボ受講中の Google Cloud Platform へのログインおよびアクセスにはその認証情報を使用してください。
このラボを完了するには、次のものが必要です。
注: すでに個人の GCP アカウントやプロジェクトをお持ちの場合でも、そのアカウントやプロジェクトはラボでは使用しないでください。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Google Cloud コンソール ウィンドウを選択した状態で、キーボードの G キーを押してから S キーを押して、Cloud Shell を開きます。または、Cloud コンソールの右上にある「Cloud Shell をアクティブにする」ボタン をクリックします。
[続行] をクリックします。
Cloud Shell を承認するよう求められたら、[承認] をクリックします。
Cloud Shell ターミナル パネルの右上にある「新しいウィンドウで開く」ボタン()をクリックします。
Cloud Shell ターミナルで、次のコマンドを入力して Cloud Shell エディタをホーム ディレクトリで開きます。
Cloud Shell ターミナルで次のコマンドを実行して、PATH 環境変数を更新し、ADK をインストールします。注: インストールする ADK のバージョンが、このラボで使用されるバージョンと一致するように、バージョンを指定してください。
次のコマンドを Cloud Shell ターミナルに貼り付けて、Cloud Storage バケットからファイルをコピーして解凍し、このラボのコードを含むプロジェクト ディレクトリを作成します。
次のコマンドでラボの追加要件をインストールします。
Google ADK はいくつかの基本コンセプトに基づいて、強力で柔軟になるように構築されています。
Session)のコンテキストを処理します。これには、履歴(Events)と、その会話のエージェントのワーキング メモリ(State)が含まれます。Cloud Shell エディタのファイル エクスプローラ ペインで、adk_project フォルダを見つけます。クリックして開きます。
このディレクトリには、my_google_search_agent、app_agent、llm_auditor の 3 つのディレクトリが含まれています。これらの各ディレクトリは、別個のエージェントを表します。エージェントをプロジェクト ディレクトリ内の独自のディレクトリに分離することにより、エージェントが整理されます。また、この分離によって Agent Development Kit はエージェントの存在を把握できるようになります。
my_google_search_agent をクリックして、エージェント ディレクトリを開きます。
このディレクトリには __init__.py ファイルと agent.py ファイルが含まれています。通常、__init__.py ファイルは、他の Python コードでインポートできる Python パッケージとしてディレクトリを識別するために使用されます。init.py ファイルをクリックして、その内容を表示します。
__init__.py ファイルには、agent.py ファイルからインポートする 1 行が含まれています。ADK はこれを使用して、このディレクトリをエージェント パッケージとして識別します。
agent.py ファイルをクリックします。このファイルはシンプルなエージェントで構成されています。強力なツールである Google 検索を使用してインターネットを検索する機能を提供します。このファイルについて、以下の点に注目してください。
google.adk からのインポート(Agent クラスと tools モジュールの google_search ツール)に注目してください。インポートした google_search ツールを使用するには、そのツールをエージェントに渡す必要があります。これを行うには、Agent オブジェクトの作成の最後に示された agent.py ファイルに次の行を貼り付けます。
ファイルを保存します。
ツールを使用すると、エージェントはテキストの生成以外の操作を実行できます。このケースでは、エージェントは google_search ツールを使用することにより、トレーニング データからすでに得ていた情報よりも詳細な情報を取得すべきなのはどのような場合かを判断できます。検索クエリを作成し、Google 検索を使用してウェブを検索し、その結果に基づいてユーザーに回答することができます。モデルが取得した追加情報に基づいて回答を生成することを「グラウンディング」と呼び、このプロセス全体を「検索拡張生成」または「RAG」と呼びます。
ADK でツールを使用する方法について詳しくは、ラボ「ツールで ADK エージェントを強化する」をご覧ください。
ADK には、エージェントの開発とテストに役立つようローカルで実行するように設計された開発 UI が含まれています。各エージェントが何をしているか、複数のエージェントがどのように相互作用しているかの可視化に役立ちます。このタスクでは、このインターフェースについて説明します。
エージェントを実行する場合、ADK は誰がモデル API 呼び出しをリクエストしているかを知る必要があります。この情報は、次の 2 つの方法で指定できます。
このラボでは、Vertex AI のアプローチを採用します。
Cloud Shell エディタのメニューで [View] > [Toggle Hidden Files] を選択して、隠しファイルを表示または非表示にします(ほとんどのファイル システムでは、ファイル名の先頭にピリオドが付いているファイルはデフォルトで非表示になっています)。このメニューで [Toggle Hidden Files] オプションを見つけるには、下にスクロールする必要がある場合があります。
Cloud Shell エディタのファイル エクスプローラ ペインで、adk_project/my_google_search_agent ディレクトリに移動します。
my_google_search_agent ディレクトリの .env ファイルを選択します。
次の値をファイル内の既存の値に上書きして貼り付けて、プロジェクト ID を含むようにファイルを更新します。
ファイルを保存します。
これらの変数は次の役割を果たします。
GOOGLE_GENAI_USE_VERTEXAI=TRUE は、Gemini API キー認証ではなく、Vertex AI を認証に使用することを示します。GOOGLE_CLOUD_PROJECT と GOOGLE_CLOUD_LOCATION は、モデル呼び出しを関連付けるプロジェクトとロケーションを指定します。MODEL は必須ではありませんが、ここに保存することによって、別の環境変数として読み込むことができるようになります。これは、さまざまなデプロイ環境でさまざまなモデルを試すのに便利な方法です。ADK の開発 UI またはコマンドライン チャット インターフェースを使用してエージェントをテストするときに、エージェントの「.env」ファイルが存在する場合、エージェントはそれを読み込んで使用します。存在しない場合は、ここで設定されたものと同じ名前の環境変数を見つけようとします。
Cloud Shell ターミナルで、次のコマンドを実行して、エージェント サブディレクトリがある adk_project ディレクトリに移動します。
次のコマンドを使用して Agent Development Kit 開発 UI を起動します。
出力
ウェブ インターフェースを新しいタブで表示するには、ターミナルの出力にある http://127.0.0.1:8000 リンクをクリックします。これにより、Cloud Shell インスタンスでローカルに実行されているこのアプリにプロキシ経由でリンクされます。
新しいブラウザタブが開き、ADK 開発 UI が表示されます。
左側の [Select an agent] プルダウンから、my_google_search_agent を選択します。
エージェントが Google 検索ツールを使用するように促すため、次の質問を入力します。
結果を見ると、エージェントはモデルのトレーニング日以降の最新情報を Google 検索で取得できていることがわかります。
左側のサイドバーで、デフォルトで [Trace] タブが表示されていることに注意してください。最後のクエリテキスト(What is some recent global news?)をクリックすると、クエリのさまざまな部分の実行にかかった時間のトレースが表示されます。これを使用して、ツール呼び出しを含むより複雑な実行をデバッグし、さまざまなプロセスが回答のレイテンシにどのように影響するかを把握できます。
エージェントの回答(または [Events] タブのリストにあるイベント)の横にあるエージェント アイコン()をクリックして、エージェントが返したイベントを検査します。これには、ユーザーに返された
content と、回答の基になった検索結果の詳細を示す groundingMetadata が含まれます。
開発 UI の探索が終了したら、このブラウザタブを閉じ、Cloud Shell ターミナルが表示されているブラウザタブに戻り、ターミナルのペインをクリックして Ctrl + C キーを押し、ウェブサーバーを停止します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
開発 UI はテストとデバッグには適していますが、本番環境での複数のユーザーによるエージェントの利用には適していません。
エージェントを大規模なアプリケーションの一部として実行するには、前のタスクでウェブアプリが処理した agent.py スクリプトにいくつかの追加コンポーネントを含める必要があります。次の手順に沿って、これらのコンポーネントを含むスクリプトを開き、確認します。
Cloud Shell ターミナルで次のコマンドを実行して、環境変数をエクスポートします。この方法を使用すると、ディレクトリに .env ファイルがない場合に、すべてのエージェントが使用する環境変数を設定できます。
Cloud Shell エディタのファイル ブラウザで、adk_project/app_agent ディレクトリを選択します。
このディレクトリ内の agent.py ファイルを選択します。
このエージェントは、アプリケーションの一部として実行されるように設計されています。agent.py のコメント付きコードを読み、コード内の次のコンポーネントに特に注目してください。
| コンポーネント | 機能 | 説明 |
|---|---|---|
InMemoryRunner() |
エージェントの実行の監視 | ランナーは、ユーザーのクエリを受け取って適切なエージェントに渡し、エージェントの回答イベントを受け取って呼び出し元アプリケーションまたは UI に返し、次のイベントをトリガーする役割を担うコードです。詳しくは、ADK のイベントループに関するドキュメントをご覧ください。 |
runner.session_service.create_session() |
会話の履歴と共有状態 | セッションを使用すると、エージェントは状態を維持し、アイテムのリスト、タスクの現在のステータス、その他の「現在の」情報を記憶できます。このクラスは、簡略化のためにローカル セッション サービスを作成しますが、本番環境ではデータベースで処理できます。 |
types.Content() と types.Part()
|
構造化されたマルチモーダル メッセージ | エージェントには、単純な文字列ではなく、複数の Part で構成される Content オブジェクトが渡されます。これにより、テキストやマルチモーダル コンテンツなどの複雑なメッセージを特定の順序でエージェントに渡すことができます。 |
スクリプトには、エージェントに "What is the capital of France?" と尋ねるハードコードされたクエリが含まれています。
Cloud Shell ターミナルで次のコマンドを実行して、このエージェントをプログラマティックに実行します。
選択された出力:
エージェントの特定の入力スキーマや出力スキーマを定義することもできます。
次に、Pydantic スキーマクラスの BaseModel と Field のインポートを追加し、それらを使用して、キーが「capital」で、国の首都の名前を想定した文字列値を持つ 1 つのフィールドで構成されるスキーマクラスを定義します。これらの行は、app_agent/agent.py ファイルの他のインポートの直後に貼り付けることができます。
root_agent の Agent 定義内で、次のパラメータを追加して転送を無効にし(出力スキーマを使用する場合は必須)、上記で定義した CountryCapital スキーマに従って出力が生成されるように設定します。
エージェント スクリプトを再度実行して、output_schema に従った回答を確認します。
選択された出力:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
コマンドライン インターフェースを使用して、ローカル開発環境でエージェントとチャットすることもできます。これは、エージェントを開発しているときに、簡単なデバッグやテストを行うのにとても便利です。
ウェブ インターフェースと同様に、コマンドライン インターフェースも、エージェントのセッション サービス、アーティファクト サービス、ランナーの作成を処理します。
コマンドライン インターフェースを使用してインタラクティブ セッションを実行するには:
Cloud Shell ターミナルで次のコマンドを実行します。
出力:
次のメッセージを入力します。
出力例(実際のものとは異なる場合があります):
コマンドライン インターフェースとのチャットが終了したら、次のユーザー プロンプトで exit と入力して、チャットを終了します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
マルチエージェント システムの構築については、ラボ「ADK を使用してマルチエージェント システムを構築する」で詳しく説明しますが、マルチエージェント機能は Agent Development Kit のエクスペリエンスの中核であるため、ここで 1 つのマルチエージェント システムを試してみましょう。
このエージェント システムは、LLM によって生成された回答の事実に基づくグラウンディングを評価し、向上させます。これには、次のものが含まれます。critic_agent: 自動ファクト チェッカーとして機能します。reviser_agent: 検証済みの調査結果に基づいて不正確な点を修正するために、必要に応じて回答を書き換えます。
このエージェントを試すには:
このマルチエージェント システムのコードを確認するには、Cloud Shell エディタのファイル エクスプローラを使用して、ディレクトリ adk_project/llm_auditor に移動します。
llm_auditor ディレクトリで、agent.py ファイルを選択します。
このマルチエージェントの例で注目すべき点をいくつか紹介します。
SequentialAgent クラスをインポートして使用しています。これは、ユーザーの順番を待たずに会話の制御を 1 つのエージェントから次のエージェントに順番に渡すワークフロー クラスの例です。エージェントを実行すると、ユーザーの順番を待たずに、critic_agent と reviser_agent の両方からの回答がこの順序で表示されます。sub_agents ディレクトリ内の独自のディレクトリからインポートされます。__init__.py ファイルと agent.py ファイルに加えて、prompt.py ファイルがあります。このファイルは、完全で適切に構造化されたプロンプトを agent.py ファイルにインポートする前に保存して編集するための専用の場所を提供します。このエージェントの .env ファイルを作成し、Cloud Shell ターミナルで次のコマンドを実行して開発 UI を再度起動します。
adk web セッションをシャットダウンしていない場合、デフォルトのポート 8000 がブロックされますが、たとえば adk web --port 8001 を使用して新しいポートで Dev UI を起動できます。
ターミナル出力の http://127.0.0.1:8000 リンクをクリックします。新しいブラウザタブが開き、ADK 開発 UI が表示されます。
左側の [Select an agent] プルダウンから、llm_auditor を選択します。
次の誤った文で会話を開始します。
チャットエリアにエージェントからの 2 つの回答が表示されます。
critic_agent からの詳細な回答。reviser_agent からの短い修正文。誤った入力文の修正版("Earth is closer to the Sun than Mars." など)が含まれます。各回答の横にあるエージェント アイコン()をクリックして、その回答のイベントパネルを開きます(または、[Events] パネルで対応する番号付きのイベントを見つけて選択します)。イベントビューの上部には、このマルチエージェント システムのエージェントとツールの関係を視覚化したグラフが表示されます。この回答を担当したエージェントがハイライト表示されます。
コードをさらに詳しく調べるか、開発 UI で他のファクト チェックを行ってみます。別の例を試してみましょう。
会話をリセットする場合は、ADK 開発 UI の右上にある [+ New Session] リンクを使用して会話を再び開始します。
このエージェントへの質問が完了したら、ブラウザタブを閉じ、ターミナルで Ctrl + C キーを押してサーバーを停止します。
この例では SequentialAgent ワークフロー エージェントを使用していますが、このパターンは人間参加型パターンと考えることができます。SequentialAgent がシーケンスを終了すると、会話は親(この例では llm_auditor)に戻り、ユーザーから新しい入力ターンを取得してから、会話を他のエージェントに渡します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このラボでは、次のことを学びました。
Agent Development Kit を使用してエージェントを構築、デプロイする方法について詳しくは、以下のラボをご覧ください。
ADK の詳細については、ドキュメントと GitHub リポジトリをご覧ください。
adk-docs GitHub リポジトリ adk-docs
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 8 月 4 日
ラボの最終テスト日: 2025 年 8 月 4 日
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください