コンテンツにスキップ

Vertex AI Agent Engine へのデプロイ

ADKでサポートPython

Agent Engineは、開発者が本番環境でAIエージェントをデプロイ、管理、スケーリングできるようにする、フルマネージドのGoogle Cloudサービスです。Agent Engineが本番環境でのエージェントのスケーリングに必要なインフラストラクチャを処理するため、開発者はインテリジェントでインパクトのあるアプリケーションの作成に集中できます。このガイドでは、ADKプロジェクトを迅速にデプロイしたい場合のための高速デプロイ手順と、エージェントをAgent Engineに慎重にデプロイしたい場合のための標準的なステップバイステップの手順を提供します。

プレビュー: Vertex AI Express モード

Google Cloudプロジェクトをお持ちでない場合でも、Vertex AI Express モードを使用してAgent Engineを無料でお試しいただけます。この機能の使用方法については、標準デプロイセクションをご覧ください。

高速デプロイ

このセクションでは、Agent Starter Pack (ASP)とADKコマンドラインインターフェース(CLI)ツールを使用したデプロイ方法について説明します。このアプローチでは、ASPツールを使用して既存のプロジェクトにプロジェクトテンプレートを適用し、デプロイ用のアーティファクトを追加して、エージェントプロジェクトのデプロイ準備を整えます。以下の手順では、ASPを使用してADKプロジェクトのデプロイに必要なサービスをGoogle Cloudプロジェクトにプロビジョニングする方法を説明します。

デプロイされたエージェントのテストについては、デプロイされたエージェントのテストをご覧ください。Agent Starter Packとそのコマンドラインツールの使用に関する詳細については、CLIリファレンスおよび開発ガイドをご覧ください。

前提条件

このデプロイパスを使用するには、以下のリソースが設定されている必要があります。

  • Google Cloudアカウント: 以下への管理者アクセス権を持つこと。
  • Google Cloudプロジェクト: 課金が有効になっている空のGoogle Cloudプロジェクト。プロジェクトの作成については、プロジェクトの作成と管理をご覧ください。
  • Python環境: 3.9から3.13までのPythonバージョン。
  • UVツール: Python開発環境の管理とASPツールの実行。インストール詳細はUVのインストールをご覧ください。
  • Google Cloud CLIツール: gcloudコマンドラインインターフェース。インストール詳細はGoogle Cloudコマンドラインインターフェースをご覧ください。
  • Makeツール: ビルド自動化ツール。このツールはほとんどのUnixベースのシステムに含まれています。インストール詳細はMakeツールのドキュメントをご覧ください。

ADKプロジェクトの準備

ADKプロジェクトをAgent Engineにデプロイする際には、デプロイ操作をサポートするための追加ファイルが必要です。次のASPコマンドは、プロジェクトをバックアップし、デプロイ目的のファイルをプロジェクトに追加します。

この手順は、デプロイのために変更する既存のADKプロジェクトがあることを前提としています。ADKプロジェクトがない場合やテストプロジェクトを使用したい場合は、Pythonのクイックスタートガイドを完了し、multi_tool_agentプロジェクトを作成してください。以下の手順では、multi_tool_agentプロジェクトを例として使用します。

ADKプロジェクトをAgent Engineへのデプロイ準備をするには:

  1. 開発環境のターミナルウィンドウで、エージェントフォルダを含む親ディレクトリに移動します。例えば、プロジェクト構造が以下のようになっている場合:

    your-project-directory/
    ├── multi_tool_agent/
    │   ├── __init__.py
    │   ├── agent.py
    │   └── .env
    

    your-project-directory/に移動します。

  2. ASPのenhanceコマンドを実行して、デプロイに必要なファイル群をプロジェクトに追加します。

    uvx agent-starter-pack enhance --adk -d agent_engine
    
  3. ASPツールの指示に従います。通常はすべての質問にデフォルトの回答で問題ありません。ただし、GCPリージョンのオプションについては、Agent Engineがサポートするリージョンのいずれかを選択してください。

このプロセスが正常に完了すると、ツールは次のメッセージを表示します。

> Success! Your agent project is ready.

実行中にASPツールがGoogle Cloudへの接続を促すメッセージを表示することがありますが、この段階での接続は必須ではありません

