ADK、Agent Engine、AlloyDB を使用したマルチエージェント アプリ

1. 概要

エージェントとは、AI モデルと対話して、エージェントが持つツールとコンテキストを使用して目標ベースの操作を実行する自律プログラムです。エージェントは、真実に基づく自律的な意思決定を行うことができます。

アプリケーションに複数のエージェントがあり、それらのエージェントが、より大きな目的を達成するために、必要に応じて自律的に連携し、各エージェントが特定の重点分野について独自の知識と責任を持ち合わせている場合、そのアプリケーションはマルチエージェント システムになります。

エージェント開発キット(ADK)

エージェント開発キット(ADK)は、AI エージェントの開発とデプロイを目的として設計された、柔軟性の高いモジュラー フレームワークです。ADK は、複数の個別のエージェント インスタンスをマルチエージェント システム(MAS)にコンポーズすることで、高度なアプリケーションの構築をサポートします。

ADK では、マルチエージェント システムとは、さまざまなエージェントが連携または調整して大きな目標を達成するアプリケーションです。エージェントは、階層を形成することがよくあります。このようにアプリケーションを構造化すると、モジュール性、特化、再利用性、メンテナンス性の向上、専用のワークフロー エージェントを使用して構造化された制御フローを定義する機能など、大きなメリットが得られます。

マルチエージェント システムで考慮すべき点

まず、各エージェントの専門分野を適切に理解し、その理由を把握することが重要です。- 「特定のサブエージェントが必要である理由をご存じですか?」という質問にまず回答します。

次に、ルート エージェントと組み合わせて、各レスポンスをルーティングして解釈する方法について説明します。

3 つ目: エージェント ルーティングには複数の種類があり、このドキュメントで確認できます。どちらがアプリケーションのフローに合っているかを確認します。また、マルチエージェント システムのフロー制御に必要なさまざまなコンテキストと状態も確認します。

作成するアプリの概要

キッチンの改装を処理するマルチエージェント システムを構築しましょう。3 つのエージェントを含むシステムを構築します。

  1. リノベーションの提案エージェント
  2. 許可証とコンプライアンス チェック エージェント
  3. 注文ステータス確認エージェント

リフォーム提案エージェント: キッチンのリフォーム提案書を生成します。

許可とコンプライアンス エージェント: 許可とコンプライアンス関連のタスクを担当します。

Order Status Check Agent: AlloyDB に設定されている注文管理データベースで作業して、マテリアルの注文ステータスを確認します。

要件に基づいてこれらのエージェントをオーケストレートするルート エージェントがあります。

要件

  • ブラウザ(ChromeFirefox など)
  • 課金を有効にした Google Cloud プロジェクト

2. 始める前に

プロジェクトを作成する

  1. Google Cloud コンソールのプロジェクト選択ページで、Google Cloud プロジェクトを選択または作成します。
  2. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

また、Google Cloud の利用を開始して ADK を使用するのに役立つクレジットを取得したい場合は、こちらのリンクからクレジットを利用できます。こちらの手順に沿ってクーポンをご利用ください。このリンクは、5 月末まで有効です。

  1. このリンクをクリックして Cloud Shell を有効にします。Cloud Shell の対応するボタンをクリックして、Cloud Shell ターミナル(クラウド コマンドの実行用)とエディタ(プロジェクトのビルド用)を切り替えることができます。
  2. Cloud Shell に接続したら、次のコマンドを使用して、認証が完了していることと、プロジェクトがプロジェクト ID に設定されていることを確認します。
gcloud auth list
  1. Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project
  1. プロジェクトが設定されていない場合は、次のコマンドを使用して設定します。
gcloud config set project <YOUR_PROJECT_ID>
  1. Python 3.9 以降があることを確認します。
  2. 次のコマンドを実行して、次の API を有効にします。
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com
  1. gcloud コマンドとその使用方法については、ドキュメントをご覧ください。

3. プロトタイプ

