Les bacs à sable standards fournissent un ensemble prédéfini de bibliothèques qui proposent des solutions clés en main pour des tâches spécifiques telles que l'exécution de code et l'utilisation de l'ordinateur. Pour les charges de travail agentiques qui nécessitent des dépendances, des bibliothèques, des outils personnalisés ou des interfaces de plan de données spécialisées, vous pouvez fournir vos propres images de conteneur (également appelées "apportez votre propre conteneur" ou BYOC). Cette fonctionnalité vous permet d'exécuter des charges de travail personnalisées dans les limites sécurisées d'un environnement de bac à sable.
Avant de commencer
Configurez votre projet, votre dépôt d'images et vos autorisations.
Configurer votre image de conteneur
Créez une image de conteneur : créez une image Docker contenant votre environnement personnalisé. Pour assurer la compatibilité avec les bacs à sable Gemini Enterprise Agent Platform, votre image personnalisée doit répondre aux exigences suivantes :
- OS : basé sur Linux (par exemple, Debian ou Ubuntu).
- Exécuteur : doit inclure un exécuteur ou un point d'entrée compatible que Gemini Enterprise Agent Platform peut utiliser pour exécuter des commandes.
- Sécurité : l'image ne doit pas nécessiter de privilèges root ni d'accès à des ressources système restreintes, car elle s'exécutera dans un bac à sable sécurisé et isolé.
Ajouter une image à Artifact Registry : ajoutez votre image à Artifact Registry Google Cloud, où Agent Platform peut y accéder. Lorsque vous provisionnez votre bac à sable, fournissez l'URI de l'image Artifact Registry.
Configurer les autorisations
Pour permettre à l'Agent Sandbox d'extraire votre image de conteneur personnalisée depuis Artifact Registry, accordez le rôle Lecteur Artifact Registry (roles/artifactregistry.reader) sur le dépôt contenant l'image à l'agent de service Agent Sandbox :
- Agent de service du bac à sable de l'agent :
service-PROJECT_NUMBER@gcp-sa-vertex-sandbox.iam.gserviceaccount.com
Remplacez PROJECT_NUMBER par le numéro de votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez Accorder des autorisations à un agent de service.
Créer une instance Agent Platform
Si vous n'avez pas d'instance Agent Platform, créez-en une.
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
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .LOCATION: région Google Cloud de votre instance Agent Platform. Consultez les régions disponibles.
Créer un bac à sable de conteneur personnalisé
Pour créer un bac à sable de conteneur personnalisé, vous devez d'abord créer un modèle de bac à sable (SandboxEnvironmentTemplate). Une fois le modèle créé, Agent Platform crée des pools préchauffés associés au modèle pour fournir des temps de démarrage plus rapides et plus fiables.
Pour créer un modèle, définissez une ressource SandboxEnvironmentTemplate qui spécifie la configuration de votre conteneur personnalisé :
- Image de conteneur : URI d'une image personnalisée préconfigurée hébergée dans Artifact Registry.
- Ports : ports réseau à exposer depuis le conteneur.
Créer le modèle
# 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}")
Créer le bac à sable
Une fois votre modèle défini, vous pouvez provisionner un nouvel environnement de bac à sable en référençant le nom de ressource du modèle.
# 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}")
Étapes suivantes
- Découvrez comment gérer vos bacs à sable.
- Découvrez comment gérer les modèles de bac à sable.