ASPがADKプロジェクトに加える変更についての詳細は、ADKプロジェクトへの変更点をご覧ください。

Google Cloudプロジェクトへの接続

ADKプロジェクトをデプロイする前に、Google Cloudおよびご自身のプロジェクトに接続する必要があります。Google Cloudアカウントにログインした後、デプロイ対象のプロジェクトがアカウントから見えること、およびそれが現在のプロジェクトとして設定されていることを確認してください。

Google Cloudに接続し、プロジェクトをリスト表示するには:

  1. 開発環境のターミナルウィンドウで、Google Cloudアカウントにログインします。

    gcloud auth application-default login
    
  2. Google CloudプロジェクトIDを使用して対象プロジェクトを設定します。

    gcloud config set project your-project-id-xxxxx
    
  3. Google Cloudの対象プロジェクトが設定されていることを確認します。

    gcloud config get-value project
    

Google Cloudへの接続とCloudプロジェクトIDの設定が正常に完了すれば、ADKプロジェクトファイルをAgent Engineにデプロイする準備は完了です。

ADKプロジェクトのデプロイ

ASPツールを使用する場合、デプロイは段階的に行われます。最初の段階では、makeコマンドを実行してAgent Engine上でADKワークフローを実行するために必要なサービスをプロビジョニングします。第2段階では、プロジェクトコードがAgent Engineサービスにアップロードされ、エージェントプロジェクトが実行されます。

重要

これらの手順を実行する前に、Google Cloudのデプロイ対象プロジェクトが現在のプロジェクトとして設定されていることを確認してくださいmake backendコマンドは、デプロイ実行時に現在設定されているGoogle Cloudプロジェクトを使用します。現在のプロジェクトの設定と確認については、Google Cloudプロジェクトへの接続をご覧ください。

ADKプロジェクトをGoogle CloudプロジェクトのAgent Engineにデプロイするには:

  1. ターミナルウィンドウで、エージェントフォルダを含む親ディレクトリ(例:your-project-directory/)にいることを確認します。

  2. 以下のASP makeコマンドを実行して、更新されたローカルプロジェクトのコードをGoogle Cloud開発環境にデプロイします。

    make backend
    

このプロセスが正常に完了すると、Google Cloud Agent Engine上で実行されているエージェントと対話できるようになります。デプロイされたエージェントのテストに関する詳細は、次のセクションを参照してください。

このプロセスが正常に完了すると、Google Cloud Agent Engine上で実行されているエージェントと対話できるようになります。デプロイされたエージェントのテストに関する詳細は、デプロイされたエージェントのテストをご覧ください。

ADKプロジェクトへの変更点

ASPツールは、デプロイのためにプロジェクトにさらにファイルを追加します。下記の手順では、変更前に既存のプロジェクトファイルをバックアップします。このガイドでは、multi_tool_agentプロジェクトを参照例として使用します。元のプロジェクトは、以下のファイル構造から始まります。

multi_tool_agent/
├─ __init__.py
├─ agent.py
└─ .env

Agent Engineのデプロイ情報を追加するためにASP enhanceコマンドを実行した後の新しい構造は以下の通りです。

multi-tool-agent/
├─ app/                 # コアアプリケーションコード
│   ├─ agent.py         # メインのエージェントロジック
│   ├─ agent_engine_app.py # Agent Engineアプリケーションロジック
│   └─ utils/           # ユーティリティ関数とヘルパー
├─ .cloudbuild/         # Google Cloud Build用のCI/CDパイプライン設定
├─ deployment/          # インフラとデプロイスクリプト
├─ notebooks/           # プロトタイピングと評価用のJupyterノートブック
├─ tests/               # ユニット、インテグレーション、負荷テスト
├─ Makefile             # 共通コマンド用のMakefile
├─ GEMINI.md            # AI支援開発ガイド
└─ pyproject.toml       # プロジェクトの依存関係と設定

詳細については、更新されたADKプロジェクトフォルダ内のREADME.mdファイルをご覧ください。Agent Starter Packの使用に関する詳細については、開発ガイドをご覧ください。

標準デプロイ

