0Pricing
AI Prompt Engineering · Aula

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].text

Padrã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].text

Crí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].text

A etapa de revisão: boas práticas

A instrução de revisão deve fazer três coisas:

  1. Relembrar ao modelo a solicitação original, isto é, o contexto
  2. Apresentar os resultados da crítica
  3. 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 response

Autocrí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].text

Autoconsistê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_initial

Verificaçã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

  1. Princípios do CAI e prompts de crítica
  2. Padrões de autocrítica e revisão
  3. Tensão entre não causar danos e ser útil
  4. Implementando CAI em aplicações
← Voltar para AI Prompt Engineering