Pattern Self-Critique Agent : brouillon → critique → révision

Lancez une boucle self-critique sûre : une revue par schéma, une révision contrôlée et un journal des changements pour une qualité stable.
Sur cette page
  1. Essence Du Pattern
  2. Problème
  3. Solution
  4. Comment Ça Fonctionne
  5. En Code, Ça Donne Ça
  6. À L’exécution, Ça Ressemble À Ça
  7. Quand Ça Convient - Et Quand Non
  8. Adapté
  9. Non Adapté
  10. Différence Avec Reflection
  11. Quand Utiliser Self-Critique (vs Autres Patterns)
  12. Combinaison Avec D’autres Patterns
  13. En Bref
  14. Avantages Et Inconvénients
  15. FAQ
  16. Et Ensuite

Essence Du Pattern

Self-Critique Agent est un pattern où l’agent écrit d’abord un brouillon, puis consigne les risques et les changements obligatoires selon un format fixe, applique une révision contrôlée, et enregistre exactement ce qui a changé.

Quand l’utiliser : quand vous avez besoin d’une revue des risques stricte et structurée, avec révision contrôlée et trace d’audit.


Par rapport à une reflection légère, self-critique est généralement plus strict :

  • la critique a un format fixe (par exemple JSON)
  • les modifications sont autorisées uniquement par règles
  • la croissance de longueur est contrôlée
  • le système garde un journal des changements (avant → après)

Pattern Self-Critique Agent : brouillon → critique → révision

Problème

Imaginons qu’un agent prépare une mise à jour client sur un incident.

Brouillon :

"Le release est retardé à cause d’une panne du module de paiement."

Puis une demande arrive :

"Adoucis la formulation."

Sans cadre self-critique, l’agent fait souvent une "jolie réécriture" qui dépasse la tâche :

  • ajoute de nouvelles hypothèses
  • rend le ton moins précis
  • allonge le texte hors du périmètre nécessaire
  • masque le problème au lieu de le clarifier

"Améliorer la formulation" ne doit pas devenir "changer le sens".

Résultat :

  • le sens dérive sans que ce soit visible
  • on ne sait pas clairement ce qui a été corrigé
  • l’audit ne peut pas reconstruire la logique des modifications
  • la réponse devient moins fiable pour décider

C’est le problème central : pendant "l’amélioration", l’agent peut changer le contenu alors qu’il devait seulement changer la forme.

Solution

Self-Critique impose une règle : ne modifier que ce qui est listé dans "required changes".

Analogie : comme une révision éditoriale à partir d’une liste de remarques. On fige d’abord ce qu’il faut corriger, puis on applique une seule révision contrôlée. La réponse devient plus claire sans changer le sens.

Principe clé : critique structurée d’abord, puis une seule révision contrôlée avec trace d’audit.

L’agent peut proposer des réécritures, mais le système n’autorise que des modifications ciblées explicitement présentes dans "required changes".

Flow contrôlé :

  1. Brouillon : générer la première version
  2. Critique : produire un artefact (risks + required_changes)
  3. Décision : ok/réviser/escalader
  4. Révision : faire une seule révision contrainte
  5. Audit : enregistrer diff + metadata

Cela apporte :

  • plus de clarté sans modifier les faits
  • séparation nette entre "ce qui ne va pas" et "ce qui a été corrigé"
  • révisions reproductibles
  • contrôle des sorties high-risk avant publication

Fonctionne bien si :

  • critique suit une structure fixe (schema-driven)
  • revision est limitée à required_changes
  • no_new_facts est appliqué
  • audit diff est obligatoire

Comment Ça Fonctionne

Diagram

Pour que ce pattern reste sûr, il faut des limites claires :

  • une passe de critique
  • une passe de révision
  • ne pas ajouter de nouveaux faits
  • modifier uniquement les points de required changes
  • ne pas gonfler le texte (par exemple, +20% max)
  • en cas de risque élevé : stop ou revue humaine