このセクションでは、Agent Engineへのデプロイをステップバイステップで実行する方法について説明します。これらの手順は、デプロイ設定を慎重に管理したい場合や、Agent Engineで既存のデプロイを変更する場合に適しています。

前提条件

この手順は、ADKプロジェクトとGCPプロジェクトが既に定義されていることを前提としています。ADKプロジェクトがない場合は、エージェントの定義のテストプロジェクト作成手順を参照してください。

プレビュー: Vertex AI Express モード

既存のGCPプロジェクトがない場合、Vertex AI Express モードを使用してAgent Engineを無料でお試しいただけます。

デプロイ手順を開始する前に、以下が揃っていることを確認してください。

  1. Google Cloudプロジェクト: Vertex AI APIが有効化されたGoogle Cloudプロジェクト。

  2. 認証済みのgcloud CLI: Google Cloudで認証されている必要があります。ターミナルで次のコマンドを実行してください。

    gcloud auth application-default login
    

  3. Google Cloud Storage (GCS) バケット: Agent Engineは、デプロイのためにエージェントのコードと依存関係をステージングするGCSバケットを必要とします。バケットがない場合は、こちらの手順に従って作成してください。

  4. Python環境: 3.9から3.13までのPythonバージョン。

  5. Vertex AI SDKのインストール

    Agent EngineはPython用Vertex AI SDKの一部です。詳細については、Agent Engineクイックスタートドキュメントを参照できます。

    pip install google-cloud-aiplatform[adk,agent_engines]>=1.111
    

デプロイ手順を開始する前に、以下が揃っていることを確認してください。

  1. ExpressモードプロジェクトのAPIキー: Expressモードのサインアップに従って、gmailアカウントでExpressモードプロジェクトにサインアップします。そのプロジェクトからAgent Engineで使用するAPIキーを取得してください!

  2. Python環境: 3.9から3.13までのPythonバージョン。

  3. Vertex AI SDKのインストール

    Agent EngineはPython用Vertex AI SDKの一部です。詳細については、Agent Engineクイックスタートドキュメントを参照できます。

    pip install google-cloud-aiplatform[adk,agent_engines]>=1.111
    

エージェントの定義

この手順は、デプロイのために変更する既存のADKプロジェクトがあることを前提としています。ADKプロジェクトがない場合やテストプロジェクトを使用したい場合は、Pythonのクイックスタートガイドを完了し、multi_tool_agentプロジェクトを作成してください。以下の手順では、multi_tool_agentプロジェクトを例として使用します。

Vertex AIの初期化

次に、Vertex AI SDKを初期化します。これにより、SDKに使用するGoogle Cloudプロジェクトとリージョン、およびデプロイ用ファイルのステージング場所が指定されます。

IDEユーザー向けヒント

この初期化コードは、次のステップ3から6のデプロイロジックと一緒に、別のdeploy.pyスクリプトに配置することができます。

deploy.py
import vertexai
from agent import root_agent # agent.pyにエージェントがない場合は変更してください

# TODO: プロジェクトに合わせてこれらの値を入力してください
PROJECT_ID = "your-gcp-project-id"
LOCATION = "us-central1"  # 他のオプションについては https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview#supported-regions を参照
STAGING_BUCKET = "gs://your-gcs-bucket-name"

# Vertex AI SDKを初期化
vertexai.init(
    project=PROJECT_ID,
    location=LOCATION,
    staging_bucket=STAGING_BUCKET,
)
deploy.py
import vertexai
from agent import root_agent # agent.pyにエージェントがない場合は変更してください

# TODO: APIキーに合わせてこの値を入力してください
API_KEY = "your-express-mode-api-key"

# Vertex AI SDKを初期化
vertexai.init(
    api_key=API_KEY,
)

デプロイのためのエージェント準備

エージェントをAgent Engineと互換性のあるものにするには、AdkAppオブジェクトでラップする必要があります。

deploy.py
from vertexai import agent_engines

# エージェントをAdkAppオブジェクトでラップ
app = agent_engines.AdkApp(
    agent=root_agent,
    enable_tracing=True,
)

Info

