Preparação para entrevista
SmellDispensáveis

Autocrítica Inútil

Redundant Self-Critique

Autocrítica Inútil (Redundant Self-Critique) é um smell de IA, ou seja, um sinal de problema em sistemas com LLM, do grupo Dispensáveis. Uma etapa de revise sua resposta que dobra o custo e quase nunca muda nada.

Elemento
18/37
Nível
Iniciante
Leitura
3 min
Atualizado
Nesta página 7
  1. 01Como reconhecer
  2. 02Por que acontece
  3. 03Quanto custa ignorar
  4. 04Tratamento
  5. 05O que você ganha
  6. 06Quando ignorar
  7. 07É esse smell?
  8. ··Perguntas rápidas

Como reconhecer

Um revisor de PR gera comentários e, antes de publicar, passa por três rodadas de “revise sua revisão”. O código (anonimizado):

review = llm(REVIEW_PROMPT, diff)
for _ in range(3):
    review = llm("Revise criticamente a revisão abaixo e melhore-a.", review)
post_comments(review)

O trace de um mês mostrou que, em 94 de cada 100 PRs, a terceira versão tinha os mesmos comentários da primeira, com palavras levemente diferentes. Nos outros 6, a mudança era de estilo. O custo da revisão era quatro vezes o da primeira chamada.

Suponha, só para ver a conta, 2.000 tokens na geração e 2.000 em cada revisão. Quatro chamadas mandam cerca de 8.000 tokens de entrada só nesse passo, para devolver o comentário que a primeira já tinha. A latência acompanha: quatro idas ao modelo no caminho crítico.

Sinais de Autocrítica Inútil:

  • Há um passo de “revise”, “critique” ou “melhore” que roda sobre a própria saída, sem informação nova.
  • O passo de revisão usa o mesmo modelo, o mesmo contexto e nenhum critério verificável.
  • Comparando entrada e saída da revisão, quase nada muda.
  • O eval dá o mesmo resultado com e sem o passo.
  • O passo dobra ou triplica custo e latência.
flowchart LR
  G(["1. Gerar"]):::llm --> R1(["2. Revise"]):::llm
  R1 --> R2(["2. Revise de novo"]):::llm
  R2 --> R3(["2. Revise mais uma vez"]):::llm
  R3 --> OUT(["3. Quase a mesma saída, 4x o custo"]):::io
  1. O modelo gera a resposta.
  2. O mesmo modelo relê a própria resposta, sem dado novo, e reescreve.
  3. A saída final é praticamente a primeira.

A intuição humana (“releia antes de enviar”) não se transfere. A pessoa que relê traz memória, cansaço, um padrão que acabou de ver no arquivo ao lado. O modelo relê o mesmo buffer.

Checagem +20 XP de primeiraO eval do revisor dá a mesma nota com 1 chamada e com 4. As três revisões só mudam adjetivos. Qual é o próximo passo?

Por que acontece

  • “Pense de novo” parece sempre bom. Revisar é um hábito humano sólido. Copiado para o pipeline, vira uma chamada extra com o mesmo input.
  • Trabalhos que mostram ganho com reflexão. Reflexion (Shinn et al., 2023) usa sinal externo (o ambiente, um teste). Self-Refine (Madaan et al., 2023) também estrutura o feedback. A cópia ingênua tira o sinal e fica só com “melhore o texto acima”.
  • Sem eval. Ninguém mediu se o passo muda alguma coisa. Quatro vezes o custo parece “mais qualidade”.
  • Parece mais seguro. Um passo a mais de “garantia” dá conforto, mesmo sem efeito. Em time de compliance, ninguém quer ser a pessoa que tirou a revisão.

Quanto custa ignorar

  • Custo e latência multiplicados sem ganho de qualidade. No revisor, cada PR espera quatro chamadas.
  • Às vezes, piora. A revisão sem critério pode “melhorar” algo que estava certo: suaviza um “isso quebra produção” num “talvez valha olhar”.
  • Falsa sensação de controle. O time acredita que há uma checagem de qualidade que não existe. O incidente passa pelas três voltas e ninguém desconfia do passo.

O guia “Building effective agents”, da Anthropic (dez. 2024), descreve o padrão Avaliador e Otimizador com um avaliador separado e uma rubrica. Isso é o oposto deste smell: há critério, independência e, quando vale, ganho medido.

Tratamento

Refatoração Escolha quando
Embutir Etapa Trivial O eval mostra que o passo não muda o resultado. Ele sai, e o que tinha de útil (um critério, um formato) vai para o prompt da etapa principal. Destino: Encadeamento de Prompts.

Se a revisão é necessária, dê a ela informação nova: um sinal externo (Reflexão) ou um avaliador separado com rubrica (Avaliador e Otimizador).

Antes de apagar, meça. Rode o eval com e sem o passo, na mesma seed, no mesmo conjunto. Se a nota não mexe, o passo sai. Se mexe pouco e o custo dobra, a conta precisa ser explícita, não um hábito.

O diff que o time espera, na prática:

review = llm(REVIEW_PROMPT, diff)
post_comments(review)
# critérios de tamanho e de "arquivo fora do diff" ficam em código, não numa segunda chamada

Três linhas a menos no caminho crítico. Se um dia o eval pedir a volta, ela volta com rubrica ou com um teste, não com “melhore o texto”.

Critérios objetivos (tamanho, schema, “o SQL roda”, “a citação existe no PDF”) cabem em código. Não peçam uma quarta chamada ao modelo.

Checagem +20 XP de primeiraVocê quer manter uma revisão no gerador de SQL. Qual desenho deixa de ser autocrítica vazia?

O que você ganha

  • Custo e latência proporcionais ao trabalho real.
  • Um pipeline mais curto e mais fácil de depurar.
  • Quando houver revisão, ela terá um critério que dá para medir.

Quando ignorar

  • O eval mostra ganho. Se o passo melhora a qualidade de forma medida, ele não é inútil, mesmo sem sinal externo. Mantenha e monitore.
  • Tarefas longas de raciocínio. Em alguns problemas difíceis, uma segunda passada encontra erros. Meça antes de decidir.

É esse smell?

Checagem +20 XP de primeiraUm gerador de SQL roda a consulta num banco de teste e, se der erro, devolve o erro ao modelo para corrigir. É Autocrítica Inútil?

Checagem +20 XP de primeiraDepois de escrever um resumo, o mesmo modelo responde 'o resumo está bom? sim ou não'. Em 99% das vezes ele diz sim. O que fazer?

Checagem +20 XP de primeiraUm avaliador separado, com uma rubrica de cinco critérios e outro modelo, reprova um terço dos rascunhos, e o eval mostra que os rascunhos corrigidos são melhores. É Autocrítica Inútil?

Checagem +20 XP de primeiraUma segunda passada no mesmo modelo, sem dado novo, sobe 8 pontos no eval de um problema difícil e dobra o custo. É Autocrítica Inútil?

Perguntas rápidas

O que é Autocrítica Inútil?

Autocrítica Inútil (Redundant Self-Critique) é um smell de IA, ou seja, um sinal de problema em sistemas com LLM, do grupo Dispensáveis. Uma etapa de revise sua resposta que dobra o custo e quase nunca muda nada.

Como corrigir Autocrítica Inútil?

Com Embutir Etapa Trivial. Cada refatoração traz o passo a passo seguro, com eval antes e depois.

Onde Autocrítica Inútil aparece na prática?

Nos cenários reais Revisor automático de PR e Pipeline de criação de conteúdo.

Para ir além

Relações

Refatorações que tratam 1
Buscar