12-1-3. Déployer les agents dans le projet des agents : méthode **console** (interface Google Cloud)
17 min de lecture
Le but : mettre en ligne un, deux ou tous les agents dans le projet des agents
aiml-gemini-ent-exp-0zga, à la souris dans la console Google Cloud
(console.cloud.google.com), et savoir où tout retrouver.
Pas encore d'app Gemini Enterprise. On ne fait que les agents.
Deux choses ne se font pas à la souris, et passent par Cloud Shell, le terminal intégré à la console :
construire l'image d'un agent (Cloud Run) ;
envoyer le code d'un agent à Agent Runtime.
La console ne sait pas fabriquer une image à partir de notre code, ni envoyer un agent Python à Agent Runtime.
Rien à installer : Cloud Shell a déjà gcloud et Python. Les images sont construites dans Google Cloud (Cloud
Build) : ni Docker ni logiciel particulier.
Agents dans le projet de l'app (cas 12-2) ? Identique, dans le projet de l'app.
Écrans décrits d'après la documentation Google. Les libellés peuvent légèrement varier selon la langue et la
version de la console. Les commandes de Cloud Shell sont celles testées en 12-1-1.
Pour chaque agent (exemple : meteo ; liste des clés : agents/trio/catalogue.json), selon l'hébergement choisi :
Cloud Run (A2A)
Agent Runtime
Identité
compte de service meteo-a2a-console-sa
compte de service meteo-console-sa
Rôles du compte
Utilisateur Vertex AI, Rédacteur de journaux, Utilisateur Model Armor
les mêmes
L'agent
service Cloud Run meteo-a2a-console (image agents-console/meteo:v1)
agent Agent Runtime meteo-console
Catalogue
à déclarer dans Agent Registry
inscrit automatiquement
Une fois pour tous les agents : les API, les 2 filtres Model Armor, le dépôt d'images agents-console et le compte
qui construit les images (agents-build-sa).
Le vocabulaire (agent, A2A, carte, Agent Runtime, Agent Registry, compte de service, rôle, API) :
12-1-1, partie 0.
Quoi
🔎 Rechercher (barre du haut)
Écran
API
« API et services »
API et services activés ; Bibliothèque pour en activer
En haut, le sélecteur de projet → choisir aiml-gemini-ent-exp-0zga.
Noter son numéro : 🔎 « Tableau de bord » (ou Accueil) → carte Informations sur le projet →
Numéro du projet : 433175138344.
Vos droits : 🔎 « IAM » → votre adresse → Propriétaire, ou les rôles listés en
12-1-1, partie 4.
2. Vérifier et activer les API
🔎 « API et services » → API et services activés. Pour chaque API du tableau absente de la liste :
+ Activer les API et les services (ou Bibliothèque) → chercher son nom → Activer (1 à 2 minutes).
Nom à chercher
Nom technique
Pour
Cloud Resource Manager API
cloudresourcemanager.googleapis.com
Tout
Service Usage API
serviceusage.googleapis.com
Tout
Identity and Access Management (IAM) API
iam.googleapis.com
Tout
Vertex AI API (Agent Platform)
aiplatform.googleapis.com
Tout (Gemini, Agent Runtime)
Model Armor API
modelarmor.googleapis.com
Tout
Cloud Logging API
logging.googleapis.com
Tout
Agent Registry API
agentregistry.googleapis.com
Catalogue
Cloud Run Admin API
run.googleapis.com
Cloud Run
Artifact Registry API
artifactregistry.googleapis.com
Cloud Run
Cloud Build API
cloudbuild.googleapis.com
Cloud Run (construire les images)
Dialogflow API
dialogflow.googleapis.com
Dialogflow seulement
Attendu : toutes dans API et services activés. Une API affiche Gérer au lieu d'Activer : elle est déjà
active.
3. Model Armor : les deux filtres (une fois)
🔎 « Model Armor » → Templates → Créer un template, deux fois :
Champ
1er template
2e template
ID du template
console-prompt-shield (les questions)
console-response-shield (les réponses)
Région
Multirégion → eu
idem
Détection des URL malveillantes
Activée
idem
Injection de prompt et jailbreak
Activée, confiance Moyenne et supérieure
idem
Protection des données sensibles
De base, activée
idem
IA responsable
Incitation à la haine, Harcèlement, Sexuellement explicite, Dangereux : Moyenne et supérieure
idem
Journalisation des opérations
Activée
idem
Créer.Attendu : les deux dans la liste, région eu. Leurs chemins (ils serviront plus bas) :
projects/aiml-gemini-ent-exp-0zga/locations/eu/templates/console-prompt-shield et …/console-response-shield.
4. Préparer Cloud Shell (une fois)
Icône >_ en haut à droite de la console : Activer Cloud Shell. Un terminal s'ouvre en bas.
Importer le dossier : zippez 09-agents-multi-projets-gemini-enterprise sur votre poste. Dans Cloud Shell, menu
⋮ → Importer → le zip. Puis :
unzip -q 09-agents-multi-projets-gemini-enterprise.zip && cd 09-agents-multi-projets-gemini-enterprise
Le fichier de configuration :Ouvrir l'éditeur (bouton en haut de Cloud Shell) →
config/12-1-agents-dans-projet-exp.env. Remplissez-le comme en
12-1-1, partie 3, avec :
Attendu : le résumé, Agents à déployer : meteo, puis OK (exemple complet en
12-1-1, partie 3).
Cloud Shell se ferme après une période d'inactivité : rouvrez-le, cd 09-agents-multi-projets-gemini-enterprise, et
rechargez la configuration (étape 4). Vos fichiers sont conservés.
Créer.Attendu :agents-console dans la liste. (« Docker » est le nom du format des images : pas besoin du
logiciel Docker.)
Le compte qui construit les images (une fois) : 🔎 « Comptes de service » → + Créer un compte de service →
Nomagents-build-sa → Créer et continuer → rôles :
Rôle (nom affiché)
Pourquoi
Lecteur des objets Storage (Storage Object Viewer)
→ OK. Pourquoi un compte à nous : celui que Cloud Build utilise par défaut n'a souvent aucun droit (vérifié :
… does not have storage.objects.get access). Attendez 1 à 2 minutes avant la première construction.
5.2 L'image de l'agent (Cloud Shell)
Dans Cloud Shell, dans le dossier du projet (cd ~/09-agents-multi-projets-gemini-enterprise) :
gcloud builds submit envoie le code des agents (le point final = le dossier courant, filtré par .gcloudignore)
à Cloud Build, qui construit l'image de cet agent (code commun + meteo_agent/) et la range dans
agents-console. Attendu (environ 1 min 20 s) : Creating temporary archive of 20 file(s) totalling 61.4 KiB…,
puis une ligne qui finit par …/agents-console/meteo:v1 SUCCESS. Le détail de chaque option :
12-1-1, 7.2 a).
À la souris, le suivi : 🔎 « Cloud Build » → Historique (région europe-west1) → la construction → son journal.
La dernière commande affiche la carte A2A de l'agent, une ligne de JSON qui commence par
{"protocolVersion": "0.3", "name": "meteo_agent", …. Copiez-la en entier : elle sert en 5.4 et en 7.
Dans la console : 🔎 « Artifact Registry » → agents-console → l'image meteo → étiquette v1.
5.3 Le compte de service
🔎 « Comptes de service » → + Créer un compte de service :
Nom : meteo-a2a-console-sa → Créer et continuer.
Attribuer des rôles (+ Ajouter un autre rôle entre chaque) :
Rôle (nom affiché)
Pourquoi
Utilisateur Vertex AI (Vertex AI User)
Appeler Gemini
Rédacteur de journaux (Logs Writer)
Écrire ses journaux
Utilisateur Model Armor (Model Armor User)
Utiliser les filtres
Continuer → OK.
Attendu :meteo-a2a-console-sa@aiml-gemini-ent-exp-0zga.iam.gserviceaccount.com dans la liste ; 🔎 « IAM » : ce
compte avec ses 3 rôles.
5.4 Le service Cloud Run
🔎 « Cloud Run » → Déployer un conteneur → Service (ou Créer un service) :
Champ
Valeur (agent meteo)
Déployer une révision à partir d'une image → URL de l'image
Créer.Attendu (1 à 2 minutes) : une coche verte, et parmi les URL du service :
https://meteo-a2a-console-433175138344.europe-west1.run.app (l'adresse écrite dans la carte).
Ce que vous voyez ensuite sur la page du service :
Métriques : appels, temps de réponse ;
Révisions : les versions ;
Journaux : chaque appel et chaque erreur ;
Sécurité : authentification requise ;
Modifier et déployer une nouvelle révision : changer une variable ou l'image.
Attendu :== meteo carte : meteo_agent (A2A 0.3), deux questions et réponses, puis
OK : les agents répondent en A2A v0.3, avec mémoire de conversation. Exemple réel en
12-1-1, 7.3.
5.6 Plusieurs agents
Refaites 5.2 à 5.5 pour chaque agent, en changeant la clé partout : K=taille, compte taille-a2a-console-sa,
service taille-a2a-console, variable AGENT = taille_agent, et sa carte. Les parties 2, 3, 4 et 5.1 ne se
refont pas.
Pour gagner du temps avec beaucoup d'agents : construisez toutes les images d'un coup dans Cloud Shell (liste
AGENTS du fichier), puis faites 5.3 et 5.4 à la souris pour chacun :
for K in $(echo $AGENTS_LISTE); do gcloud builds submit --region=$REGION --project=$PROJET_AGENTS \ --service-account=projects/$PROJET_AGENTS/serviceAccounts/agents-build-sa@$PROJET_AGENTS.iam.gserviceaccount.com \ --config=01-bis-cloud-run-a2a/cloudbuild.yaml \ --substitutions=_AGENT_DIR=${K}_agent,_IMAGE=$REGION-docker.pkg.dev/$PROJET_AGENTS/agents-console/$K:v1 . echo "== carte de $K :"; python3 scripts/carte_a2a.py $K https://$K-a2a-console-$NUM_AGENTS.$REGION.run.appdone
(for K in …; do … done refait le bloc pour chaque agent de la liste.) Au-delà de 3 ou 4 agents, la console devient
longue : Terraform fait tout cela avec une ligne.
6. Agent Runtime : un agent, puis plusieurs
6.1 Le compte de service
Comme en 5.3, avec le nom meteo-console-sa et les mêmes 3 rôles.
Poser une question (« Je cours à Lille demain matin, quoi porter ? ») et voir la réponse, avec les outils appelés
Sessions
Les conversations
Journaux
Les appels et les erreurs
En haut de la page
Le nom de ressourceprojects/…/reasoningEngines/… : copiez-le, Gemini Enterprise le demandera
Attendu : une réponse météo et un conseil de tenue (exemple réel en
12-1-2, 6.1).
6.4 Plusieurs agents
Refaites 6.1 à 6.3 avec un autre K. Ou, après avoir créé les comptes <clé>-console-sa à la souris, d'un coup dans
Cloud Shell :
for K in $(echo $AGENTS_LISTE); do python3 scripts/deployer_agent_runtime.py --projet $PROJET_AGENTS --region $REGION --agent ${K}_agent --nom $K-console \ --compte-service $K-console-sa@$PROJET_AGENTS.iam.gserviceaccount.com \ --env PROMPT_TEMPLATE=$PROMPT_TEMPLATE --env RESPONSE_TEMPLATE=$RESPONSE_TEMPLATEdone
Un agent déjà déployé (même nom) n'est pas recréé : le script répond existe déjà : projects/…. Nouvelle version : le supprimer d'abord (partie 10), puis relancer.
7. Agent Registry : le catalogue
Agents Agent Runtime : déjà inscrits. 🔎 « Agent Registry » → région europe-west1 → meteo-console est là.
Agents Cloud Run : à déclarer, un par un. 🔎 « Agent Registry » → région europe-west1 → Enregistrer (ou
Créer) :
Champ
Valeur (agent meteo)
Type
Agent (service d'agent)
Nom (ID)
meteo-a2a-console
Nom à afficher
Météo & équipement (le nom_affiche du catalogue)
Description
la description de la carte
Spécification
Carte d'agent A2A → coller la carte de 5.2
Enregistrer.Attendu : une ligne par agent et par hébergement. Un clic sur un agent : sa carte, ses
compétences, son adresse. (Ne remplissez pas de champ « interfaces » : l'adresse est déjà dans la carte.)
8. Dialogflow (option)
Un agent conversationnel construit à la souris, différent de nos agents Python.
🔎 « Conversational Agents » (Dialogflow CX) → choisir le projet → Créer un agent → Créer de toutes pièces.
10. Ajouter un agent plus tard, en retirer un, tout supprimer
Plus simple : le script de nettoyage. Il fait l'inventaire de tout ce que les guides créent (Cloud Run, Agent
Runtime, Agent Registry, Dialogflow, comptes de service et leurs rôles, images, filtres Model Armor) et ne supprime
qu'après confirmation :
python3 scripts/nettoyer.py # INVENTAIRE : liste, ne supprime rienpython3 scripts/nettoyer.py --agent meteo # seulement ce qui appartient à meteopython3 scripts/nettoyer.py --supprimer # supprime (tapez l'ID du projet pour confirmer)
Ce que Terraform a créé est ignoré (marqué [terraform]) : supprimez-le avec terraform destroy. Testé en vrai :
8 types supprimés, rôles des comptes compris.
À la souris :
Ajouter un agent du catalogue : 5.2 à 5.5 (Cloud Run), 6.1 à 6.3 (Agent Runtime), 7. Rien d'autre ne bouge.
Créer un nouvel agent : 12-3, partie 1, puis comme ci-dessus.
Nouvelle version d'un agent Cloud Run : nouvelle image :v2 (5.2), puis service → Modifier et déployer une
nouvelle révision → image v2 → Déployer. Même adresse.