AdkAppがAgent Engineにデプロイされると、永続的でマネージドなセッション状態のために自動的にVertexAiSessionServiceを使用します。これにより、追加の設定なしでマルチターンの対話メモリが提供されます。ローカルでのテストでは、アプリケーションはデフォルトで一時的なインメモリのセッションサービスを使用します。

エージェントのローカルテスト (任意)

デプロイする前に、エージェントの振る舞いをローカルでテストできます。

async_stream_queryメソッドは、エージェントの実行トレースを表すイベントのストリームを返します。

deploy.py
# 対話履歴を維持するためのローカルセッションを作成
session = await app.async_create_session(user_id="u_123")
print(session)

create_sessionの期待される出力 (ローカル):

Session(id='c6a33dae-26ef-410c-9135-b434a528291f', app_name='default-app-name', user_id='u_123', state={}, events=[], last_update_time=1743440392.8689594)

エージェントにクエリを送信します。以下のコードを"deploy.py"Pythonスクリプトまたはノートブックにコピー&ペーストしてください。

deploy.py
events = []
async for event in app.async_stream_query(
    user_id="u_123",
    session_id=session.id,
    message="whats the weather in new york",
):
    events.append(event)

# 完全なイベントストリームはエージェントの思考プロセスを示します
print("--- Full Event Stream ---")
for event in events:
    print(event)

# 簡単なテストでは、最終的なテキスト応答だけを抽出できます
final_text_responses = [
    e for e in events
    if e.get("content", {}).get("parts", [{}])[0].get("text")
    and not e.get("content", {}).get("parts", [{}])[0].get("function_call")
]
if final_text_responses:
    print("\n--- Final Response ---")
    print(final_text_responses[0]["content"]["parts"][0]["text"])

出力の理解

上記のコードを実行すると、いくつかのタイプのイベントが表示されます。

  • ツール呼び出しイベント: モデルがツール(例: get_weather)の呼び出しを要求します。
  • ツール応答イベント: システムがツール呼び出しの結果をモデルに返します。
  • モデル応答イベント: エージェントがツール結果を処理した後の最終的なテキスト応答。

async_stream_queryの期待される出力 (ローカル):

{'parts': [{'function_call': {'id': 'af-a33fedb0-29e6-4d0c-9eb3-00c402969395', 'args': {'city': 'new york'}, 'name': 'get_weather'}}], 'role': 'model'}
{'parts': [{'function_response': {'id': 'af-a33fedb0-29e6-4d0c-9eb3-00c402969395', 'name': 'get_weather', 'response': {'status': 'success', 'report': 'The weather in New York is sunny with a temperature of 25 degrees Celsius (41 degrees Fahrenheit).'}}}], 'role': 'user'}
{'parts': [{'text': 'The weather in New York is sunny with a temperature of 25 degrees Celsius (41 degrees Fahrenheit).'}], 'role': 'model'}

Agent Engineへのデプロイ

エージェントのローカルでの振る舞いに満足したら、デプロイできます。これはPython SDKまたはadkコマンドラインツールを使用して行うことができます。

このプロセスは、コードをパッケージ化し、コンテナにビルドし、マネージドなAgent Engineサービスにデプロイします。このプロセスには数分かかることがあります。

ターミナルからadk deployコマンドラインツールを使用してデプロイできます。 以下のデプロイコマンド例では、multi_tool_agentサンプルコードをデプロイ対象のプロジェクトとして使用します。

adk deploy agent_engine \
    --project=my-cloud-project-xxxxx \
    --region=us-central1 \
    --staging_bucket=gs://my-cloud-project-staging-bucket-name \
    --display_name="My Agent Name" \
    /multi_tool_agent

利用可能なストレージバケット名は、Google Cloudコンソールのデプロイプロジェクトの Cloud Storageバケット セクションで確認できます。adk deployコマンドの使用に関する詳細は、 ADK CLIリファレンスをご覧ください。

Tip

ADKプロジェクトをデプロイする際は、メインのADKエージェント定義(root_agent)が 検出可能であることを確認してください。

このコードブロックは、Pythonスクリプトまたはノートブックからデプロイを開始します。

deploy.py
from vertexai import agent_engines

remote_app = agent_engines.create(
    agent_engine=app,
    requirements=[
        "google-cloud-aiplatform[adk,agent_engines]"   
    ]
)

