Leçon 14 — Tutoriels pas à pas

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.

Les autres méthodes, même résultat : 12-1-1 Shell · 12-1-2 Terraform.

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.


Sommaire

  1. Ce que vous allez créer, et où le voir
  2. Ouvrir la console sur le bon projet
  3. Vérifier et activer les API
  4. Model Armor : les deux filtres (une fois)
  5. Préparer Cloud Shell (une fois)
  6. Cloud Run (A2A) : un agent, puis plusieurs
  7. Agent Runtime : un agent, puis plusieurs
  8. Agent Registry : le catalogue
  9. Dialogflow (option)
  10. Vérification finale
  11. Ajouter un agent plus tard, en retirer un, tout supprimer
  12. Ce qui peut arriver

0. Ce que vous allez créer, et où le voir

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-sacompte de service meteo-console-sa
Rôles du compteUtilisateur Vertex AI, Rédacteur de journaux, Utilisateur Model Armorles mêmes
L'agentservice Cloud Run meteo-a2a-console (image agents-console/meteo:v1)agent Agent Runtime meteo-console
Catalogueà déclarer dans Agent Registryinscrit 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
Comptes de service« Comptes de service »Liste ; un clic → Autorisations
Rôles« IAM »Liste des comptes et de leurs rôles
Filtres« Model Armor »Templates
Images« Artifact Registry »Dépôts → agents-console
Cloud Run« Cloud Run »Services
Agent Runtime« Agent Runtime » (anciennement « Agent Engine », dans Vertex AI)Déploiements
Catalogue« Agent Registry »Région europe-west1
Dialogflow« Conversational Agents »Agents
Erreurs« Journaux » (Logs Explorer)Filtre par service

1. Ouvrir la console sur le bon projet

  1. console.cloud.google.com, avec votre compte.
  2. En haut, le sélecteur de projet → choisir aiml-gemini-ent-exp-0zga.
  3. Noter son numéro : 🔎 « Tableau de bord » (ou Accueil) → carte Informations sur le projet → Numéro du projet : 433175138344.
  4. 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 à chercherNom techniquePour
Cloud Resource Manager APIcloudresourcemanager.googleapis.comTout
Service Usage APIserviceusage.googleapis.comTout
Identity and Access Management (IAM) APIiam.googleapis.comTout
Vertex AI API (Agent Platform)aiplatform.googleapis.comTout (Gemini, Agent Runtime)
Model Armor APImodelarmor.googleapis.comTout
Cloud Logging APIlogging.googleapis.comTout
Agent Registry APIagentregistry.googleapis.comCatalogue
Cloud Run Admin APIrun.googleapis.comCloud Run
Artifact Registry APIartifactregistry.googleapis.comCloud Run
Cloud Build APIcloudbuild.googleapis.comCloud Run (construire les images)
Dialogflow APIdialogflow.googleapis.comDialogflow 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 :

Champ1er template2e template
ID du templateconsole-prompt-shield (les questions)console-response-shield (les réponses)
RégionMultirégion → euidem
Détection des URL malveillantesActivéeidem
Injection de prompt et jailbreakActivée, confiance Moyenne et supérieureidem
Protection des données sensiblesDe base, activéeidem
IA responsableIncitation à la haine, Harcèlement, Sexuellement explicite, Dangereux : Moyenne et supérieureidem
Journalisation des opérationsActivéeidem

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)

  1. Icône >_ en haut à droite de la console : Activer Cloud Shell. Un terminal s'ouvre en bas.
  2. 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
  3. 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 :
    • PROJET_APP=, NUM_APP=, APP_ID= vides ;
    • AGENTS="meteo" (ou vos agents) ;
    • DOSSIER=~/09-agents-multi-projets-gemini-enterprise ;
    • deux lignes de plus, pour utiliser vos filtres de la partie 3 :
    PROMPT_TEMPLATE=projects/aiml-gemini-ent-exp-0zga/locations/eu/templates/console-prompt-shield
    RESPONSE_TEMPLATE=projects/aiml-gemini-ent-exp-0zga/locations/eu/templates/console-response-shield
  4. Charger :
    source scripts/config.sh config/12-1-agents-dans-projet-exp.env
    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.