Description du flow complet : Draft → Critique → Revise → Audit

Brouillon
L’agent génère la réponse initiale.

Critique
Une étape critique séparée renvoie un résultat structuré : risques, required changes, severity.

Révision
L’agent modifie uniquement ce qui est marqué required, sans élargir le scope.

Audit
Le système loggue before/after, changed flag et un petit diff pour debug et analyse d’incident.

En Code, Ça Donne Ça

PYTHON
draft = writer.generate(goal, context)

critique = critic.review_once(
    draft=draft,
    schema="risks_required_changes_v1",
)

if critique.high_risk:
    return escalate_to_human(critique.reason)

if critique.ok:
    return draft

revised = writer.revise_once(
    draft=draft,
    required_changes=critique.required_changes,
    rules=[
        "no_new_facts",
        "max_length_increase_pct=20",
        "keep_scope",
    ],
)

approved = supervisor.review_output_patch(
    original=draft,
    revised=revised,
    allowed_changes=critique.required_changes,
)

audit.log_diff(
    before=draft,
    after=approved,
    risks=critique.risks,
)

return approved

Self-Critique ne doit pas tourner "jusqu’à parfait". Une critique + une révision (revise), puis vérification que la revision est restée dans required_changes.

À L’exécution, Ça Ressemble À Ça

TEXT
Goal: proposer un plan d’action sûr pendant un incident réseau

Draft:
"Le problème vient du réseau. Il faut redémarrer tout le cluster."