print(f"Deployment finished!")
print(f"Resource Name: {remote_app.resource_name}")
# Resource Name: "projects/{PROJECT_NUMBER}/locations/{LOCATION}/reasoningEngines/{RESOURCE_ID}"
#       注: PROJECT_NUMBERはPROJECT_IDとは異なります。

Vertex AI Expressモードは、ADK CLIデプロイとPythonデプロイの両方をサポートしています。

以下のデプロイコマンド例では、multi_tool_agentサンプルコードをExpressモードでデプロイするプロジェクトとして使用します。

adk deploy agent_engine \
    --display_name="My Agent Name" \
    --api_key=your-api-key-here
    /multi_tool_agent

Tip

ADKプロジェクトをデプロイする際は、メインのADKエージェント定義(root_agent)が 検出可能であることを確認してください。

このコードブロックは、Pythonスクリプトまたはノートブックからデプロイを開始します。

deploy.py
from vertexai import agent_engines

remote_app = agent_engines.create(
    agent_engine=app,
    requirements=[
        "google-cloud-aiplatform[adk,agent_engines]"   
    ]
)

print(f"Deployment finished!")
print(f"Resource Name: {remote_app.resource_name}")
# Resource Name: "projects/{PROJECT_NUMBER}/locations/{LOCATION}/reasoningEngines/{RESOURCE_ID}"
#       注: PROJECT_NUMBERはPROJECT_IDとは異なります。

モニタリングと検証

  • Google CloudコンソールのAgent Engine UIでデプロイ状況をモニタリングできます。
  • remote_app.resource_nameはデプロイされたエージェントの一意の識別子です。エージェントと対話するために必要になります。この情報はADK CLIコマンドから返されるレスポンスからも取得できます。
  • 追加の詳細については、Agent Engineドキュメントのエージェントのデプロイおよびデプロイされたエージェントの管理をご覧ください。

デプロイされたエージェントのテスト

エージェントのAgent Engineへのデプロイが完了したら、Google Cloudコンソールを通じてデプロイされたエージェントを表示し、RESTコールまたはPython用Vertex AI SDKを使用してエージェントと対話できます。

Cloudコンソールでデプロイされたエージェントを表示するには:

このページには、現在選択されているGoogle Cloudプロジェクトにデプロイされているすべてのエージェントが一覧表示されます。エージェントが表示されない場合は、Google Cloudコンソールで対象のプロジェクトが選択されていることを確認してください。既存のGoogle Cloudプロジェクトの選択に関する詳細は、プロジェクトの作成と管理をご覧ください。

Google Cloudプロジェクト情報の検索

デプロイをテストするには、プロジェクトのアドレスとリソース識別情報(PROJECT_ID, LOCATION, RESOURCE_ID)が必要です。Cloudコンソールまたはgcloudコマンドラインツールを使用してこの情報を見つけることができます。

Vertex AI Express モード APIキー

Vertex AI Expressモードを使用している場合は、この手順をスキップしてAPIキーを使用できます。

Google Cloudコンソールでプロジェクト情報を見つけるには:

  1. Google Cloudコンソールで、Agent Engineページに移動します: https://console.cloud.google.com/vertex-ai/agents/agent-engines

  2. ページの上部でAPI URLを選択し、デプロイされたエージェントのクエリURL文字列をコピーします。形式は次のようになります:

    https://$(LOCATION_ID)-aiplatform.googleapis.com/v1/projects/$(PROJECT_ID)/locations/$(LOCATION_ID)/reasoningEngines/$(RESOURCE_ID):query
    

gloudでプロジェクト情報を見つけるには:

  1. 開発環境で、Google Cloudに認証されていることを確認し、次のコマンドを実行してプロジェクトを一覧表示します:

    gcloud projects list
    
  2. デプロイに使用したプロジェクトIDを取得し、このコマンドを実行して追加の詳細情報を取得します:

    gcloud asset search-all-resources \
        --scope=projects/$(PROJECT_ID) \
        --asset-types='aiplatform.googleapis.com/ReasoningEngine' \
        --format="table(name,assetType,location,reasoning_engine_id)"
    

RESTコールを使用したテスト

