Übersicht über die Sandbox für benutzerdefinierte Container

Die Standardsandboxes bieten eine vordefinierte Reihe von Bibliotheken, die schlüsselfertige Lösungen für bestimmte Aufgaben wie die Ausführung von Code und die Computernutzung bieten. Für agentische Arbeitslasten, die bestimmte Abhängigkeiten, Bibliotheken, benutzerdefinierte Tools oder spezielle Schnittstellen für die Datenebene erfordern, können Sie Ihre eigenen Container-Images bereitstellen (auch als „Bring Your Own Container“ oder BYOC bezeichnet). Mit dieser Funktion können Sie benutzerdefinierte Arbeitslasten in der sicheren Umgebung einer Sandbox ausführen.

Hinweis

Richten Sie Ihr Projekt, das Image-Repository und die Berechtigungen ein.

Container-Image einrichten

  1. Container-Image erstellen: Erstellen Sie ein Docker-Image, das Ihre benutzerdefinierte Umgebung enthält. Damit Ihr benutzerdefiniertes Image mit den Sandboxes der Gemini Enterprise Agent Platform kompatibel ist, muss es die folgenden Anforderungen erfüllen:

    • Betriebssystem: Linux-basiert (z. B. Debian oder Ubuntu).
    • Runner: Muss einen kompatiblen Runner oder Einstiegspunkt enthalten, den die Gemini Enterprise Agent Platform zum Ausführen von Befehlen verwenden kann.
    • Sicherheit: Das Image darf keine Root-Berechtigungen oder den Zugriff auf eingeschränkte Systemressourcen erfordern, da es in einer sicheren, isolierten Sandbox ausgeführt wird.
  2. Bild in Artifact Registry hinzufügen: Fügen Sie Ihr Bild in Google CloudArtifact Registry hinzu, damit die Agent Platform darauf zugreifen kann. Geben Sie beim Bereitstellen der Sandbox den Artifact Registry-Image-URI an.

Berechtigungen konfigurieren

Damit die Agent Sandbox Ihr benutzerdefiniertes Container-Image aus Artifact Registry abrufen kann, weisen Sie dem Dienst-Agent der Agent Sandbox die Rolle Artifact Registry-Leser (roles/artifactregistry.reader) für das Repository zu, das das Image enthält:

  • Agent Sandbox-Dienst-Agent: service-<var>PROJECT_NUMBER</var>@gcp-sa-vertex-sandbox.iam.gserviceaccount.com

Ersetzen Sie <var>PROJECT_NUMBER</var> durch die Projektnummer Ihres Projekts.

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Berechtigungen für einen Dienst-Agenten erteilen.

Agent Platform-Instanz erstellen

Wenn Sie keine Agent Platform-Instanz haben, erstellen Sie eine.

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

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Google Cloud Projekt-ID
  • LOCATION: Die Google Cloud Region für Ihre Agent Platform-Instanz. Unterstützte Regionen

Benutzerdefinierte Container-Sandbox erstellen

Wenn Sie eine benutzerdefinierte Containersandbox erstellen möchten, müssen Sie zuerst eine Sandbox-Vorlage (SandboxEnvironmentTemplate) erstellen. Nachdem Sie eine Vorlage erstellt haben, erstellt die Agent Platform vorab geladene Pools, die der Vorlage zugeordnet sind, um schnellere und zuverlässigere Startzeiten zu ermöglichen.

Um eine Vorlage zu erstellen, definieren Sie eine SandboxEnvironmentTemplate-Ressource, in der die Konfiguration für Ihren benutzerdefinierten Container angegeben wird:

  • Container-Image: Der URI eines vordefinierten benutzerdefinierten Images, das in Artifact Registry gehostet wird.
  • Ports: Netzwerkports, die im Container verfügbar gemacht werden sollen.

Vorlage erstellen

# 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}")

Sandbox erstellen

Nachdem Sie die Vorlage definiert haben, können Sie eine neue Sandbox-Umgebung bereitstellen, indem Sie auf den Ressourcennamen der Vorlage verweisen.

# 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}")

Nächste Schritte