Padrões de autocrítica e revisão
Solicitação para que os modelos avaliem e reescrevam suas próprias saídas com base em uma constituição.
Padrões de autocrítica e revisão é uma aula grátis de AI Prompt Engineering no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Prompt Engineering, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Prompt Engineering inclui 4 aulas no total.
Autocrítica como técnica de elaboração de instruções
Mesmo sem um processo formal de treinamento de CAI, você pode instruir qualquer LLM capaz a criticar e aprimorar suas próprias saídas. Esse padrão de autocrítica melhora significativamente a qualidade em tarefas nas quais a precisão, a completude ou a segurança são importantes.
A principal percepção é que os modelos possuem mais conhecimento do que demonstram em uma primeira tentativa. Uma instrução de crítica traz esse conhecimento à tona.
Padrão básico de crítica da precisão
A forma mais simples de autocrítica é pedir ao modelo que revise sua resposta quanto à precisão factual e corrija todos os erros.
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])Padrão de verificação de completude
Uma crítica de completude pede ao modelo que verifique se sua resposta responde integralmente a todas as partes da pergunta. Isso é especialmente útil para perguntas com várias partes, nas quais as respostas de primeira tentativa frequentemente deixam de abordar subperguntas.
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].textPadrão de crítica de danos e segurança
Uma crítica de danos pede ao modelo que revise sua resposta em busca de possíveis consequências negativas antes de mostrá-la aos usuários. Esse é o ponto central da aplicação dos princípios da CAI em produção.
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].textCrítica com múltiplos critérios
Para saídas de alto impacto, faça a crítica com base em vários critérios em uma única execução, listando-os explicitamente. Isso é mais eficiente do que fazer chamadas de crítica separadas para cada critério.
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].textA etapa de revisão: boas práticas
A instrução de revisão deve fazer três coisas:
- Relembrar ao modelo a solicitação original, isto é, o contexto
- Apresentar os resultados da crítica
- Pedir uma resposta revisada que trate dos problemas
Não peça ao modelo que explique novamente a crítica durante a revisão — peça apenas que corrija o problema. Manter a instrução de revisão orientada à ação produz resultados melhores.
# 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
)Encadeando várias rodadas de revisão
Uma rodada de crítica e revisão muitas vezes não é suficiente para requisitos de qualidade muito complexos. Você pode encadear várias rodadas, cada uma aplicando um princípio diferente ou verificando os problemas restantes.
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 responseAutocrítica para geração de código
A autocrítica é particularmente eficaz para a geração de código. Primeiro, o modelo escreve o código e depois o revisa em busca de erros, casos extremos e problemas de segurança — frequentemente detectando erros que não percebeu na primeira vez.
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].textAutoconsistência como alternativa
Autoconsistência é uma abordagem diferente: gere a mesma resposta N vezes e depois faça uma votação por maioria ou peça ao modelo que sintetize a melhor resposta a partir de vários rascunhos.
Use a autoconsistência para perguntas com respostas corretas claras. Use crítica e revisão quando a qualidade tiver várias dimensões, como precisão, tom e segurança.
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?')Quando a crítica prejudica: risco de crítica excessiva
A autocrítica nem sempre é benéfica. Observe estes modos de falha:
- Crítica bajuladora: o modelo afirma que sua resposta é ótima mesmo quando está errada
- Cautela excessiva: o modelo remove informações úteis durante a revisão porque elas parecem arriscadas
- Correções inventadas: a revisão introduz novos erros que não existiam na resposta original
Para reduzir esses problemas: use um modelo diferente para a crítica, fundamente as críticas em fatos específicos e valide as saídas revisadas comparando-as com respostas reconhecidamente corretas.
Medindo a eficácia da crítica
Acompanhe se a crítica realmente melhora as saídas comparando as respostas inicial e revisada com um padrão-ouro. Isso informa se as chamadas adicionais ao LLM compensam o custo.
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_initialVerificação de conhecimento: momento da autocrítica
Qual padrão é mais apropriado para detectar erros factuais em uma resposta antes de exibi-la aos usuários?
Recapitulação: padrões de autocrítica e revisão
Os prompts de autocrítica pedem ao modelo que revise sua própria saída com base em critérios específicos — precisão, completude, segurança ou clareza — e então produza uma versão revisada e aprimorada. Padrões eficazes: crítica de precisão (revise em busca de erros factuais), verificação de completude (você abordou todas as partes?), crítica de possíveis danos (isso poderia viabilizar ações prejudiciais?) e revisão de código (verifique se há erros e casos extremos). Encadeie várias rodadas para saídas de alto risco. Meça o ganho real para confirmar que o custo adicional é justificável.
Perguntas Frequentes
A aula “Padrões de autocrítica e revisão” é grátis?
Sim — o texto completo de “Padrões de autocrítica e revisão” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Prompt Engineering, atualize para CoddyKit PRO. O curso de AI Prompt Engineering inclui 4 aulas no total.
O que vou aprender em “Padrões de autocrítica e revisão”?
Solicitação para que os modelos avaliem e reescrevam suas próprias saídas com base em uma constituição. Você pratica AI Prompt Engineering com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Prompt Engineering?
Nenhuma experiência prévia é necessária. AI Prompt Engineering no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Padrões de autocrítica e revisão”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Prompt Engineering?
Sim. Cada aula de AI Prompt Engineering inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Princípios do CAI e prompts de crítica
- Padrões de autocrítica e revisão
- Tensão entre não causar danos e ser útil
- Implementando CAI em aplicações