Agent Engineにデプロイされたエージェントと対話する簡単な方法は、curlツールを使用したRESTコールです。このセクションでは、エージェントへの接続を確認する方法と、デプロイされたエージェントによるリクエストの処理をテストする方法について説明します。

エージェントへの接続確認

CloudコンソールのAgent Engineセクションで利用可能なクエリURLを使用して、実行中のエージェントへの接続を確認できます。この確認はデプロイされたエージェントを実行するのではなく、エージェントに関する情報を返します。

デプロイされたエージェントからレスポンスを取得するためにRESTコールを送信するには:

  • 開発環境のターミナルウィンドウで、リクエストを構築して実行します:

    curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://$(LOCATION)-aiplatform.googleapis.com/v1/projects/$(PROJECT_ID)/locations/$(LOCATION)/reasoningEngines"
    
    curl -X GET \
        -H "x-goog-api-key:YOUR-EXPRESS-MODE-API-KEY" \
        "https://aiplatform.googleapis.com/v1/reasoningEngines"
    

デプロイが成功した場合、このリクエストは有効なリクエストのリストと期待されるデータ形式で応答します。

エージェント接続のアクセス権

この接続テストでは、呼び出し元のユーザーがデプロイされたエージェントの有効なアクセストークンを持っている必要があります。他の環境からテストする場合は、呼び出し元のユーザーがGoogle Cloudプロジェクトのエージェントに接続するアクセス権を持っていることを確認してください。

エージェントリクエストの送信

エージェントプロジェクトからレスポンスを取得するには、まずセッションを作成し、セッションIDを受け取ってから、そのセッションIDを使用してリクエストを送信する必要があります。このプロセスは以下の手順で説明します。

RESTを介してデプロイされたエージェントとの対話をテストするには:

  1. 開発環境のターミナルウィンドウで、このテンプレートを使用してリクエストを構築し、セッションを作成します:

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        https://$(LOCATION)-aiplatform.googleapis.com/v1/projects/$(PROJECT_ID)/locations/$(LOCATION)/reasoningEngines/$(RESOURCE_ID):query \
        -d '{"class_method": "async_create_session", "input": {"user_id": "u_123"},}'
    
    curl \
        -H "x-goog-api-key:YOUR-EXPRESS-MODE-API-KEY" \
        -H "Content-Type: application/json" \
        https://aiplatform.googleapis.com/v1/reasoningEngines/$(RESOURCE_ID):query \
        -d '{"class_method": "async_create_session", "input": {"user_id": "u_123"},}'
    
  2. 前のコマンドのレスポンスで、idフィールドから作成されたセッションIDを抽出します:

    {
        "output": {
            "userId": "u_123",
            "lastUpdateTime": 1757690426.337745,
            "state": {},
            "id": "4857885913439920384", # セッションID
            "appName": "9888888855577777776",
            "events": []
        }
    }
    
  3. 開発環境のターミナルウィンドウで、このテンプレートと前のステップで作成したセッションIDを使用してリクエストを構築し、エージェントにメッセージを送信します:

    curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    https://$(LOCATION)-aiplatform.googleapis.com/v1/projects/$(PROJECT_ID)/locations/$(LOCATION)/reasoningEngines/$(RESOURCE_ID):streamQuery?alt=sse -d '{
    "class_method": "async_stream_query",
    "input": {
        "user_id": "u_123",
        "session_id": "4857885913439920384",
        "message": "Hey whats the weather in new york today?",
    }
    }'
    
    curl \
    -H "x-goog-api-key:YOUR-EXPRESS-MODE-API-KEY" \
    -H "Content-Type: application/json" \
    https://aiplatform.googleapis.com/v1/reasoningEngines/$(RESOURCE_ID):streamQuery?alt=sse -d '{
    "class_method": "async_stream_query",
    "input": {
        "user_id": "u_123",
        "session_id": "4857885913439920384",
        "message": "Hey whats the weather in new york today?",
    }
    }'
    

このリクエストは、デプロイされたエージェントコードからJSON形式のレスポンスを生成するはずです。RESTコールを使用してAgent EngineにデプロイされたADKエージェントと対話する方法の詳細については、Agent Engineドキュメントのデプロイされたエージェントの管理およびAgent Development Kitエージェントの使用をご覧ください。