Critique:
- risk: affirmation de cause sans preuve
- risk: action avec blast radius trop large (changements d'état)
- required_change: ajouter des vérifications avant restart

Revision:
"Une cause probable est une panne réseau.
Avant de redémarrer le cluster, vérifier l’état des nœuds et la latence.
Si une panne partielle est confirmée, redémarrer seulement les nœuds affectés."

Exemple complet d’agent Self-Critique

PYPython
TSTypeScript · bientôt

Quand Ça Convient - Et Quand Non

Adapté

SituationPourquoi Self-Critique Convient
Sortie à haut risque avant envoiSelf-critique ajoute un contrôle structuré avant la sortie finale.
Vous avez besoin d’une trace d’audit des changementsLa critique et les modifications sont explicites et auditables.
Vous avez un schéma de critique clairUne structure formelle rend la revue reproductible et contrôlable.
Vous devez réécrire de manière contrôlée sans gonfler la sortieSelf-critique limite la réécriture aux changements nécessaires.

Non Adapté

SituationPourquoi Self-Critique Ne Convient Pas
Latence critique et pas de budget pour une passe supplémentaireUn second passage de génération peut coûter trop cher en temps et en coût.
Impossible d’imposer des règles strictes comme no_new_factsSans contraintes strictes, critique/réécriture peut dégrader la fiabilité.
La tâche est déterministe et validée de façon stable par des testsUne passe de critique en plus duplique un processus de validation déjà fiable.

Parce que self-critique ajoute un second passage de génération et augmente le coût d’exécution.

Différence Avec Reflection

ReflectionSelf-Critique
Profondeur de revueVérification rapide "est-ce ok ?" (revue légère)Consigne strictement "ce qui ne va pas" et "ce qui doit être corrigé"
Formatok/issues/fixrisques, severity, required changes
RevisionGénéralement minimaleRéécriture contrainte selon des règles explicites
Focus opérationnelPasse qualité rapideRéécriture contrôlée + journal des changements

Reflection sert plus souvent de filtre léger avant envoi. Self-Critique sert quand il faut un contrôle plus strict des changements.

Quand Utiliser Self-Critique (vs Autres Patterns)

Utilisez Self-Critique quand vous avez besoin d’une critique approfondie selon des critères explicites et d’une réécriture contrôlée.

Test rapide :

  • si vous devez "évaluer selon une checklist et réécrire la réponse" -> Self-Critique
  • si vous devez "faire juste un court contrôle avant envoi" -> Reflection Agent
Comparaison avec d’autres patterns et exemples

Aide-mémoire rapide :

Si la tâche ressemble à ça...Utilisez
Vous avez besoin d’un contrôle rapide avant la réponse finaleReflection Agent
Vous avez besoin d’une critique profonde par critères et d’une réécriture de réponseSelf-Critique Agent
Vous devez reprendre le processus après timeout, exception ou panne d’outilFallback-Recovery Agent
Vous avez besoin de checks policy stricts avant une action risquéeGuarded-Policy Agent

Exemples :

Reflection : "Avant la réponse finale, vérifier rapidement logique, complétude et erreurs évidentes."

Self-Critique : "Évaluer la réponse avec une checklist (précision, complétude, risques), puis réécrire."

Fallback-Recovery : "Si l’API ne répond pas, faire retry -> source fallback -> escalade."

Guarded-Policy : "Avant envoi de données vers l’extérieur, vérifier la policy : est-ce autorisé ?"

Combinaison Avec D’autres Patterns

  • Self-Critique + RAG : critique et révisions autorisées uniquement dans les faits du contexte de retrieval.
  • Self-Critique + Supervisor : les modifications risquées ne sont pas appliquées automatiquement et partent en validation humaine.
  • Self-Critique + Reflection : Reflection fait un pre-check rapide, puis Self-Critique s’active pour les réponses complexes ou discutables.

En Bref

En bref

Self-Critique Agent :

  • Crée une liste claire de problèmes et de changements obligatoires
  • Applique une seule révision contrôlée
  • Conserve un journal des changements (avant → après)
  • Empêche que "l’amélioration du texte" change le sens discrètement

Avantages Et Inconvénients

Avantages

vérifie la réponse avant la version finale

réduit les erreurs évidentes

améliore la clarté des formulations

aide à respecter les contraintes de la tâche

Inconvénients

ajoute une étape supplémentaire et de la latence

ne remplace pas la vérification des faits

sans critères clairs, peut sur-corriger

FAQ

Q: Peut-on faire plusieurs passes de critique ?
A: Techniquement oui, mais cela devient vite une boucle coûteuse. Standard sûr de base : 1 + 1.

Q: Pourquoi le logging des changements est obligatoire ?
A: Sans diff, il est difficile de comprendre ce qui a modifié la qualité et où l’erreur est apparue.

Q: Faut-il un modèle critique séparé ?
A: Parfois oui, mais ce n’est pas obligatoire. Le plus important : schéma strict, validation de sortie, et règles de révision strictes.

Et Ensuite

Self-Critique améliore la qualité grâce à une réécriture contrôlée.

Mais que faire quand la réponse doit non seulement être réécrite, mais aussi validée par policy avant une action risquée ?

⏱️ 11 min de lectureMis à jour Mars, 2026Difficulté: ★★★
Suite pratique

Exemples d’implémentation du patron

Passe à l’implémentation avec des projets d’exemple.

Intégré : contrôle en productionOnceOnly
Ajoutez des garde-fous aux agents tool-calling
Livrez ce pattern avec de la gouvernance :
  • Budgets (steps / plafonds de coût)
  • Permissions outils (allowlist / blocklist)
  • Kill switch & arrêt incident
  • Idempotence & déduplication
  • Audit logs & traçabilité
Mention intégrée : OnceOnly est une couche de contrôle pour des systèmes d’agents en prod.
Auteur

Cette documentation est organisée et maintenue par des ingénieurs qui déploient des agents IA en production.

Le contenu est assisté par l’IA, avec une responsabilité éditoriale humaine quant à l’exactitude, la clarté et la pertinence en production.

Les patterns et recommandations s’appuient sur des post-mortems, des modes de défaillance et des incidents opérationnels dans des systèmes déployés, notamment lors du développement et de l’exploitation d’une infrastructure de gouvernance pour les agents chez OnceOnly.