Auto-refinamento e crítica: Melhoria do rendimento iterativo
Type: Build
Languages: Python (stdlib)
Prerequisites: Phase 14 · 01 (Agent Loop), Phase 14 · 03 (Reflexion)
Time: ~60 minutes
Objetivos de aprendizagem
- Explique as três instruções do Estado Auto-Refinação (generar, feedback, refinar) e explique por que a história importa para o requisito de refinar.
- Explique a visão crítica da CRITIC: Os LLM são pouco confiáveis na autoverificação sem base externa.
- Implementar um loop de auto-refinamento stdlib com histórico e um verificador externo opcional.
- Mapear este padrão para o fluxo de trabalho "evaluador-optimizador" da Anthropic e as barragens de saída do OpenAI Agents SDK.
O problema
Um agente produz uma resposta quase correta. Talvez uma linha de código tenha um erro de sintaxe. Talvez um resumo seja muito longo. Talvez um plano perca um caso de borda. O que você quer é: o agente critica sua própria saída, e depois a corrige.
O Auto-Refine mostra que isso funciona com um único modelo, sem dados de treinamento, sem RL. Mas há uma pega: os LLM são maus na auto-verificação em fatos concretos.
Juntos, estes dois artigos definem o padrão 2026 para melhoria iterativa: gerar, verificar (externamente quando possível), refinar, parar quando o verificador passar.
O conceito
Auto-refinamento (Madaan et al., NeurIPS 2023)
Um LLM, três funções:
generate(task) -> output_0
feedback(task, output_0) -> critique_0
refine(task, output_0, critique_0, history) -> output_1
feedback(task, output_1) -> critique_1
refine(task, output_1, critique_1, history) -> output_2
...
stop when feedback says "no issues" or budget exhausted.Detalhe-chave:refineO artigo abla isto: queda de história e queda de qualidade acentuada.
Título: +20 melhorias absolutas em média em 7 tarefas (matemática, código, sigla, diálogo) incluindo GPT-4.
CRITA (Gou et al., arXiv:2305.11738, v4 fevereiro 2024)
A fraqueza da auto-refinagem: a etapa de feedback é a própria pontuação do LLM. Para as alegações factuais, esta é pouco confiável (uma alucinação muitas vezes parece convincente para o modelo que a produziu).feedback(task, output)comverify(task, output, tools)ondetoolsinclui:
- Um motor de busca de alegações factuais.
- Um intérprete de código para corretão de código.
- Uma calculadora para aritmética.
- Verificadores específicos de domínio (testes de unidade, verificadores de tipo, linters).
O verificador produz uma crítica estruturada baseada nos resultados das ferramentas.
Título: CRITIC supera a Auto-Refina em tarefas factuais porque a crítica é fundamentada. Em tarefas sem verificadores externos (escritura criativa, formatação), CRITIC reduz-se a Auto-Refina.
A condição de parada
Duas formas comuns:
- Verifier passes.Os testes externos apresentam sucesso. Preferido quando disponível (testes de unidade, verificador de tipo, afirmação de barragem).
- No feedback issued.Modelo diz "a saída está bem". Mais barato, mas não confiável; par com um limite máximo de iteração.
2026 padrão: combiná-los. "Pare se o verificador passar OR modelo diz bem E iterações >= 2 OR iterações >= max_iterations".
Otimizador de avaliação (Antropic, 2024)
O post de dezembro de 2024 da Anthropic nomeia isso como um dos cinco padrões de fluxo de trabalho.
- O avaliador: marca a produção e produz uma crítica.
- Otimizador: revisa a saída dada a crítica.
O sistema de avaliação de dados é um sistema de análise de dados que é um sistema de análise de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de dados de
Os dispositivos de segurança de saída do SDK OpenAI Agents
O OpenAI Agents SDK envia este padrão como "gardalas de saída".OutputGuardrailTripwireTriggeredOs guardrails podem chamar ferramentas (estilo CRITIC) ou ser funções puras (estilo Auto-Refinação).
2026 armadilhas
- Rubber-stamp loops.O mesmo modelo fazendo geração e crítica com o mesmo estilo de prompt converge em "parece-me bem". Use instruções estruturalmente diferentes, ou um modelo mais pequeno e barato para a crítica.
- Over-refinement.Cada passagem de refinamento adiciona latência e tokens. O orçamento 1-3 passa; depois disso, escala para revisão humana.
- CRITIC on trivial tasks.Se não houver um verificador externo, o CRITIC degenera para Auto-Refine; não pague a latência por um verificador de estúdio.
Construí-lo
code/main.pyA verificação de dados é feita por um grupo de dados que são utilizados para verificar o formato de um objeto.
Componentes:
generate- Produtor de roteiro.feedbackAutocrítica de estilo LLM.verify_externalVerificador baseado de estilo CRITIC.refinereescreve a saída dada história.- Condição de parada passes de verificador ou max 4 iterações.
- É o que é ?
python3 code/main.pyCompare as corridas Auto-Refina versus CRITIC. CRITIC pega um erro factual Auto-Refina omitido porque o verificador externo tem terra a auto-crítica não.
Usá-lo
O avaliador-optimizador da Anthropic é este padrão em linguagem amigável à Claude. Os guardrails de saída do OpenAI Agents SDK são CRITIC-formados (guardrails podem chamar ferramentas). LangGraph envia um nó de reflexão que lê como Self-Refine. O Gemini 2.5 Computer Use do Google adiciona um avaliador de segurança por passo que é uma variante CRITIC: cada ação é verificada antes de se comprometer.
Envia-o
outputs/skill-refine-loop.mdConfigura um loop de avaliador-otimizador dado a forma da tarefa, disponibilidade do verificador e orçamento de iteração. Emite instruções para gerador, avaliador/verificador e optimizador, além de uma política de parada.
Exercícios
- Execute o brinquedo com max_iterations=1.
- Substitua o verificador externo por um barulhento (random 30% falsos positivos). O que faz o loop? Esta é a realidade de 2026 da maioria das pilhas de guarda-roupa.
- Implementar uma variante de "generação crítica em diferentes modelos": grandes modelos geram, pequenos modelos criticam.
- Leia a secção 3 CRITIC (arXiv:2305.11738 v4).
- Mapa do SDK de Agentes OpenAI
output_guardrailsO que é que o SDK está errado e o que é que está certo?
Termos-chave
| Term | What people say | What it actually means |
|---|---|---|
| Self-Refine | "LLM that fixes itself" | Generate -> feedback -> refine loop in one model, with history |
| CRITIC | "Tool-grounded verification" | Replace feedback with an external verifier (search, code, calc, tests) |
| Evaluator-Optimizer | "Anthropic workflow pattern" | Two roles — evaluator scores, optimizer revises — looped to convergence |
| Output guardrail | "Post-hoc check" | OpenAI Agents SDK validator that runs after an agent produces output |
| Verify step | "Critique phase" | The load-bearing decision: grounded or self-rated |
| Refine history | "What the model already tried" | Prior outputs + critiques prepended to refine prompt; drop and quality collapses |
| Rubber-stamp loop | "Self-agreement failure" | Same-prompt critique returns "looks good"; fix with structurally different prompts |
| Stop condition | "Convergence test" | Verifier passes OR no feedback AND iteration cap; never single-condition |
Mais leitura
- Madaan et al., Self-Refine (arXiv:2303.17651) o papel canônico
- Gou et al., CRITIC (arXiv:2305.11738) Verificação baseada em ferramentas
- Anthropic, Building Effective Agents padrão de fluxo de trabalho de avaliador-optimizador
- OpenAI Agents SDK docs barris de saída como verificadores em forma CRITIC
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.