カスタム コンテナ サンドボックスの概要

標準サンドボックスには、コード実行やコンピュータの使用などの特定のタスクに対応するターンキー ソリューションを提供する、事前定義されたライブラリのセットが用意されています。特定の依存関係、ライブラリ、カスタムツール、または専用のデータプレーン インターフェースを必要とするエージェント ワークロードの場合は、独自のコンテナ イメージ(独自のコンテナ(BYOC)とも呼ばれます)を指定できます。この機能を使用すると、サンドボックス環境の安全な境界内でカスタム ワークロードを実行できます。

始める前に

プロジェクト、イメージ リポジトリ、権限を設定します。

コンテナ イメージを設定する

  1. コンテナ イメージをビルドする: カスタム環境を含む Docker イメージを作成します。Gemini Enterprise Agent Platform サンドボックスとの互換性を確保するには、カスタム イメージが次の要件を満たしている必要があります。

    • OS: Linux ベース(Debian や Ubuntu など)。
    • ランナー: Gemini Enterprise Agent Platform がコマンドの実行に使用できる互換性のあるランナーまたはエントリ ポイントを含める必要があります。
    • セキュリティ: イメージは安全な分離されたサンドボックス内で実行されるため、ルート権限や制限されたシステム リソースへのアクセスを必要としないようにする必要があります。
  2. Artifact Registry にイメージを追加する: Agent Platform がアクセスできる Google CloudArtifact Registry にイメージを追加します。サンドボックスをプロビジョニングするときに、Artifact Registry イメージ URI を指定します。

権限を構成する

Agent Sandbox が Artifact Registry からカスタム コンテナ イメージを pull できるようにするには、イメージを含むリポジトリに対する Artifact Registry 読み取りroles/artifactregistry.reader)ロールを Agent Sandbox サービス エージェントに付与します。

  • Agent Sandbox サービス エージェント: service-PROJECT_NUMBER@gcp-sa-vertex-sandbox.iam.gserviceaccount.com

PROJECT_NUMBER は、プロジェクトのプロジェクト番号に置き換えます。

ロールの付与の詳細については、サービス エージェントに権限を付与するをご覧ください。

Agent Platform インスタンスを作成する

Agent Platform インスタンスがない場合は、作成します。

import vertexai
client = vertexai.Client(
    project='PROJECT_ID',
    location='LOCATION',
    http_options={
        "api_version": "v1beta1",
    }
)
agent_instance = client.agent_engines.create()
agent_instance_name = agent_instance.api_resource.name

次のように置き換えます。

カスタム コンテナ サンドボックスを作成する

カスタム コンテナ サンドボックスを作成するには、まずサンドボックス テンプレート(SandboxEnvironmentTemplate)を作成します。テンプレートを作成すると、Agent Platform は、テンプレートに関連付けられた事前ウォーミング プールを作成し、起動時間を短縮して信頼性を高めます。

テンプレートを作成するには、カスタム コンテナの構成を指定する SandboxEnvironmentTemplate リソースを定義します。

  • コンテナ イメージ: Artifact Registry でホストされているビルド済みのカスタム イメージの URI。
  • ポート: コンテナから公開するネットワーク ポート。

テンプレートを作成する

# Create a custom sandbox template
templates_client = client.agent_engines.sandboxes.templates

operation = templates_client.create(
    name=agent_instance_name,
    display_name="DISPLAY_NAME",
    config={
        "custom_container_environment": {
            "custom_container_spec": {
                "image_uri": "IMAGE_LOCATION"
            },
            "resources": {
                "requests": {
                    "cpu": "1",
                    "memory": "500Mi"
                },
                "limits": {
                    "cpu": "1",
                    "memory": "500Mi"
                }
            },
            "ports": [
                {
                    "port": PORT_NUMBER,
                    "protocol": "TCP"
                }
            ]
        },
        "egress_control_config": {
            "internet_access": True
        }
    }
)
template_name = operation.response.name
print(f"Template created: {template_name}")

サンドボックスを作成する

テンプレートを定義したら、テンプレート リソース名を参照して新しいサンドボックス環境をプロビジョニングできます。

# Provision a sandbox referencing the template
create_operation = client.agent_engines.sandboxes.create(
    name=agent_instance_name,
    config={
        "sandbox_environment_template": template_name,
        "display_name": "DISPLAY_NAME"
    }
)
sandbox = create_operation.response
print(f"Sandbox environment provisioned: {sandbox.name}")

次のステップ