Leçon 1 — Cas d'usage et architecture

La boucle générer, critiquer, réviser

5 min de lecture

La boucle générer, critiquer, réviser

Le besoin

Une équipe commerciale rédige des dizaines d'offres par mois à partir de briefs courts : l'entreprise, l'offre, la cible, le problème du client, l'action attendue. Elle veut un premier texte publiable, pas un brouillon à reprendre entièrement. Ses exigences sont connues : clair, concret, une seule action à la fin, un ton professionnel, sans faute, lisible sur un téléphone.

L'idée : séparer celui qui écrit de celui qui juge

L'article Self-Refine (Madaan et al., 2023) a montré qu'un modèle qui critique son propre texte puis le révise produit souvent une meilleure version que son premier jet. On sépare ici les rôles en agents distincts : chacun a une instruction courte et focalisée.

sequenceDiagram
  participant R as redacteur
  participant C as critique
  participant A as arbitre (Python)
  participant V as reviseur
  R->>C: brouillon v0
  C->>A: notes 4,5,5,4,4 et remarques
  A->>V: moyenne 4.4 inférieure à 4.8, 4 consignes
  V->>C: brouillon v1
  C->>A: notes 4,5,5,5,5
  A-->>A: grille satisfaite, escalate, fin de boucle
RôleType d'agentPourquoi ce choix
RédacteurLLM, modèle légerun premier jet n'a pas besoin du modèle le plus cher
CritiqueLLM, sortie structuréedes notes chiffrées, exploitables par du code
ArbitreBaseAgent en Pythonla décision d'arrêter doit être prévisible
RéviseurLLM, modèle légerapplique des consignes précises

Une grille qu'une machine peut appliquer

Une bonne grille mélange deux types de critères :

  1. Jugés par le modèle (subjectifs, notés de 1 à 5) : clarté, concret, appel à l'action, ton, correction de la langue.
  2. Mesurés par le code (objectifs, vrai ou faux) : nombre de mots entre 90 et 150, aucun mot interdit (« révolutionnaire », « leader »…), présence des mentions obligatoires (le prix exact, le lien de réservation).

Lequel de ces critères faut-il vérifier en code plutôt que par le critique LLM ?

Quand arrêter la boucle ?

Une boucle sans condition d'arrêt fiable coûte cher et peut ne jamais finir. Il en faut deux :

  • Arrêt sur succès : la grille est satisfaite (chaque note ≥ 4, moyenne ≥ 4,8, tous les contrôles en code passent).
  • Arrêt de sécurité : un nombre maximal de tours (max_iterations=4). Atteint, on rend le dernier texte marqué non validé, pour relecture humaine.

Dans ADK, un LoopAgent répète ses sous-agents dans l'ordre et s'arrête dès qu'un événement porte actions.escalate = True, ou quand max_iterations est atteint. Il y a deux façons de produire cet événement :

MéthodeQui décide ?AvantageLimite
Outil intégré exit_loop donné à un agent LLMle modèleune ligne de codele modèle peut l'appeler trop tôt, ou jamais
Agent BaseAgent qui émet escalate=Truevotre codedécision prévisible et testablequelques lignes de plus

Le lab utilise la seconde ; l'exercice de la leçon 3 vous fait écrire la première.

La boucle atteint max_iterations sans que la grille soit satisfaite. Que doit faire le système ?

Exercice : écrire la grille d'un autre contenu

Vous adaptez la boucle à des fiches produit pour une boutique en ligne. Proposez 4 critères jugés par le modèle et 3 contrôles en code.

Voir la solution

Critères jugés (1 à 5) :

  • exactitude : aucune caractéristique absente de la fiche technique ;
  • bénéfice client : chaque caractéristique est traduite en usage ;
  • lisibilité : phrases courtes, une idée par phrase ;
  • ton de marque : conforme au guide éditorial fourni.

Contrôles en code :

  • longueur entre 60 et 120 mots ;
  • la référence produit et le prix apparaissent tels quels ;
  • aucune allégation interdite (« garanti à vie », « médical », etc.).

Résultat obtenu

Trace réelle du 2026-10-15 (gemini-3.5-flash-lite pour écrire, gemini-3.5-flash pour critiquer) : le premier jet est refusé, la révision est validée au tour 2.

python agent.py (extrait)
  [redacteur] Expert-comptable, ne laissez pas une panne informatique paralyser votre cabinet en pleine période fiscale ! ...
  [critique] {"clarte":4,"concret":5,"appel_action":5,"ton":4,"correction":4,"remarques":["Corriger la faute d'élision dans 'en cas de incident' ...
  [arbitre] Tour 1 : 4 consigne(s)
  [reviseur] Expert-comptable, ne laissez pas une panne informatique paralyser votre cabinet en période fiscale ! ...
  [critique] {"clarte":4,"concret":5,"appel_action":5,"ton":5,"correction":5,"remarques":[...]}
  [arbitre] Tour 2 : VALIDÉ

Je sais faire

  • J'explique pourquoi séparer rédacteur, critique et arbitre
  • Je construis une grille qui mélange critères jugés et contrôles mesurés
  • Je prévois un arrêt sur succès ET un arrêt de sécurité
  • Je compare exit_loop et un arbitre déterministe
Suivant