プロジェクトに「Gemini 2.5 Pro」モデルを使用する場合は、この手順をスキップできます。

Google AI Studio に移動します。プロンプトを入力します。次のプロンプトを入力してみます。

I want to renovate my kitchen, basically just remodel it. I don't know where to start. So I want to use Gemini to generate a plan. For that I need a good prompt. Give me a short yet detailed prompt that I can use.

右側のパラメータを調整して設定し、最適なレスポンスを得ます。

この簡単な説明に基づいて、Gemini はリノベーションを開始するための非常に詳細なプロンプトを作成しました。つまり、Gemini を使用して AI Studio とモデルからより優れた回答を得ています。ユースケースに応じて、使用するモデルを選択することもできます。

そのため、Gemini 2.5 Pro を選択しました。これは思考モデルであるため、長い分析や詳細なドキュメント用に、さらに多くの出力トークン(この場合は最大 65,000 トークン)が生成されます。Gemini 思考ボックスは、ネイティブ推論機能があり、長いコンテキスト リクエストを処理できる Gemini 2.5 Pro を有効にすると表示されます。

レスポンスのスニペットは次のとおりです。

a80d4bad4b3864f7.png

AI Studio はデータを分析し、キャビネット、カウンタートップ、バックスプラッシュ、フローリング、シンク、統一感、カラーパレット、素材の選択など、さまざまなものを生成しました。Gemini は情報源を引用する機能も備えています。

満足のいく結果が得られるまで、さまざまなモデルを選択して繰り返します。でも、Gemini 2.5 があるのに、わざわざそんな手間をかける必要はないと思います。

では、別のプロンプトでアイデアを実現してみましょう。

Add flat and circular light accessories above the island area for my current kitchen in the attached image.

現在のキッチンの画像(またはキッチンのサンプル画像)へのリンクを添付します。モデルを [Gemini 2.0 Flash Preview Image Generation] に変更して、画像の生成にアクセスできるようにします。

出力は次のとおりです。

b5b1e83fcada28f5.png

これが Gemini の力です。

動画の理解から、ネイティブな画像生成、Google 検索による実際の情報のグラウンディングまで、これらは Gemini でしか構築できないものです。

AI Studio からこのプロトタイプを取得し、API キーを取得して、Vertex AI ADK の機能を活用して完全なエージェント アプリケーションにスケーリングできます。

4. ADK のセットアップ

  1. 仮想環境を作成して有効にする(推奨)

Cloud Shell ターミナルから仮想環境を作成します。

python -m venv .venv

仮想環境を有効にします。

source .venv/bin/activate
  1. ADK をインストールする
pip install google-adk

5. プロジェクトの構造

  1. Cloud Shell のターミナルで、目的のプロジェクトの場所にあるディレクトリを作成します。
mkdir agentic-apps
cd agentic-apps
mkdir renovation-agent
  1. Cloud Shell のエディタに移動し、ファイルを作成して次のプロジェクト構造を作成します(最初は空です)。
renovation-agent/
        __init__.py
        agent.py
        .env
        requirements.txt

6. ソースコード

  1. init.py」に移動し、次の内容で更新します。
from . import agent
  1. agent.py に移動し、次のパスの次の内容でファイルを更新します。
https://github.com/AbiramiSukumaran/adk-renovation-agent/blob/main/agent.py

agent.py では、必要な依存関係をインポートし、.env ファイルから構成パラメータを取得し、このアプリケーションで作成する 3 つのサブエージェントをオーケストレートする root_agent を定義します。これらのサブエージェントのコア機能とサポート機能に役立つツールがいくつかあります。

  1. Cloud Storage バケットがあることを確認する

これは、エージェントが生成した提案書を保存するためのものです。作成してアクセス権を付与すると、Vertex AI で作成したマルチエージェント システムがアクセスできるようになります。手順は次のとおりです。

https://cloud.google.com/storage/docs/creating-buckets#console

