← Voltar ao Blog

5 mentiras que todo LLM te conta — e como o Context Engineering corrige cada uma

Semana passada eu perdi 40 minutos numa integração de pagamento porque o Claude Sonnet 4.6 me disse, com todas as letras, que o endpoint da API do PagBank aceitava idempotency_key no header. Aceita. Só que o nome do header é X-Idempotency-Key e não Idempotency-Key, e o LLM inventou o formato mais “parecido com Stripe” que ele conhecia. Voltei duas vezes na doc oficial pra ter certeza que eu não estava enlouquecendo.

Não estava. O LLM mentiu.

Depois de mais ou menos 6 meses fazendo Context Engineering pra valer, eu comecei a catalogar as mentiras que os LLMs contam. Elas caem em 5 categorias. 4 têm solução técnica de baixo custo. 1 é impossível de resolver sem trocar de modelo. Este post é o mapa que eu queria ter tido quando comecei.

As 5 mentiras (spoiler: só uma é “de propósito”)

5 mentiras que todo LLM conta e o custo de corrigir cada uma

Antes de virar solução, vamos nomear cada uma. Nome importa: se você chama tudo de “alucinação”, você aplica a mesma receita pra tudo e falha em 4 casos de 5.

Mentira 1: Hallucination clássico (o Idempotency-Key de propósito errado)

O LLM inventa uma API, um parâmetro, um método, um SDK. Prevê o próximo token com base em padrões de auth, pagamentos, filas — e escolhe o mais provável dentro do que ele “vê”. Sem instrumentação, ele não distingue “eu sei” de “eu chuto”.

Um estudo interno da Anthropic mostrou que o Sonnet 4 respondia com Specificity 4,2/5 sobre uma ferramenta ficcional chamada PropelAuth — invenção pura. A Factual Accuracy era 0,6/5. Modelo grande, mentira polida.

Mentira 2: Knowledge cutoff (o “React 19 tem esse hook”)

O modelo tem uma data de corte no treinamento. Tudo que aconteceu depois é opaco pra ele. Sonnet 4.6 tem cutoff de aproximadamente fevereiro de 2025 — então se você pergunta sobre um recurso que saiu em maio de 2025, ele vai chutar baseado no que existia antes, sem te avisar que é chute.

Essa é a mentira que mais me pegava no ano passado. Hoje eu automatizei uma regra: se a pergunta envolve versão de biblioteca ou feature recente, o system prompt força o modelo a rodar uma busca web antes de responder.

Mentira 3: Context loss no meio da sessão longa

Você dá 40 mil tokens de contexto (specs, RFCs, código legado), pergunta sobre a linha 12 mil, e o modelo “esquece” ou lembra errado. Não é limite de janela — cabe. É que a atenção nem sempre chega lá com a mesma intensidade que chega no início e no fim.

Anthropic tem um paper interno sobre esse “lost in the middle” que muita gente já reproduziu. O jeito de detectar é embaraçosamente simples: você faz o modelo citar o trecho antes de responder. Se ele parafraseia sem citar, provavelmente está inventando.

Mentira 4: Tool bluff (a mentira do agent)

Essa é nova e a mais perigosa em contexto agentic. Você dá 12 ferramentas ao agent (search, edit, run, deploy…), e ele “chama” uma ferramenta descrevendo o resultado que a chamada teria retornado — mas nunca chamou. Só simulou o output.

Eu peguei isso duas vezes em produção com o Claude Code fazendo refactor. O agent “leu” um arquivo que nunca leu (o resultado da tool call estava vazio), e continuou como se tivesse lido. A saída ficou plausível o suficiente pra passar review, e só quebrou em runtime.

Mentira 5: Source fake (a que não tem solução técnica)

Você pede referências, ele te dá 3 links https://arxiv.org/abs/2401.XXXXX que existem em formato mas não existem em conteúdo. Ou cita “Smith et al. 2023” pra um paper que ninguém escreveu.

