ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

ADK と Agent2Agent(A2A)SDK を使用してリモート エージェントに接続する

ラボ 1時間 universal_currency_alt クレジット: 7 show_chart 上級
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

GENAI120

Google Cloud セルフペース ラボ

Agent2Agent(A2A)プロトコルは、AI の分野における重要な課題に対処します。その課題とは、さまざまな企業がさまざまなフレームワークを使用して構築し、個別のサーバー上で実行される生成 AI エージェントが、単なるツールとして動作するだけでなく、効果的なコミュニケーションとコラボレーションを行うことを可能にするというものです。A2A は、エージェント向けに共通言語を提供し、より相互接続性が高く、強力で革新的な AI エコシステムを育成することを目的としています。

A2A はいくつかの基本コンセプトに基づいて、強力で柔軟になるように構築されています。

  • 標準化された通信: HTTP(S) 上での JSON-RPC 2.0。
  • エージェントの発見: エージェント カードにエージェントの機能と接続情報が記載されているため、エージェントは互いに発見して、互いの機能について知ることができます。
  • リッチデータ交換: テキスト、ファイル、構造化された JSON データを処理します。
  • 柔軟なインタラクション: 同期されたリクエスト / レスポンス、ストリーミング(SSE)、非同期のプッシュ通知をサポートします。
  • エンタープライズ対応: セキュリティ、認証、オブザーバビリティを考慮して設計されています。

目標

このラボでは、次の作業を行います。

  • ADK エージェントを A2A サーバーとしてデプロイする。
  • A2A エージェントの機能が記述された JSON エージェント カードを準備する。
  • デプロイした A2A エージェントのエージェント カードを別の ADK エージェントが読み取り、サブエージェントとして使用できるようにする。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は制限されており、一時停止することはできません。[ラボを開始] ボタンをクリックするとタイマーが開始され、Cloud リソースを利用できる時間が表示されます。

この Qwiklabs ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。一時的な認証情報が新しく提供されるため、ラボ受講中の Google Cloud Platform へのログインおよびアクセスにはその認証情報を使用してください。

前提条件

このラボを完了するには、次のものが必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)。
  • ラボを完了するために必要な時間。

注: すでに個人の GCP アカウントやプロジェクトをお持ちの場合でも、そのアカウントやプロジェクトはラボでは使用しないでください。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] ペインでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] ペインでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニュー アイコンと検索フィールド

タスク 1. ADK をインストールして環境を設定する

このラボ環境では、Vertex AI APICloud Run API が有効になっています。ご自身のプロジェクトでこれらの手順を行う場合は、Vertex AI に移動し、プロンプトに従って有効にできます。

Cloud Shell エディタタブを準備する

  1. Google Cloud コンソール ウィンドウを選択した状態で、キーボードの G キーを押してから S キーを押して、Cloud Shell を開きます。または、Cloud コンソールの右上にある「Cloud Shell をアクティブにする」ボタン Cloud Shell をアクティブにする をクリックします。

  2. [続行] をクリックします。

  3. Cloud Shell を承認するよう求められたら、[承認] をクリックします。

  4. Cloud Shell ターミナル パネルの右上にある「新しいウィンドウで開く」ボタン(「新しいウィンドウで開く」ボタン)をクリックします。

  5. Cloud Shell ターミナルで、次のコマンドを入力して Cloud Shell エディタをホーム ディレクトリで開きます。

    cloudshell workspace ~
  6. 画面の右側に表示される追加のチュートリアルや Gemini のパネルを閉じると、コードエディタのウィンドウをより広く使用できます。

  7. このラボの残りの部分では、このウィンドウを Cloud Shell エディタと Cloud Shell ターミナルを備えた IDE として使用できます。

