Schémas d’autocritique et de révision
Demandez aux modèles d’évaluer et de réécrire leurs propres sorties selon une constitution.
Schémas d’autocritique et de révision est une leçon AI Prompt Engineering gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Prompt Engineering, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Prompt Engineering comprend 4 leçons au total.
L'autocritique comme technique de formulation d'instructions
Même sans processus formel d'entraînement à l'IA constitutionnelle, vous pouvez demander à n'importe quel LLM performant de critiquer et d'améliorer ses propres sorties. Ce modèle d'autocritique améliore considérablement la qualité pour les tâches où l'exactitude, l'exhaustivité ou la sécurité sont importantes.
L'idée essentielle est la suivante : les modèles possèdent davantage de connaissances qu'ils n'en montrent lors d'une première tentative. Une instruction de critique fait émerger ces connaissances.
Modèle de critique élémentaire de l'exactitude
La forme la plus simple d'autocritique consiste à demander au modèle de vérifier l'exactitude factuelle de sa réponse et de corriger les erreurs éventuelles.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def generate_and_self_critique(question):
# Step 1: Generate
r1 = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': question}]
)
initial = r1.content[0].text
# Step 2: Accuracy critique
critique_prompt = (
f'Question: {question}\n\n'
f'Your previous answer: {initial}\n\n'
'Review your previous answer for factual accuracy. '
'Identify any errors, unsupported claims, or missing important nuances. '
'Then provide a corrected, improved answer.'
)
r2 = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': critique_prompt}]
)
return r2.content[0].text
result = generate_and_self_critique('What caused the fall of the Roman Empire?')
print(result[:300])Modèle de vérification de l'exhaustivité
Une critique de l'exhaustivité demande au modèle de vérifier que sa réponse répond entièrement à chaque partie de la question. Cela est particulièrement utile pour les questions en plusieurs parties, auxquelles les réponses produites lors d'une première tentative omettent souvent de répondre à certaines sous-questions.
COMPLETENESS_CRITIQUE = (
'Original question: {question}\n\n'
'Your previous answer: {answer}\n\n'
'Check if your answer fully addresses the question:\n'
'1. List each part or sub-question in the original question.\n'
'2. For each part, indicate whether your answer addressed it.\n'
'3. If any parts were missed or incomplete, provide a revised answer '
'that covers everything.'
)
def check_completeness(question, initial_answer, client):
prompt = COMPLETENESS_CRITIQUE.format(
question=question,
answer=initial_answer
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=600,
messages=[{'role': 'user', 'content': prompt}]
)
return response.content[0].textModèle de critique des préjudices et de la sécurité
Une critique des préjudices demande au modèle d'examiner sa réponse pour y déceler d'éventuelles conséquences négatives avant de la montrer aux utilisateurs. C'est le principe central de l'application des principes de la CAI en production.
HARM_CRITIQUE_PROMPT = (
'Review the following assistant response for potential harms:\n\n'
'User message: {user_message}\n'
'Assistant response: {response}\n\n'
'Consider:\n'
'- Could this response enable harmful actions?\n'
'- Could it be misused by someone with bad intentions?\n'
'- Does it respect the privacy and dignity of individuals?\n'
'- Could it cause psychological harm to vulnerable users?\n\n'
'If the response has issues, explain them and provide a revised '
'version that addresses the concerns while still being helpful. '
'If the response is fine, say "Response is appropriate" and quote it back.'
)
def safety_check(user_message, response, client):
prompt = HARM_CRITIQUE_PROMPT.format(
user_message=user_message,
response=response
)
result = client.messages.create(
model='claude-opus-4-5',
max_tokens=600,
messages=[{'role': 'user', 'content': prompt}]
)
return result.content[0].textCritique selon plusieurs critères
Pour les sorties à forts enjeux, effectuez la critique selon plusieurs critères en une seule fois en les énumérant explicitement. Cette méthode est plus efficace que de lancer une instruction de critique distincte pour chaque critère.
MULTI_CRITERIA_CRITIQUE = (
'Evaluate this response on three criteria:\n\n'
'Question: {question}\n'
'Response: {response}\n\n'
'Criteria:\n'
'1. ACCURACY: Are all facts correct and claims well-supported?\n'
'2. COMPLETENESS: Does it fully address the question?\n'
'3. CLARITY: Is it easy to understand for the target audience?\n\n'
'For each criterion, rate it Good/Fair/Poor and explain why.\n'
'Then provide an improved response that scores Good on all three.'
)
def multi_criteria_check(question, response, client):
prompt = MULTI_CRITERIA_CRITIQUE.format(
question=question,
response=response
)
result = client.messages.create(
model='claude-opus-4-5',
max_tokens=800,
messages=[{'role': 'user', 'content': prompt}]
)
return result.content[0].textL'étape de révision : bonnes pratiques
L'instruction de révision doit accomplir trois choses :
- Rappeler au modèle la demande initiale (le contexte)
- Présenter les résultats de la critique
- Demander une réponse révisée qui corrige les problèmes
Ne demandez pas au modèle d'expliquer à nouveau la critique pendant la révision : demandez-lui simplement de corriger les problèmes. Une instruction de révision orientée vers l'action produit de meilleurs résultats.
# Good revision prompt: action-oriented
GOOD_REVISION = (
'Given this critique of your response, please write an improved version.\n\n'
'Original question: {question}\n'
'Critique: {critique}\n\n'
'Write only the improved response — no preamble, no meta-commentary:'
)
# Bad revision prompt: too passive
BAD_REVISION = (
'Here is a critique of your response. Can you maybe consider '
'revising it somewhat based on the feedback below?\n'
'Critique: {critique}'
# Missing original question context!
# Wishy-washy language reduces revision quality
)Enchaîner plusieurs cycles de révision
Un seul cycle de critique-révision ne suffit souvent pas pour répondre à des exigences de qualité très complexes. Vous pouvez en enchaîner plusieurs, chacun appliquant un principe différent ou vérifiant les problèmes restants.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def multi_round_revision(question, n_rounds=2):
# Round 0: Initial generation
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': question}]
).content[0].text
principles = [
'factual accuracy and avoiding unsupported claims',
'completeness — ensuring all parts of the question are answered',
]
for i, principle in enumerate(principles[:n_rounds]):
critique_prompt = (
f'Question: {question}\n'
f'Current response: {response}\n\n'
f'Critique for {principle} and provide an improved version:'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': critique_prompt}]
).content[0].text
print(f'Round {i+1} complete')
return responseAutocritique pour la génération de code
L'autocritique est particulièrement efficace pour la génération de code. Le modèle écrit d'abord le code, puis l'examine à la recherche de bogues, de cas limites et de problèmes de sécurité — détectant souvent des erreurs qui lui avaient échappé la première fois.
CODE_CRITIQUE_PROMPT = (
'Review this Python code for correctness and security issues:\n\n'
'Task: {task}\n\n'
'Code:\n'
''''python\n'
'{code}\n'
''''\n\n'
'Check for:\n'
'1. Logic errors or off-by-one mistakes\n'
'2. Unhandled edge cases (empty input, None, division by zero)\n'
'3. Security issues (SQL injection, path traversal, etc.)\n\n'
'If issues exist, list them and provide a corrected version. '
'If the code is correct, say so and explain why it handles edge cases properly.'
)
def critique_code(task, code, client):
prompt = CODE_CRITIQUE_PROMPT.format(task=task, code=code)
result = client.messages.create(
model='claude-opus-4-5',
max_tokens=800,
messages=[{'role': 'user', 'content': prompt}]
)
return result.content[0].textLa cohérence interne comme solution de remplacement
La cohérence interne est une autre approche : générez la même réponse N fois, puis choisissez la réponse majoritaire ou demandez au modèle de synthétiser la meilleure réponse à partir de plusieurs brouillons.
Utilisez la cohérence interne pour les questions dont les réponses correctes sont clairement définies. Utilisez la critique-révision lorsque la qualité comporte plusieurs dimensions (exactitude + ton + sécurité).
import anthropic
from collections import Counter
client = anthropic.Anthropic(api_key='sk-ant-...')
def self_consistency(question, n=5):
"""Generate N responses and pick the most common answer."""
responses = []
for _ in range(n):
r = client.messages.create(
model='claude-haiku-4-5',
max_tokens=100,
temperature=0.7,
messages=[{'role': 'user', 'content': question}]
)
responses.append(r.content[0].text.strip())
# Pick most common answer
vote = Counter(responses)
winner, count = vote.most_common(1)[0]
print(f'Consensus ({count}/{n}): {winner}')
return winner
result = self_consistency('What is the sum of angles in a triangle?')Quand la critique nuit : risque de critique excessive
L'autocritique n'est pas toujours bénéfique. Soyez attentif aux modes d'échec suivants :
- Critique complaisante : le modèle affirme que sa réponse est excellente alors qu'elle est erronée
- Prudence excessive : le modèle supprime des informations utiles lors de la révision parce qu'elles semblent risquées
- Corrections hallucinées : la révision introduit de nouvelles erreurs qui n'étaient pas présentes dans l'original
Pour limiter ces problèmes : utilisez un modèle différent pour la critique, fondez les critiques sur des faits précis et validez les sorties révisées par rapport à des réponses de référence fiables.
Mesurer l'efficacité de la critique
Vérifiez si la critique améliore réellement les sorties en comparant les réponses initiales et révisées à une référence étalon. Vous saurez ainsi si les appels supplémentaires au LLM justifient leur coût.
def measure_critique_lift(examples, generate_fn, critique_fn, metric_fn):
"""
Measure how much critique improves accuracy over initial generation.
"""
initial_scores = []
revised_scores = []
for ex in examples:
initial = generate_fn(ex.question)
revised = critique_fn(ex.question, initial)
initial_scores.append(metric_fn(ex.answer, initial))
revised_scores.append(metric_fn(ex.answer, revised))
avg_initial = sum(initial_scores) / len(initial_scores)
avg_revised = sum(revised_scores) / len(revised_scores)
print(f'Initial: {avg_initial:.1%}')
print(f'Revised: {avg_revised:.1%}')
print(f'Lift: +{avg_revised - avg_initial:.1%}')
return avg_revised - avg_initialVérification des connaissances : moment de l'autocritique
Quel modèle est le plus approprié pour détecter les erreurs factuelles d'une réponse avant de la présenter aux utilisateurs ?
Récapitulatif : modèles d'auto-critique et de révision
Les invites d'auto-critique demandent au modèle d'évaluer sa propre sortie selon des critères précis — exactitude, exhaustivité, sécurité ou clarté — puis de produire une version révisée et améliorée. Modèles efficaces : critique de l'exactitude (vérifier les erreurs factuelles), contrôle de l'exhaustivité (avez-vous traité toutes les parties ?), critique des risques (cela pourrait-il faciliter des actions dangereuses ?) et revue de code (vérifier les bogues et les cas limites). Enchaînez plusieurs itérations pour les sorties à enjeux élevés. Mesurez l'amélioration réelle pour vérifier que le coût supplémentaire est justifié.
Questions Fréquemment Posées
La leçon « Schémas d’autocritique et de révision » est-elle gratuite ?
Oui — le texte complet de « Schémas d’autocritique et de révision » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Prompt Engineering, passe à CoddyKit PRO. Le cours AI Prompt Engineering comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Schémas d’autocritique et de révision » ?
Demandez aux modèles d’évaluer et de réécrire leurs propres sorties selon une constitution. Tu pratiques AI Prompt Engineering avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Prompt Engineering ?
Aucune expérience préalable n'est requise. AI Prompt Engineering sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Schémas d’autocritique et de révision » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Prompt Engineering ?
Oui. Chaque leçon AI Prompt Engineering inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Principes de CAI et prompts de critique
- Schémas d’autocritique et de révision
- Tension entre innocuité et utilité
- Implémenter CAI dans des applications