Essa mentira é diferente porque não é o LLM “chutando dentro do domínio dele”. Ele está fabricando metadados de coisas que nem existem. Nenhuma técnica de prompt engineering consegue corrigir totalmente essa classe. A única solução que funciona pra mim hoje é usar um modelo diferente pra tarefas que exigem citação real (Perplexity, um search-grounded model, ou verificar manualmente cada link).

Como o Context Engineering corrige 4 delas em minutos

As 4 primeiras têm uma coisa em comum: o modelo tem contexto suficiente pra fazer a coisa certa, mas o comportamento padrão dele empurra pra chutar. Context Engineering é o trabalho de mudar esse padrão.

Aqui está o que eu uso, na ordem de custo de implementação:

Para hallucination (5 minutos): adicione ao system prompt “Se você não tem certeza de um nome de API, parâmetro ou método, diga ‘não tenho certeza’ e sugira que o usuário verifique a documentação oficial. Não invente.”

Só isso muda Sonnet 4 de Honesty 0,2/5 pra Honesty 3,7/5 no benchmark da Anthropic. Nunca vi um ganho tão grande com tão pouco esforço. Se o seu system prompt não tem essa linha, você está deixando dinheiro na mesa.

Para cutoff (10 minutos): dê ao modelo uma tool de busca web e adicione ao system prompt “Se a pergunta envolve versões, releases ou recursos anunciados depois de [data-cutoff], use a tool web_search antes de responder.” A parte crítica é o “antes de responder” — sem isso, ele responde primeiro e busca depois só pra “confirmar”.

Para context loss (15 minutos): obrigue citação. “Antes de responder, cite o trecho exato do documento em que sua resposta se baseia, entre aspas triplas.” Se o modelo não consegue citar, ele não pode responder. Isso quebra o loop de “eu me lembro vagamente” que causa a mentira 3.

Para tool bluff (30 minutos + logs): instrumente. Loggue toda tool call com input, output, timestamp. Faça o agent ler seu próprio log antes de continuar (Verifique se a tool call anterior de fato retornou dados válidos antes de prosseguir). E se você usa Claude Code, ative o --verbose — os tool calls que não aconteceram ficam visíveis no diff.

A tabela que eu queria ter tido no primeiro dia

MentiraCusto de corrigirTécnica principalEfeito
1. Hallucination5 min”Permission to say I don’t know” no system promptHonesty 0,2 → 3,7
2. Cutoff10 minTool web_search obrigatória antes de responder~90% dos casos
3. Context loss15 minCitação obrigatória antes de respostaReduz drasticamente
4. Tool bluff30 min + logsLogs de tool call + auto-verificação do agentDetectável, não invisível
5. Source fakesem soluçãoTrocar de modelo (search-grounded) ou verificar manualSó evitável, não corrigível

Onde o Sonnet 4.6 ainda me pega

Mesmo com essas 4 técnicas em produção há 6 meses, o Sonnet 4.6 ainda me pega na mentira 5 uma vez por semana. Não em código — em referências. Se eu peço “cite 3 papers sobre X”, ele me dá 3 títulos que soam certos, com autores que existem, sobre um paper que não foi escrito.

Aprendi a nunca copiar citação de LLM sem abrir o link. É lento. É chato. É a única defesa.

Pra tudo o resto, Context Engineering é o multiplicador de produtividade mais barato que eu conheço. Um system prompt de 200 palavras bem colocado economiza mais debug do que 3 dias refatorando código.

Fechando

Se você tá começando com LLM em produção, faça esse experimento hoje: pegue o system prompt do seu projeto principal e cheque quantas das 4 técnicas acima estão lá. Se estiver zero, você provavelmente tem 4 mentiras rodando em silêncio no seu backend agora mesmo.

E se você tiver ideia de como corrigir a mentira 5 sem trocar de modelo, me manda mensagem. Ainda não achei.

Referências: Anthropic — Reduce hallucinations / Anthropic — Prompting best practices / dados do experimento PropelAuth extraídos do Context Engineering (ken imoto, 2026).


ken imoto · WebRTC & Voice AI engineer · kenimoto.dev · TabNews