エージェントをデプロイする

Agent Engine にエージェントをデプロイするには:

  1. (省略可)パッケージの要件を定義する
  2. (省略可)ソースファイルを定義する
  3. (省略可)Cloud Storage ディレクトリを整理する
  4. (省略可)リソース メタデータを定義する
  5. AgentEngine インスタンスを作成する

始める前に

エージェントをデプロイする前に、次のタスクを完了してください。

  1. 環境を設定する
  2. エージェントを開発する

ステップ 1: パッケージの要件を定義する

エージェントのデプロイに必要なパッケージのセットを指定します。pip によってインストールされるアイテムのリストか、要件ファイル形式に従うファイルのパスのいずれかです。

エージェントに依存関係がない場合は、None に設定できます。

requirements = None

エージェントがフレームワーク固有のテンプレートを使用している場合は、エージェントを開発するときに、インポートする SDK バージョン(1.77.0 など)を指定する必要があります。

LangChain

requirements = [
    "google-cloud-aiplatform[agent_engines,langchain]",
    # any other dependencies
]

LangGraph

requirements = [
    "google-cloud-aiplatform[agent_engines,langgraph]",
    # any other dependencies
]

(省略可)バージョンの制約

特定のパッケージ(google-cloud-aiplatform など)のバージョンの上限を設定または固定する必要がある場合:

requirements = [
    # See https://pypi.org/project/google-cloud-aiplatform for the latest version.
    "google-cloud-aiplatform[agent_engines,langgraph]==1.77.0",
]

リストにパッケージと制約を追加できます。

requirements = [
    "google-cloud-aiplatform[agent,langgraph]==1.75.0",
    "cloudpickle==3.0", # new
]

[省略可] 開発ブランチ

GitHub ブランチまたは pull リクエストにあるパッケージのバージョンを指定できます。次に例を示します。

requirements = [
    "google-cloud-aiplatform[agent_engines,langchain] @ git+https://github.com/googleapis/python-aiplatform.git@BRANCH_NAME", # new
    "cloudpickle==3.0",
]

[省略可] 要件ファイルの形式

要件のリストをファイル(path/to/requirements.txt など)に保持できます。

requirements = "path/to/requirements.txt"

ここで、path/to/requirements.txt は、要件ファイル形式に準拠したテキスト ファイルです。次に例を示します。

google-cloud-aiplatform[agent_engines,langchain]
cloudpickle==3.0

ステップ 2: 追加のパッケージ

必要なローカル Python ソースファイルを含むローカル ファイルまたはディレクトリを含めることができます。パッケージの要件と比較すると、PyPI や GitHub では利用できない、独自に開発したプライベート ユーティリティを使用できます。

エージェントに追加のパッケージが不要な場合は、None に設定できます。

extra_packages = None

[省略可] ファイルとディレクトリ

単一のファイル(agents/agent.py など)を含めるには、そのファイルをリストに追加します。

extra_packages = ["agents/agent.py"]

ディレクトリ全体(agents/ など)のファイルセットを含めるには、ディレクトリを指定します。

extra_packages = ["agents"] # directory that includes agents/agent.py

[省略可] ホイール バイナリ

Python wheel バイナリpath/to/python_package.whl など)を含めて、パッケージ要件で指定できます。

requirements = [
    "google-cloud-aiplatform[agent,langgraph]",
    "cloudpickle==3.0",
    "python_package.whl",  # install from the whl file that was uploaded
]
extra_packages = ["path/to/python_package.whl"]  # bundle the whl file for uploading

ステップ 3: Cloud Storage ディレクトリ

ステージング アーティファクトが既存のサブバケット(Cloud Storage バケット内のフォルダ)に対応している場合、アーティファクトは上書きされます。必要に応じて、ステージング アーティファクトのサブバケットを指定できます。この手順は省略可能です。デフォルトのサブバケット内のファイルを上書きしても問題ない場合は、None に設定できます。

gcs_dir_name = None

ファイルの上書きを回避するには(dev、staging、prod などの異なる環境の場合など)、対応するサブバケットを設定し、アーティファクトをステージングするサブバケットを指定します。次に例を示します。

gcs_dir_name = "dev" # or "staging" or "prod"

競合を回避したい場合や回避する必要がある場合は、ランダムな UUID を生成できます。次に例を示します。

import uuid
gcs_dir_name = str(uuid.uuid4())

ステップ 4: リソース メタデータ

Vertex AI で作成される ReasoningEngine リソースにメタデータを設定できます。次に例を示します。

display_name = "Currency Exchange Rate Agent (Staging)"

description = """
An agent that has access to tools for looking up the exchange rate.

If you run into any issues, please contact the dev team.
"""

パラメータの一覧については、API リファレンスをご覧ください。

ステップ 5: AgentEngine インスタンスを作成する

Vertex AI にアプリケーションをデプロイするには、agent_engines.create を使用してオブジェクトをパラメータとして渡します。

remote_agent = agent_engines.create(
    local_agent,                    # Required.
    requirements=requirements,      # Optional.
    extra_packages=extra_packages,  # Optional.
    gcs_dir_name=gcs_dir_name,      # Optional.
    display_name=display_name,      # Optional.
    description=description,        # Optional.
)

デプロイが完了するまでに数分かかります。エージェントをデプロイする際は、

  1. アーティファクトのバンドルがローカルに生成されます。このバンドルは次の要素で構成されます。
  2. バンドルは、アーティファクトのステージングのために Cloud Storage に(対応するサブバケットに)アップロードされます。
  3. それぞれのアーティファクトの Cloud Storage URI は PackageSpec で指定します。
  4. Agent Engine サービスはリクエストを受け取り、コンテナをビルドしてバックエンドで HTTP サーバーを起動します。

デプロイのレイテンシは、必要なパッケージのインストールにかかった合計時間によって異なります。デプロイされると、remote_agent は Vertex AI で実行されている local_agent のインスタンスに対応し、クエリまたは削除が可能になります。エージェントのローカル インスタンスとは別です。

デプロイされた各エージェントには一意の識別子があります。次のコマンドを実行して、デプロイされたエージェントの resource_name 識別子を取得できます。

remote_agent.resource_name

ベスト プラクティス

  1. パッケージ バージョンを固定します(再現可能なビルドの場合)。追跡する一般的なパッケージには、google-cloud-aiplatformcloudpicklelangchainlangchain-corelangchain-google-vertexaipydantic などがあります。
  2. アプリ内の依存関係の数を最小限に抑えます。これにより、依存関係を更新する際の破壊的変更の数を減らし、新しい機能のためにアプリケーションを随時更新しやすくなります。

エージェント スターター パックで本番環境にデプロイする

エージェント スターター パックは、Vertex AI Agent Engine 用に構築された本番環境対応の生成 AI エージェント テンプレートのコレクションです。次の機能を提供することで、デプロイを高速化します。

  • 事前構築済みのエージェント テンプレート: ReAct、RAG、マルチエージェントなど。
  • インタラクティブなプレイグラウンド: エージェントをテストして操作できます。
  • 自動化されたインフラストラクチャ: Terraform を使用してリソース管理を効率化します。
  • CI/CD パイプライン: Cloud Build を活用した自動デプロイ ワークフロー。
  • オブザーバビリティ: Cloud Trace と Cloud Logging の組み込みサポートが含まれています。

使ってみる: クイックスタート

次のステップ