Les bacs à sable standards fournissent un ensemble prédéfini de bibliothèques qui offrent des solutions clés en main pour des tâches spécifiques telles que l'exécution de code et l'utilisation d'ordinateurs. Pour les charges de travail d'agent 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éer une image de conteneur : créez une image Docker contenant votre environnement personnalisé. Pour garantir 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é : ne doit pas nécessiter de privilèges racine ni d'accès à des ressources système restreintes, car l'image s'exécutera dans un bac à sable sécurisé et isolé.
Ajouter une image à Artifact Registry : ajoutez votre image à Google Cloud Artifact Registry, 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 autoriser Agent Sandbox à extraire votre image de conteneur personnalisée d'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 Agent Sandbox :
service-<var>PROJECT_NUMBER</var>@gcp-sa-vertex-sandbox.iam.gserviceaccount.com
Remplacez <var>PROJECT_NUMBER</var> 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 ne disposez 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 Google Cloud projet.LOCATION: région de votre instance Agent Platform. Google Cloud Consultez les régions compatibles.
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 que vous avez créé un modèle, Agent Platform crée des pools préchauffés qui y sont associés pour offrir 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édéfinie 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 que vous avez défini votre modèle, vous pouvez provisionner un nouvel environnement de bac à sable en référençant le nom de la ressource de 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}")
Étape suivante
- Découvrez comment gérer vos bacs à sable.