Die Standardsandboxen bieten eine vordefinierte Reihe von Bibliotheken, die schlüsselfertige Lösungen für bestimmte Aufgaben wie die Codeausführung und die Computernutzung bieten. Für Agenten-Arbeitslasten, die bestimmte Abhängigkeiten, Bibliotheken, benutzerdefinierte Tools oder spezielle Datenebenen-Schnittstellen 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 innerhalb der sicheren Grenzen einer Sandbox-Umgebung ausführen.
Hinweis
Richten Sie Ihr Projekt, Image-Repository und Ihre Berechtigungen ein.
Container-Image einrichten
Container-Image erstellen: Erstellen Sie ein Docker-Image, das Ihre benutzerdefinierte Umgebung enthält. Damit die Kompatibilität mit Gemini Enterprise Agent Platform-Sandboxen gewährleistet ist, muss Ihr benutzerdefiniertes Image die folgenden Anforderungen erfüllen:
- Betriebssystem: Linux-basiert (z. B. Debian oder Ubuntu).
- Runner: Muss einen kompatiblen Runner oder Einstiegspunkt enthalten, den Gemini Enterprise Agent Platform zum Ausführen von Befehlen verwenden kann.
- Sicherheit: Darf keine Root-Berechtigungen oder Zugriff auf eingeschränkte Systemressourcen erfordern, da das Image in einer sicheren, isolierten Sandbox ausgeführt wird.
Image zu Artifact Registry hinzufügen: Fügen Sie Ihr Image zu Google Cloud Artifact Registry hinzu, wo Agent Platform darauf zugreifen kann. Geben Sie beim Bereitstellen Ihrer Sandbox den Artifact Registry-Image-URI an.
Berechtigungen konfigurieren
Damit die Agent Sandbox Ihr benutzerdefiniertes Container-Image aus Artifact Registry abrufen kann,
gewähren Sie dem Dienst-Agent der Agent Sandbox die Rolle Artifact Registry-Leser
(roles/artifactregistry.reader) für das Repository, das das Image enthält:
- Dienst-Agent der Agent Sandbox:
service-PROJECT_NUMBER@gcp-sa-vertex-sandbox.iam.gserviceaccount.com
Ersetzen Sie PROJECT_NUMBER durch die Projektnummer Ihres Projekts.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Berechtigungen für einen Dienst Agenten gewähren.
Agent Platform-Instanz erstellen
Wenn Sie keine Agent Platform-Instanz haben, erstellen Sie eine.
import agentplatform
client = agentplatform.Client(
project='PROJECT_ID',
location='LOCATION',
http_options={
"api_version": "v1beta1",
}
)
remote_agent = client.runtimes.create()
remote_agent_name = remote_agent.api_resource.name
Ersetzen Sie Folgendes:
PROJECT_ID: Ihre Google Cloud Projekt-IDLOCATION: Die Google Cloud Region für Ihre Agent Platform-Instanz. Siehe Unterstützte Regionen.
Benutzerdefinierte Container-Sandbox erstellen
Wenn Sie eine benutzerdefinierte Container-Sandbox erstellen möchten, erstellen Sie zuerst eine Sandbox-Vorlage (SandboxEnvironmentTemplate). Nachdem Sie eine Vorlage erstellt haben, erstellt Agent Platform vorab aufgewärmte Pools, die mit der Vorlage verknüpft sind, um schnellere und zuverlässigere Startzeiten zu ermöglichen.
Um eine Vorlage zu erstellen, definieren Sie eine SandboxEnvironmentTemplate-Ressource, die die Konfiguration für Ihren benutzerdefinierten Container angibt:
- Container-Image: Der URI eines vorgefertigten 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.sandboxes.templates
operation = templates_client.create(
name=remote_agent_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 Ihre 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.sandboxes.create(
name=remote_agent_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
- Informationen zum Verwalten von Sandboxen.
- Informationen zum Verwalten von Sandbox-Vorlagen.