Pythonを使用したテスト

Agent Engineにデプロイされたエージェントをより洗練された、再現可能な方法でテストするためにPythonコードを使用できます。この手順では、デプロイされたエージェントとのセッションを作成し、処理のためにエージェントにリクエストを送信する方法を説明します。

リモートセッションの作成

remote_appオブジェクトを使用して、デプロイされたリモートエージェントへの接続を作成します。

# 新しいスクリプトにいる場合やADK CLIを使用してデプロイした場合は、次のように接続できます:
# remote_app = agent_engines.get("your-agent-resource-name")
remote_session = await remote_app.async_create_session(user_id="u_456")
print(remote_session)

create_sessionの期待される出力 (リモート):

{'events': [],
'user_id': 'u_456',
'state': {},
'id': '7543472750996750336',
'app_name': '7917477678498709504',
'last_update_time': 1743683353.030133}

idの値はセッションIDで、app_nameはAgent EngineにデプロイされたエージェントのリソースIDです。

リモートエージェントへのクエリ送信

async for event in remote_app.async_stream_query(
    user_id="u_456",
    session_id=remote_session["id"],
    message="whats the weather in new york",
):
    print(event)

async_stream_queryの期待される出力 (リモート):

{'parts': [{'function_call': {'id': 'af-f1906423-a531-4ecf-a1ef-723b05e85321', 'args': {'city': 'new york'}, 'name': 'get_weather'}}], 'role': 'model'}
{'parts': [{'function_response': {'id': 'af-f1906423-a531-4ecf-a1ef-723b05e85321', 'name': 'get_weather', 'response': {'status': 'success', 'report': 'The weather in New York is sunny with a temperature of 25 degrees Celsius (41 degrees Fahrenheit).'}}}], 'role': 'user'}
{'parts': [{'text': 'The weather in New York is sunny with a temperature of 25 degrees Celsius (41 degrees Fahrenheit).'}], 'role': 'model'}

Agent EngineにデプロイされたADKエージェントとの対話に関する詳細については、Agent Engineドキュメントのデプロイされたエージェントの管理およびAgent Development Kitエージェントの使用をご覧ください。

マルチモーダルクエリの送信

エージェントにマルチモーダルクエリ(例:画像を含む)を送信するには、async_stream_querymessageパラメータをtypes.Partオブジェクトのリストで構築します。各パートはテキストまたは画像にすることができます。

画像を含めるには、画像のGoogle Cloud Storage (GCS) URIを提供してtypes.Part.from_uriを使用できます。

from google.genai import types

image_part = types.Part.from_uri(
    file_uri="gs://cloud-samples-data/generative-ai/image/scones.jpg",
    mime_type="image/jpeg",
)
text_part = types.Part.from_text(
    text="What is in this image?",
)

async for event in remote_app.async_stream_query(
    user_id="u_456",
    session_id=remote_session["id"],
    message=[text_part, image_part],
):
    print(event)

Note

モデルとの基盤となる通信では画像のBase64エンコーディングが関与する場合がありますが、Agent Engineにデプロイされたエージェントに画像データを送信するための推奨およびサポートされている方法は、GCS URIを提供することです。

デプロイペイロード

ADKエージェントプロジェクトをAgent Engineにデプロイすると、以下のコンテンツがサービスにアップロードされます。

  • ADKエージェントのコード
  • ADKエージェントのコードで宣言されているすべての依存関係

デプロイには、ADK APIサーバーやADKウェブユーザーインターフェースライブラリは含まれません。Agent EngineサービスがADK APIサーバー機能のためのライブラリを提供します。

デプロイのクリーンアップ

テストとしてデプロイを実行した場合、終了後にクラウドリソースをクリーンアップすることをお勧めします。Google Cloudアカウントに予期せぬ請求が発生するのを避けるために、デプロイされたAgent Engineインスタンスを削除できます。

remote_app.delete(force=True)

force=Trueパラメータは、セッションなど、デプロイされたエージェントから生成されたすべての子リソースも削除します。Google CloudのAgent Engine UIを介してデプロイされたエージェントを削除することもできます。