ADK とこのラボのコードサンプルをダウンロードしてインストールする

  1. Cloud Shell ターミナルで次のコマンドを実行して、ADK をインストールします。注: インストールする ADK のバージョンが、このラボで使用されるバージョンと一致するように、バージョンを指定してください。

    # ADK と A2A Python SDK をインストールする cd ~ export PATH=$PATH:"/home/${USER}/.local/bin" python3 -m pip install google-adk==1.8.0 a2a-sdk==0.2.16 pip install --upgrade google-genai # このバージョンの入力ミスを修正する sed -i 's/{a2a_option}"/{a2a_option} "/' ~/.local/lib/python3.12/site-packages/google/adk/cli/cli_deploy.py
  2. 次のコマンドを Cloud Shell ターミナルに貼り付けて、Cloud Storage バケットからラボコードをコピーして解凍します。

    gcloud storage cp gs://{{{project_0.project_id| YOUR_GCP_PROJECT_ID}}}-bucket/adk_and_a2a.zip ./adk_and_a2a.zip unzip adk_and_a2a.zip

    [進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ADK をインストールして環境を設定する。

タスク 2. リモートで利用可能にする予定の ADK エージェントの詳細を確認する

このラボでは、あなたはスタジアムのメンテナンス会社である Cymbal Stadiums で働いているとします。最近のプロジェクトの一環として、あなたはブランド ガイドラインに沿ってイラストを作成できる画像生成エージェントを開発しました。現在、組織内の複数のチームがこのエージェントを使用したいと考えています。

多くのエージェントがサブエージェントとして使用できるようにコードをコピーすると、それらすべてのコピーを維持していくことや改良を加えていくことは非常に困難になります。

代わりに、このエージェントを A2A サーバーでラップされたエージェントとして 1 回だけデプロイし、他のチームのエージェントがそれを組み込めるようにするという方法が可能です。この場合、他のチームのエージェントは、リモートでクエリを行うという形になります。

  1. Cloud Shell エディタのファイル エクスプローラ ペインで、adk_and_a2a/illustration_agent ディレクトリに移動します。このディレクトリには、リモートで利用可能にする ADK エージェントが含まれています。このディレクトリをクリックして開きます。

  2. このディレクトリの agent.py ファイルを開き、# Tools というラベルの付いたセクションまでスクロールします。

  3. このエージェントがツールとして使用する generate_image() 関数を見つけます。この関数は、プロンプトを受け取り、2 段階のプロセスを実行します。まず、Google Gen AI SDK を使用して generate_content() を呼び出します。このレスポンスで生の画像データが直接返されます。次に、この関数は Cloud Storage ライブラリを使用して、これらの画像バイトを GCS バケットにアップロードします。最後に、作成された画像ファイルの公開 URL がツールにより返されます。

  4. root_agent に提供される instruction は、会社のブランド ガイドラインに沿った画像生成プロンプトを使用するようエージェントに具体的な指示を提供します。たとえば、次のようなことを指定します。

    • 具体的なイラスト スタイル:(コーポレート メンフィス
    • カラーパレット(夕暮れのグラデーションの上に紫と緑)
    • スタジアム、スポーツ、メンテナンスの画像例(スタジアムのメンテナンス会社であるため)
  5. 実際に動作を確認するには、まず .env ファイルを作成して、ADK エージェントが必要とする環境変数を設定する必要があります。Cloud Shell ターミナルで次のコマンドを実行して、このディレクトリにこのファイルを書き込みます。

    cd ~/adk_and_a2a cat << EOF > illustration_agent/.env GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT={{{project_0.project_id| YOUR_GCP_PROJECT_ID}}} GOOGLE_CLOUD_LOCATION=global MODEL={{{project_0.startup_script.gemini_flash_model_id | gemini_flash_model_id}}} IMAGE_MODEL={{{project_0.startup_script.gemini_flash_image_model_id | gemini_flash_image_model_id}}} EOF
  6. 次のコマンドを実行して、.env をこのラボで使用する別のエージェント ディレクトリにコピーします。

    cp illustration_agent/.env slide_content_agent/.env
  7. Cloud Shell ターミナルで次のコマンドを実行して ADK 開発 UI を起動します。

    adk web

    出力

    INFO: Started server process [2434] 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://127.0.0.1:8000 (Press CTRL+C to quit)
  8. ウェブ インターフェースを新しいタブで表示するには、ターミナルの出力の下部にある http://127.0.0.1:8000 リンクをクリックします。

  9. 新しいブラウザタブが開き、ADK 開発 UI が表示されます。

  10. 左側の [Select an agent] プルダウンから、[illustration_agent] を選択します。

  11. 人材募集のプレゼン資料で使用するようなテキストを使用して、エージェントに対してクエリを行います。

    By supporting each other, we get big things done!
  12. 約 10 秒後に、エージェントは生成したプロンプトと画像のプレビュー URL を返します。画像の URL をクリックして画像をプレビューし、ブラウザの [戻る] をクリックして開発 UI に戻ります。

    出力例

    モデルからのレスポンスの例

    画像の例

    生成された画像

  13. エージェントに指示したプロンプトでは、スポーツ、スタジアム、メンテナンスの仕事については言及しませんでした。しかし、エージェントはテキストとブランド ガイドラインを考慮し、それらを組み合わせて、画像生成モデル向けのプロンプトを作成しました。

    ベース エージェントの確認が終わったら、ブラウザタブを閉じます。

  14. Cloud Shell ターミナル ペインをクリックし、Ctrl+C キーを押してサーバーを停止します。

    [進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ADK エージェントの詳細を確認する。

タスク 3. エージェントを A2A サーバーとしてデプロイする

ここでは、このエージェントをリモート A2A エージェントとしてデプロイする手順について説明します。

  1. A2A エージェントは、エージェント カードを公開することで、自身とその機能を提示します。次のコマンドを実行して、agent.json ファイルを作成します。

    touch illustration_agent/agent.json
  2. adk_and_a2a/illustration_agent ディレクトリ内の agent.json ファイルを開き、次の内容を貼り付けます。

    { "name": "illustration_agent", "description": "An agent designed to generate branded illustrations for Cymbal Stadiums.", "defaultInputModes": ["text/plain"], "defaultOutputModes": ["application/json"], "skills": [ { "id": "illustrate_text", "name": "Illustrate Text", "description": "Generate an illustration to illustrate the meaning of provided text.", "tags": ["illustration", "image generation"] } ], "url": "https://illustration-agent-{{{project_0.startup_script.project_number|Project Number}}}.{{{project_0.default_region| GCP_LOCATION}}}.run.app/a2a/illustration_agent", "capabilities": {}, "version": "1.0.0" }
  3. ファイルを保存します。

  4. agent.json ファイル内の JSON の内容を調べます。エージェントの namedescription が指定されており、いくつかの skills が特定されていることに注目してください。また、このエージェントを呼び出すための url も指定されています。

    このラボの手順に沿ってエージェントをデプロイすると、エージェントの url は Cloud Run サービスの URL になります。

    skills と意味は似ていますが、パラメータ capabilities はストリーミングなどの機能を示すために予約されています。

  5. 次のコマンドを実行して、illustration_agent ディレクトリに requirements.txt ファイルを作成します。

    touch illustration_agent/requirements.txt
  6. ファイルを選択し、次の内容をファイルに貼り付けます。

    google-adk==1.8.0 a2a-sdk==0.2.16
  7. ファイルを保存します。

  8. 次のコマンドでは、adk deploy cloud_run--a2a フラグを指定して、エージェントを A2A サーバーとして Cloud Run にデプロイします。Cloud Run へのエージェントのデプロイについて詳しく学ぶには、「Deploy ADK agents to Cloud Run」(ADK エージェントを Cloud Run にデプロイする)というラボを検索してください。このコマンドの内容は次のとおりです。

    • --project--region は、Cloud Run サービスがデプロイされるプロジェクトとリージョンを定義します。
    • --service_name は、Cloud Run サービスの名前を定義します。
    • --a2a フラグは、A2A エージェントとしてホストする必要があることを示します。これは次の 2 つのことを意味します。
      • エージェントは、ADK エージェントと A2A エージェントをブリッジするクラスである A2aAgentExecutor でラップされます。このクラスは、A2A プロトコルのタスクとメッセージの言語を、ADK Runner のイベントの言語に変換します。
      • エージェント カードも CLOUD_RUN_URL/a2a/AGENT_NAME/.well-known/agent.json でホストされます。注: このバージョンのカードはまもなく使用可能になりますが、エージェントの URL の動的な書き換えは現在 Cloud Run では機能しないため、このバージョンのラボでは使用しません。

    次のコマンドを使用して、エージェントを A2A サーバーとして Cloud Run にデプロイします。

    adk deploy cloud_run \ --project {{{project_0.project_id| YOUR_GCP_PROJECT_ID}}} \ --region {{{project_0.default_region| GCP_LOCATION}}} \ --service_name illustration-agent \ --a2a \ illustration_agent
  9. このコンテナの未認証のレスポンスを許可するように求められます。ラボでのテストであるため、Cloud Shell ターミナルで「Y」(「yes」の意味)と入力して Return キーを押します

    注: デプロイには 5~10 分ほどかかります。PERMISSION_DENIED エラーが発生した場合は、上記のコマンドをもう一度実行してください。

    想定される出力:

    Dockerfile のビルド、コンテナのデプロイ、サービスのデプロイに関する手順が表示された後、以下の内容が表示されます。

    Service [illustration-agent] revision [illustration-agent-00001-xpp] has been deployed and is serving 100 percent of traffic. Service URL: https://illustration-agent-{{{project_0.startup_script.project_number|Project Number}}}.{{{project_0.default_region| GCP_LOCATION}}}.run.app

    [進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 エージェントを A2A サーバーとしてデプロイする。

タスク 4. 別の ADK エージェントがこのエージェントをリモートで呼び出せるようにする

このタスクでは、2 番目の ADK エージェントが、イラスト生成エージェントの機能を特定してリモートで呼び出せるようにします。この 2 番目のエージェントは、スライドのコンテンツを作成するタスクを担うエージェントです。見出しと数文からなる本文を書き、イラスト生成エージェントに転送して、そのテキストを表す画像を生成してもらいます。

  1. Cloud Shell ターミナルで、次のコマンドを実行して、エージェント カードの JSON ファイルを adk_and_a2a ディレクトリにコピーし、illustration_agent であることを表すようにファイル名を変更します。

    cp illustration_agent/agent.json illustration-agent-card.json
  2. Cloud Shell エディタのファイル エクスプローラ ペインで、adk_and_a2a/slide_content_agent に移動し、agent.py ファイルを開きます。

    このエージェントの instruction を確認します。このエージェントは、ユーザーからスライドの指示を受け取り、見出しと本文を作成して、それを A2A エージェントに転送してスライドのイラストを生成してもらうことが示されています。

  3. # Agents ヘッダーの下に次のコードを貼り付け、ADK の RemoteA2aAgent クラスを使用してリモート エージェントを追加します。

    illustration_agent = RemoteA2aAgent( name="illustration_agent", description="Agent that generates illustrations.", agent_card=( "illustration-agent-card.json" ), )
  4. root_agent に次のパラメータを追加して、illustration_agentroot_agent のサブエージェントとして追加します。

    sub_agents=[illustration_agent]
  5. ファイルを保存します。

  6. Cloud Shell ターミナルから UI を起動します。

    cd ~/adk_and_a2a adk web
  7. ターミナル出力の http://127.0.0.1:8000 リンクをもう一度クリックします。

  8. 新しいブラウザタブが開き、ADK 開発 UI が表示されます。左側の [Select an agent] プルダウンから、[slide_content_agent] を選択します。

  9. 次のようなスライドのアイデアを記述して、エージェントに対してクエリを行います。

    Create content for a slide about our excellent on-the-job training.

次のような内容が出力されます。

  • slide_content_agent 自体が作成した見出しと本文
  • transfer_to_agent の呼び出し。illustration_agent への転送を示します。
  • illustration_agent からのレスポンス。リンクが含まれており、クリックして新しい画像を表示できます。
エージェントがテキストを生成し、illustration_agent に転送して画像を生成してもらいます。

生成された画像

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 別の ADK エージェントがエージェントをリモートで呼び出せるようにする。

お疲れさまでした

このラボでは、ADK エージェントを A2A サーバーとしてデプロイし、A2A エージェントの機能が記述された JSON エージェント カードを準備しました。また、デプロイした A2A エージェントのエージェント カードを別の ADK エージェントが読み取ってサブエージェントとして使用できるようにしました。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2025 年 10 月 6 日

ラボの最終テスト日: 2025 年 10 月 6 日

Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。