バケットに「next-demo-store」という名前を付けます。別の名前を付ける場合は、.env ファイル(ENV 変数の設定手順)で STORAGE_BUCKET の値を更新してください。

  1. バケットへのアクセスを設定するには、Cloud Storage コンソールに移動し、ストレージ バケットに移動します(この例では、バケット名は「next-demo-storage」です。https://console.cloud.google.com/storage/browser/next-demo-storage)。

[権限] > [プリンシパルの表示] > [アクセス権を付与] に移動します。プリンシパルに「allUsers」、ロールに「ストレージ オブジェクト ユーザー」を選択します。

Make sure to not enable "prevent public access". Since this is a demo/study application we are going with a public bucket. Remember to configure permission settings appropriately when you are building your application.
  1. 依存関係リストを作成する

requirements.txt にすべての依存関係をリストします。これは repo からコピーできます。

マルチエージェント システムのソースコードの説明

agent.py ファイルでは、エージェント開発キット(ADK)を使用して、キッチン改装マルチエージェント システムの構造と動作を定義します。主要なコンポーネントを分解してみましょう。

エージェントの定義

RenovationProposalAgent

このエージェントは、キッチン改装の提案書を作成する責任を負います。必要に応じて、キッチンのサイズ、希望するスタイル、予算、お客様の好みなどの入力パラメータを受け取ります。この情報に基づいて、大規模言語モデル(LLM)Gemini 2.5 を使用して詳細な提案書を生成します。生成された提案は、Google Cloud Storage バケットに保存されます。

PermitsAndComplianceCheckAgent

このエージェントは、改修プロジェクトが現地の建築基準法と規制に準拠していることを確認します。提案された改修(構造変更、電気工事、配管の変更など)に関する情報を受け取り、LLM を使用して許可要件とコンプライアンス ルールを確認します。エージェントはナレッジベースの情報を使用します(外部 API にアクセスして関連する規制を収集するようにカスタマイズできます)。

OrderingAgent

このエージェント(今すぐ実装しない場合はコメントアウトできます)は、改修に必要な資材や機器の注文ステータスの確認を行います。これを有効にするには、設定手順で説明されているように Cloud Run 関数を作成する必要があります。エージェントは、この Cloud Run 関数を呼び出し、注文情報が格納されている AlloyDB データベースとやり取りします。ここでは、データベース システムと統合してリアルタイム データを追跡する方法を示します。

ルート エージェント(オーケストレーター)

root_agent は、マルチエージェント システムの中央オーケストレーターとして機能します。最初のリノベーション リクエストを受け取り、リクエストのニーズに基づいて呼び出すサブエージェントを決定します。たとえば、リクエストで許可要件の確認が必要な場合は、PermitsAndComplianceCheckAgent が呼び出されます。お客様が注文ステータスの確認を希望すると、OrderingAgent が呼び出されます(有効な場合)。

その後、root_agent はサブエージェントからのレスポンスを収集し、それらを組み合わせてユーザーに包括的なレスポンスを提供します。これには、提案の概要、必要な許可証のリスト、注文ステータスの更新などが含まれます。

データフロー、主なコンセプト

ユーザーが ADK インターフェース(端末またはウェブ UI)からリクエストを開始します。

  1. リクエストは root_agent によって受信されます。
  2. root_agent はリクエストを分析し、適切なサブエージェントに転送します。
  3. サブエージェントは、LLM、ナレッジベース、API、データベースを使用してリクエストを処理し、レスポンスを生成します。
  4. サブエージェントは、root_agent にレスポンスを返します。
  5. root_agent はレスポンスを結合し、最終的な出力をユーザーに提供します。

LLM(大規模言語モデル)

これらのエージェントは、テキストの生成、質問への回答、推論タスクの実行に LLM を大きく依存しています。LLM は、エージェントがユーザーのリクエストを理解して応答する能力の「頭脳」です。このアプリケーションでは Gemini 2.5 を使用しています。

Google Cloud Storage

生成された改修提案書類を保存するために使用されます。バケットを作成して、エージェントがバケットにアクセスするために必要な権限を付与する必要があります。

Cloud Run(省略可)

OrderingAgent は、Cloud Run 関数を使用して AlloyDB とインターフェースします。Cloud Run は、HTTP リクエストに応答してコードを実行するサーバーレス環境を提供します。

AlloyDB

OrderingAgent を使用している場合は、注文情報を保存する AlloyDB データベースを設定する必要があります。詳細については、次のセクション「データベースの設定」で説明します。

.env ファイル

.env ファイルには、API キー、データベース認証情報、バケット名などの機密情報が保存されます。このファイルを安全に保ち、リポジトリに commit しないことが重要です。また、エージェントと Google Cloud プロジェクトの構成設定も保存されます。通常、root_agent またはサポート関数はこのファイルから値を読み取ります。必要な変数がすべて .env ファイルで正しく設定されていることを確認します。これには、Cloud Storage バケット名が含まれます。

7. データベースの設定

ordering_agent が使用するツールの 1 つである「check_status」は、AlloyDB の注文データベースにアクセスして注文のステータスを取得します。このセクションでは、AlloyDB データベース クラスタとインスタンスを設定します。

クラスタとインスタンスを作成する

  1. Cloud コンソールの AlloyDB ページに移動します。Cloud コンソールのほとんどのページは、コンソールの検索バーを使用して簡単に見つけることができます。
  2. そのページで [クラスタを作成] を選択します。

f76ff480c8c889aa.png

  1. 次のような画面が表示されます。次の値を使用してクラスタとインスタンスを作成します(リポジトリからアプリケーション コードをクローンする場合は、値が一致していることを確認してください)。
  • クラスタ ID: "vector-cluster"
  • password: "alloydb"
  • PostgreSQL 15 / 最新バージョンを推奨
  • Region: "us-central1"
  • ネットワーキング: 「default

538dba58908162fb.png

  1. デフォルトのネットワークを選択すると、次のような画面が表示されます。

[接続の設定] を選択します。
7939bbb6802a91bf.png

  1. [自動的に割り振られた IP 範囲を使用する] を選択し、[続行] をクリックします。情報を確認したら、[CREATE CONNECTION] を選択します。768ff5210e79676f.png
  2. ネットワークが設定されたら、クラスタの作成を続行できます。[CREATE CLUSTER] をクリックして、クラスタの設定を完了します。

e06623e55195e16e.png

インスタンス ID(クラスタまたはインスタンスの構成時に確認できます)を

vector-instance。変更できない場合は、今後のすべての参照でインスタンス ID を使用してください。

クラスタの作成には 10 分ほどかかります。作成が完了すると、作成したクラスタの概要を示す画面が表示されます。

データの取り込み

次は、店舗に関するデータを含むテーブルを追加します。AlloyDB に移動し、プライマリ クラスタと AlloyDB Studio を選択します。

847e35f1bf8a8bd8.png

インスタンスの作成が完了するまで待つ必要があります。完了したら、クラスタの作成時に作成した認証情報を使用して AlloyDB にログインします。PostgreSQL の認証には、次のデータを使用します。

  • ユーザー名: 「postgres
  • データベース: 「postgres
  • パスワード: 「alloydb

AlloyDB Studio で認証が正常に完了すると、エディタに SQL コマンドが入力されます。最後のウィンドウの右側にあるプラス記号を使用して、複数のエディタ ウィンドウを追加できます。

91a86d9469d499c4.png

必要に応じて、実行、フォーマット、クリアのオプションを使用して、エディタ ウィンドウに AlloyDB のコマンドを入力します。

テーブルを作成する

AlloyDB Studio で次の DDL ステートメントを使用してテーブルを作成できます。

-- Table DDL for Procurement Material Order Status

CREATE TABLE material_order_status (
    order_id VARCHAR(50) PRIMARY KEY,
    material_name VARCHAR(100) NOT NULL,
    supplier_name VARCHAR(100) NOT NULL,
    order_date DATE NOT NULL,
    estimated_delivery_date DATE,
    actual_delivery_date DATE,
    quantity_ordered INT NOT NULL,
    quantity_received INT,
    unit_price DECIMAL(10, 2) NOT NULL,
    total_amount DECIMAL(12, 2),
    order_status VARCHAR(50) NOT NULL, -- e.g., "Ordered", "Shipped", "Delivered", "Cancelled"
    delivery_address VARCHAR(255),
    contact_person VARCHAR(100),
    contact_phone VARCHAR(20),
    tracking_number VARCHAR(100),
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    quality_check_passed BOOLEAN,  -- Indicates if the material passed quality control
    quality_check_notes TEXT,        -- Notes from the quality control check
    priority VARCHAR(20),            -- e.g., "High", "Medium", "Low"
    project_id VARCHAR(50),          -- Link to a specific project
    receiver_name VARCHAR(100),        -- Name of the person who received the delivery
    return_reason TEXT,               -- Reason for returning material if applicable
    po_number VARCHAR(50)             -- Purchase order number
);

レコードを挿入する

上記の database_script.sql スクリプトから insert クエリ ステートメントをエディタにコピーします。

[実行] をクリックします。

データセットの準備ができたので、ステータスを抽出する Java Cloud Run Functions アプリケーションを作成しましょう。

Java で Cloud Run 関数を作成し、注文ステータス情報を抽出する

  1. https://console.cloud.google.com/run/create?deploymentType=function から Cloud Run 関数を作成します。
  2. 関数の名前を「check-status」に設定し、ランタイムとして「Java 17」を選択します。
  3. これはデモ用アプリケーションであるため、認証を [Allow unauthenticated invocations] に設定できます。
  4. ランタイムとして Java 17 を選択し、ソースコードのインライン エディタを選択します。
  5. この時点で、プレースホルダ コードがエディタに読み込まれます。

プレースホルダ コードを置き換える

  1. Java ファイルの名前を「ProposalOrdersTool.java」、クラス名を「ProposalOrdersTool」に変更します。
  2. ProposalOrdersTool.java と pom.xml のプレースホルダ コードを、この リポジトリの「Cloud Run Function」フォルダ内のそれぞれのファイルのコードに置き換えます。
  3. ProposalOrdersTool.java で次のコード行を見つけ、プレースホルダ値を構成の値に置き換えます。
String ALLOYDB_INSTANCE_NAME = "projects/<<YOUR_PROJECT_ID>>/locations/us-central1/clusters/<<YOUR_CLUSTER>>/instances/<<YOUR_INSTANCE>>";
  1. [作成] をクリックします。
  2. Cloud Run 関数が作成され、デプロイされます。

重要な手順:

デプロイしたら、Cloud Functions が AlloyDB データベース インスタンスにアクセスできるように VPC コネクタを作成します。

デプロイの準備が整うと、Google Cloud Run Functions コンソールに関数が表示されます。新しく作成した関数(check-status)を検索してクリックし、[新しいリビジョンの編集とデプロイ](Cloud Run Functions コンソールの上部にある編集アイコン(ペン))をクリックして、次のように変更します。

  1. [Networking] タブに移動します。

828cd861864d99ea.png

  1. [アウトバウンド トラフィック用の VPC に接続する] を選択し、[サーバーレス VPC アクセス コネクタを使用する] を選択します。
  2. [ネットワーク] プルダウンの設定で、[ネットワーク] プルダウンをクリックし、[新しい VPC コネクタを追加] オプションを選択します(デフォルトの VPC コネクタをまだ構成していない場合)。ポップアップ ダイアログに表示される手順に沿って操作します。

6559ccfd10e597f2.png

  1. VPC コネクタの名前を指定し、リージョンがインスタンスと同じであることを確認します。[ネットワーク] の値はデフォルトのままにして、[サブネット] を [カスタム IP 範囲] に設定し、IP 範囲を 10.8.0.0 または使用可能な類似の値に設定します。
  2. [スケーリング設定を表示] を開き、構成が次のように正確に設定されていることを確認します。

199b0ccd80215004.png

  1. [作成] をクリックすると、このコネクタが下り(外向き)設定に表示されます。
  2. 新しく作成したコネクタを選択します。
  3. すべてのトラフィックをこの VPC コネクタ経由でルーティングするように選択します。
  4. [次へ]、[デプロイ] の順にクリックします。
  5. 更新された Cloud Functions 関数がデプロイされると、生成されたエンドポイントが表示されます。
  6. Cloud Run Functions コンソールの上部にある [テスト] ボタンをクリックし、生成されたコマンドを Cloud Shell ターミナルで実行すると、テストできます。
  7. デプロイされたエンドポイントは、.env 変数 CHECK_ORDER_STATUS_ENDPOINT で更新する必要がある URL です。

8. モデルのセットアップ

エージェントがユーザーのリクエストを理解し、回答を生成する能力は、大規模言語モデル(LLM)によって強化されています。エージェントは、この外部 LLM サービスを安全に呼び出す必要があります。この場合、認証情報が必要です。有効な認証がないと、LLM サービスはエージェントのリクエストを拒否し、エージェントは機能しなくなります。

  1. Google AI Studio から API キーを取得します。
  2. 次のステップで .env ファイルを設定するときに、<<your API KEY>> を実際の API キー値に置き換えます。

9. ENV 変数の設定

  1. このリポジトリのテンプレートの .env ファイルで、パラメータの値を設定します。私の .env には、次の変数があります。
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=<<your API KEY>>
GOOGLE_CLOUD_LOCATION=us-central1 <<or your region>>
GOOGLE_CLOUD_PROJECT=<<your project id>>
PROJECT_ID=<<your project id>>
GOOGLE_CLOUD_REGION=us-central1 <<or your region>>
STORAGE_BUCKET=next-demo-store <<or your storage bucket name>>
CHECK_ORDER_STATUS_ENDPOINT=<<YOUR_ENDPOINT_TO_CLOUD FUNCTION_TO_READ_ORDER_DATA_FROM_ALLOYDB>>

プレースホルダは、独自の値に置き換えます。

10. エージェントを実行する

  1. ターミナルを使用して、エージェント プロジェクトの親ディレクトリに移動します。
cd renovation-agent
  1. すべての依存関係をインストールする
pip install -r requirements.txt
  1. Cloud Shell ターミナルで次のコマンドを実行して、エージェントを実行できます。
adk run .
  1. 次のコマンドを実行して、ADK でプロビジョニングされたウェブ UI で実行できます。
adk web
  1. 次のプロンプトでテストします。
user>> 

Hello. Generate Proposal Document for the kitchen remodel requirement. I have no other specification.

11. 結果

@ キッチン リノベーション タスク用のマルチエージェント システム

623fa35fce53b51b.png

12. Agent Engine へのデプロイ

マルチエージェント システムが正常に動作することをテストしたので、サーバーレスにして、誰でも、どのアプリケーションでも使用できるようにクラウドで利用できるようにしましょう。リポジトリの agent.py で次のコード スニペットのコメントを解除すると、マルチエージェント システムをデプロイできます。

# Agent Engine Deployment:
# Create a remote app for our multiagent with agent Engine.
# This may take 1-2 minutes to finish.
# Uncomment the below segment when you're ready to deploy.

app = AdkApp(
    agent=root_agent,
    enable_tracing=True,
)

vertexai.init(
    project=PROJECT_ID,
    location=GOOGLE_CLOUD_LOCATION,
    staging_bucket=STAGING_BUCKET,
)

remote_app = agent_engines.create(
    app,
    requirements=[
        "google-cloud-aiplatform[agent_engines,adk]>=1.88",
        "google-adk",
        "pysqlite3-binary",
        "toolbox-langchain==0.1.0",
        "pdfplumber",
        "google-cloud-aiplatform",
        "cloudpickle==3.1.1",
        "pydantic==2.10.6",
        "pytest",
        "overrides",
        "scikit-learn",
        "reportlab",
        "google-auth",
        "google-cloud-storage",
    ],
)
# Deployment to Agent Engine related code ends

次のコマンドを使用して、プロジェクト フォルダ内からこの agent.py を再度実行します。

>> cd adk-renovation-agent

>> python agent.py

このコードが完了するまでに数分かかります。完了すると、次のようなエンドポイントが返されます。

'projects/123456789/locations/us-central1/reasoningEngines/123456'

新しいファイル「test.py」を追加して、デプロイされたエージェントを次のコードでテストできます。

import vertexai
from vertexai.preview import reasoning_engines
from vertexai import agent_engines
import os
import warnings
from dotenv import load_dotenv
load_dotenv() 


GOOGLE_CLOUD_PROJECT = os.environ["GOOGLE_CLOUD_PROJECT"]
GOOGLE_CLOUD_LOCATION = os.environ["GOOGLE_CLOUD_LOCATION"]
GOOGLE_API_KEY = os.environ["GOOGLE_API_KEY"]
GOOGLE_GENAI_USE_VERTEXAI=os.environ["GOOGLE_GENAI_USE_VERTEXAI"]
AGENT_NAME = "adk_renovation_agent"
MODEL_NAME = "gemini-2.5-pro-preview-03-25" 
warnings.filterwarnings("ignore")
PROJECT_ID = GOOGLE_CLOUD_PROJECT

reasoning_engine_id = "<<YOUR_DEPLOYED_ENGINE_ID>>"

vertexai.init(project=PROJECT_ID, location="us-central1")
agent = agent_engines.get(reasoning_engine_id)
print("**********************")
print(agent)
print("**********************")


for event in agent.stream_query(
    user_id="test_user",
    message="I want you to check order status.",
):
    print(event)

上記のコードのプレースホルダ「<<YOUR_DEPLOYED_ENGINE_ID>>」の値を置き換えて、コマンド「python test.py」を実行します。これで、Agent Engine がデプロイされたマルチエージェント システムとやり取りして、キッチンを改装する準備が整いました。

13. 1 行でデプロイするオプション

デプロイされたマルチエージェント システムをテストしたので、前のステップで行ったデプロイ手順を抽象化する簡単な方法を学びましょう。1 行でデプロイする方法は次のとおりです。

  1. Cloud Run への転送:

構文:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=<<YOUR_SERVICE_NAME>> \
--app_name=<<YOUR_APP_NAME>> \
--with_ui \
./<<YOUR_AGENT_PROJECT_NAME>>

この例の場合は、次のようになります。

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=renovation-agent \
--app_name=renovation-app \
--with_ui \
./renovation-agent

デプロイされたエンドポイントは、ダウンストリームの統合に使用できます。

  1. エージェント エンジンへの転送:

構文:

adk deploy agent_engine \
  --project <your-project-id> \
  --region us-central1 \
  --staging_bucket gs://<your-google-cloud-storage-bucket> \
  --trace_to_cloud \
  path/to/agent/folder

この例の場合は、次のようになります。

adk deploy agent_engine --project <<YOUR_PROJECT_ID>> --region us-central1 --staging_bucket gs://<<YOUR_BUCKET_NAME>> --trace_to_cloud renovation-agent

Google Cloud コンソールの Agent Engine UI に新しいエージェントが表示されます。詳しくは、こちらのブログをご覧ください。

14. クリーンアップ

この投稿で使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の操作を行います。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。
  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

15. 完了

これで、ADK を使用して最初のエージェントを作成し、対話できました。