5. Cloud Run (A2A) : un agent, puis plusieurs

5.1 Le dépôt d'images (une fois)

🔎 « Artifact Registry » → Dépôts → + Créer un dépôt :

ChampValeur
Nomagents-console
FormatDocker
Type d'emplacementRégion → europe-west1

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 → Nom agents-build-sa → Créer et continuer → rôles :

Rôle (nom affiché)Pourquoi
Lecteur des objets Storage (Storage Object Viewer)Lire le code envoyé
Rédacteur Artifact Registry (Artifact Registry Writer)Ranger l'image dans le dépôt
Rédacteur de journaux (Logs Writer)Écrire le journal de construction

→ 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) :

K=meteo                                                                  # ← la clé de l'agent
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 .
python3 scripts/carte_a2a.py $K https://$K-a2a-console-$NUM_AGENTS.$REGION.run.app
  • 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 :

  1. Nom : meteo-a2a-console-sa → Créer et continuer.

  2. 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
  3. 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) :

ChampValeur (agent meteo)
Déployer une révision à partir d'une image → URL de l'imageSélectionner → Artifact Registry → agents-console → meteo → v1
Nom du servicemeteo-a2a-console
Régioneurope-west1
AuthentificationExiger l'authentification (le service est privé)
FacturationBasée sur les requêtes
Scaling du serviceNombre minimal d'instances 0, maximal 1
Entrée (Ingress)Tout (l'authentification fait le tri)
Conteneur(s) → Paramètres → RessourcesMémoire 1 Gio, processeur 1
Conteneur(s) → Variables et secrets → + Ajouter une variable, 6 foisvoir le tableau ci-dessous
Sécurité → Compte de servicemeteo-a2a-console-sa
Nom de la variableValeur
AGENTmeteo_agent
AGENT_CARDla carte copiée en 5.2 (toute la ligne JSON)
GOOGLE_CLOUD_PROJECTaiml-gemini-ent-exp-0zga
MODELgemini-3.5-flash
PROMPT_TEMPLATEprojects/aiml-gemini-ent-exp-0zga/locations/eu/templates/console-prompt-shield
RESPONSE_TEMPLATEprojects/aiml-gemini-ent-exp-0zga/locations/eu/templates/console-response-shield

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.

5.5 Tester (Cloud Shell, 3 à 5 minutes après)

URL=https://$K-a2a-console-$NUM_AGENTS.$REGION.run.app ./01-bis-cloud-run-a2a/test.sh $K

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.app
done

(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.

6.2 Envoyer l'agent (Cloud Shell, une commande)

K=meteo
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_TEMPLATE

Attendu (3 à 5 minutes) : en cours… 0 s, …, puis déployé : projects/100000000002/locations/europe-west1/reasoningEngines/….

6.3 Tester et explorer (console)

🔎 « Agent Runtime » → Déploiements → meteo-console :

OngletCe que vous y faites
PlaygroundPoser une question (« Je cours à Lille demain matin, quoi porter ? ») et voir la réponse, avec les outils appelés
SessionsLes conversations
JournauxLes appels et les erreurs
En haut de la pageLe nom de ressource projects/…/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_TEMPLATE
done

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) :
ChampValeur (agent meteo)
TypeAgent (service d'agent)
Nom (ID)meteo-a2a-console
Nom à afficherMétéo & équipement (le nom_affiche du catalogue)
Descriptionla description de la carte
SpécificationCarte 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.

  1. 🔎 « Conversational Agents » (Dialogflow CX) → choisir le projet → Créer un agent → Créer de toutes pièces.
  2. Nom Accueil magasin, Région europe-west1, Langue fr, Fuseau horaire Europe/Paris → Créer.
  3. Tester l'agent (panneau de droite) → « Bonjour ». Attendu : une salutation (« Salutations ! »).
  4. Paramètres de l'agent → copier le nom projects/…/locations/europe-west1/agents/… : la source de l'agent Dialogflow (Gemini Enterprise la demandera).

Construire ensuite le parcours : Flux et Pages, ou un Playbook (génératif).


9. Vérification finale

OùCe que vous devez voir
🔎 « API et services » → activésLes API de la partie 2
🔎 « Model Armor » → Templatesconsole-prompt-shield, console-response-shield (eu)
🔎 « Comptes de service »Pour chaque agent : <clé>-a2a-console-sa et/ou <clé>-console-sa
🔎 « IAM »Chaque compte : Utilisateur Vertex AI, Rédacteur de journaux, Utilisateur Model Armor
🔎 « Artifact Registry » → agents-consoleUne image par agent Cloud Run
🔎 « Cloud Run » → Services<clé>-a2a-console, coche verte, Authentification requise
🔎 « Agent Runtime » → Déploiements<clé>-console ; le Playground répond
🔎 « Agent Registry »Une ligne par agent et par hébergement
Cloud Shell : test.shOK : les agents répondent…

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 rien
python3 scripts/nettoyer.py --agent meteo           # seulement ce qui appartient à meteo
python3 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.
  • Retirer un agent, dans cet ordre :
    1. 🔎 « Agent Registry » → l'entrée → Supprimer.
    2. 🔎 « Cloud Run » → le service → Supprimer.
    3. 🔎 « Agent Runtime » → l'agent → Supprimer (avec ses sessions).
    4. 🔎 « IAM » → le compte → Modifier (crayon) → supprimer ses rôles.
    5. 🔎 « Comptes de service » → le compte → Supprimer.
    6. 🔎 « Artifact Registry » → agents-console → l'image → Supprimer.
  • Tout supprimer : chaque agent comme ci-dessus. Puis, quand plus rien ne s'en sert :
    • les deux templates Model Armor ;
    • le dépôt agents-console et le compte agents-build-sa ;
    • l'agent Dialogflow ;
    • le dossier dans Cloud Shell.

11. Ce qui peut arriver

Ce que vous voyezCauseQue faire
Un menu ou un rôle introuvableAPI pas activéePartie 2
L'image n'apparaît pas dans SélectionnerConstruction pas finie ou en échec, ou autre dépôt / région🔎 « Cloud Build » → Historique : Réussie ? Refaire 5.2 ; vérifier agents-console, europe-west1
PERMISSION_DENIED à gcloud builds submitAPI Cloud Build ou compte agents-build-sa tout neufsAttendre 1 à 2 minutes, relancer
does not have storage.objects.get accessCompte agents-build-sa absent, sans ses 3 rôles, ou option --service-account oubliée5.1 ; garder l'option
Le service ne démarre pas (croix rouge)Variable manquante ou mal copiée (souvent AGENT_CARD tronquée)Service → Journaux ; corriger la variable → nouvelle révision
test.sh : ÉCHEC : réponse bloquée par Model ArmorRôles pas encore actifs, ou mauvais chemin de templateAttendre 2 à 5 minutes ; vérifier PROMPT_TEMPLATE
test.sh : ÉCHEC : 403Votre compte n'a pas le droit d'appeler le serviceÊtre propriétaire, ou Sécurité → ajouter votre adresse avec Demandeur Cloud Run
L'URL du service ne contient pas 433175138344Normal : Cloud Run affiche plusieurs URLVérifier que https://meteo-a2a-console-433175138344.europe-west1.run.app est parmi elles
Error code 13 (Agent Runtime)Erreur interne de GoogleRelancer la commande 6.2
Météo : « erreur 429 »Le service météo public limite les appelsRéessayer plus tard
Cloud Shell : variables videsSession rouverteRecharger la configuration (4.4)

Et après : l'app Gemini Enterprise existe ? 12-1, C6 et C7.

Suivant