Panoramica della sandbox del container personalizzato

Le sandbox standard forniscono un insieme predefinito di librerie che offrono soluzioni chiavi in mano per attività specifiche come l'esecuzione di codice e l'utilizzo del computer. Per i carichi di lavoro agentici che richiedono dipendenze, librerie, strumenti personalizzati o interfacce del piano dati specializzate, puoi fornire le tue immagini container (note anche come BYOC, Bring Your Own Container). Questa funzionalità ti consente di eseguire carichi di lavoro personalizzati all'interno dei confini sicuri di un ambiente sandbox.

Prima di iniziare

Configura il progetto, il repository di immagini e le autorizzazioni.

Configurare l'immagine container

  1. Crea un'immagine container: crea un'immagine Docker che contenga il tuo ambiente personalizzato. Per garantire la compatibilità con le sandbox di Gemini Enterprise Agent Platform, l'immagine personalizzata deve soddisfare i seguenti requisiti:

    • Sistema operativo: basato su Linux (ad esempio Debian o Ubuntu).
    • Runner: deve includere un runner o un punto di ingresso compatibile che Gemini Enterprise Agent Platform possa utilizzare per eseguire i comandi.
    • Sicurezza: non deve richiedere privilegi di root o accesso a risorse di sistema con limitazioni , poiché l'immagine verrà eseguita all'interno di una sandbox sicura e isolata.
  2. Aggiungi l'immagine ad Artifact Registry: aggiungi l'immagine a Google Cloud Artifact Registry, dove Agent Platform può accedervi. Quando esegui il provisioning della sandbox, fornisci l'URI dell'immagine di Artifact Registry.

Configura autorizzazioni

Per consentire ad Agent Sandbox di eseguire il pull dell'immagine container personalizzata da Artifact Registry, assegna il ruolo Lettore di artefatti Artifact Registry (roles/artifactregistry.reader) al repository che contiene l'immagine a l'agente di servizio Agent Sandbox:

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

Sostituisci <var>PROJECT_NUMBER</var> con il numero di progetto del tuo progetto.

Per saperne di più sull'assegnazione dei ruoli, consulta Concedere autorizzazioni a un agente di servizio.

Crea un'istanza di Agent Platform

Se non hai un'istanza di Agent Platform, creane una.

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

Sostituisci quanto segue:

  • PROJECT_ID: l' Google Cloud ID progetto.
  • LOCATION: la Google Cloud regione per l'istanza di Agent Platform. Vedi Regioni supportate.

Crea una sandbox di container personalizzati

Per creare una sandbox di container personalizzati, devi prima creare un modello di sandbox (SandboxEnvironmentTemplate). Dopo aver creato un modello, Agent Platform crea pool pre-riscaldati associati al modello per fornire tempi di avvio più rapidi e affidabili.

Per creare un modello, definisci una risorsa SandboxEnvironmentTemplate, che specifica la configurazione del container personalizzato:

  • Immagine container: l'URI di un'immagine personalizzata precompilata ospitata in Artifact Registry.
  • Porte: porte di rete da esporre dal container.

Crea il modello

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

Crea la sandbox

Dopo aver definito il modello, puoi eseguire il provisioning di un nuovo ambiente sandbox facendo riferimento al nome della risorsa del modello.

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

Passaggi successivi