Explicação das alucinações de IA: por que os modelos de linguagem inventam as coisas e como reduzi-las

  1. Início
  2. Blog
  3. Inteligência Artificial

Inteligência Artificial

Explicação das alucinações de IA: Por que os modelos de linguagem inventam as coisas e como reduzi-las

Um modelo de linguagem pode fornecer uma resposta confiável e bem escrita que é simplesmente falsa. Saiba por que isso acontece, as formas que assume e maneiras práticas de reduzi-lo e detectá-lo em seus próprios recursos de IA.

8 min de leitura
Explicação das alucinações de IA: por que os modelos de linguagem inventam as coisas e como reduzi-las

Principais pontos

  • Uma alucinação de IA é uma saída que parece plausível, mas é falsa ou não tem suporte.
  • Os modelos prevêem texto provável. Eles não têm uma maneira integrada de saber o que é verdade.
  • Respostas fundamentadas em fontes confiáveis, avisos claros e verificações automatizadas reduzem as alucinações.
  • Nenhuma técnica atual os remove completamente, portanto resultados importantes ainda precisam de verificação.

Um chatbot de suporte informa ao cliente que os reembolsos levam 14 dias. A verdadeira política diz 7. A resposta foi fluente, educada e errada. Esta é uma alucinação de IA e é um dos principais motivos pelos quais os recursos de IA precisam de design e testes cuidadosos.

Este guia explica as causas em termos simples e centra-se na prevenção prática. A verificação automatizada perto do final é um pequeno script Python que executamos em exemplos de respostas que nós mesmos escrevemos. Não foi executado em um modelo de IA ao vivo.

O que é uma alucinação de IA?

Uma alucinação ocorre quando um sistema de IA generativo produz conteúdo que é factualmente errado, inventado ou não apoiado pelas informações que lhe foram fornecidas, embora o apresente como verdadeiro. O termo é uma metáfora. O modelo não está vendo coisas. É gerar um texto que se encaixe no padrão de uma boa resposta sem estar preso a fatos.

A parte perigosa é a confiança. Uma resposta alucinada geralmente se parece exatamente com a correta, com o mesmo tom, estrutura e detalhes.

Por que os modelos de linguagem alucinam

Um grande modelo de linguagem é treinado para prever o próximo trecho de texto, um token, com base em padrões em uma enorme quantidade de dados de treinamento. Várias coisas decorrem disso:

  • Plausível não é o mesmo que verdadeiro. O modelo aprende como as respostas tendem a ser. Quando faltam os fatos, a continuação mais provável ainda pode ser inventada.
  • Lacunas e limites. Os dados de treinamento têm lacunas e terminam em uma determinada data. O modelo pode preencher factos em falta em vez de dizer que não sabe.
  • O treinamento recompensa a resposta. Uma pesquisa, incluindo um artigo da OpenAI de 2025 sobre por que os modelos alucinam, argumenta que os métodos comuns de treinamento e avaliação recompensam a adivinhação em vez da admissão da incerteza, muito parecido com um teste de múltipla escolha sem penalidade por respostas erradas.
  • Instruções ambíguas. Perguntas vagas convidam o modelo a assumir detalhes.
  • Contexto longo ou confuso. Fatos importantes podem ser ignorados quando enterrados em entradas longas.

Tipos comuns de alucinação

Tipo Exemplo
Fatos inventados Uma data, número ou estatística errada
Fontes falsas Citações, artigos ou URLs que não existem
Resumos infiéis Um resumo que adiciona reivindicações que não estão no documento
Código inventado Chamadas para funções ou pacotes que não existem
Raciocínio errado Cada etapa parece bem, mas a conclusão não segue
Falsa confiança Respondendo a uma pergunta que não tem resposta confiável

Os pesquisadores muitas vezes os dividem em erros de factualidade, que contradizem o mundo real, e erros de fidelidade, que contradizem o material de origem que o modelo recebeu. Para aplicativos de negócios criados com base em seus próprios documentos, a fidelidade geralmente é o que você pode testar mais diretamente.

O código inventado merece um aviso especial. Se um assistente sugerir a instalação de um pacote que não existe, um invasor poderá publicar um pacote malicioso com esse nome. Verifique se todas as dependências sugeridas são reais e confiáveis ​​antes de instalá-las.

Onde é mais importante

Um fato alucinado de um filme é inofensivo. Uma dose de droga alucinada, citação legal, política de reembolso ou valor financeiro não são. Houve casos bem relatados de advogados que apresentaram ações judiciais com citações de casos inventadas por ferramentas de IA. Classifique seus casos de uso pelo custo de uma resposta errada e aplique os controles mais fortes onde o custo for alto.

Como reduzir alucinações

  1. Baseie a resposta em dados confiáveis. Forneça ao modelo os fatos relevantes em vez de confiar em sua memória.
  2. Permita “Não sei”. Diga explicitamente ao modelo para dizer quando a informação não está disponível e trate isso como um bom resultado.
  3. Seja específico. Perguntas claras e restritas deixam menos espaço para invenções. Nosso guia rápido de engenharia aborda isso em detalhes.
  4. Peça citações das fontes fornecidas e verifique-as automaticamente.
  5. Use saída estruturada, como JSON com campos fixos, para que as respostas sejam mais fáceis de validar.
  6. Use ferramentas para coisas nas quais os modelos são fracos, como cálculos, datas e pesquisas de dados em tempo real.
  7. Mantenha um ser humano informado sobre decisões de alto risco.

Aterramento com seus próprios dados

A geração aumentada de recuperação (RAG) é o padrão de aterramento mais comum. O sistema pesquisa em seus documentos passagens relevantes para a pergunta e as inclui no prompt, com instruções para responder apenas a partir dessas passagens. Reduz drasticamente os factos inventados, mas não é uma cura. O modelo ainda pode interpretar mal uma passagem, combiná-las incorretamente ou recorrer ao seu próprio conhecimento, e a etapa de pesquisa pode retornar os documentos errados. Portanto, os sistemas aterrados ainda precisam de verificações.

Dica: registre as passagens recuperadas ao lado de cada resposta. Quando uma resposta errada é relatada, você pode saber rapidamente se a recuperação falhou ou se o modelo ignorou o bom contexto. A correção é diferente para cada um.

Uma simples verificação automatizada

Aqui está uma proteção barata que construímos: marque qualquer número em uma resposta que não apareça no texto fonte. É grosseiro, mas números como preços, dias e limites são exactamente onde aparecem as alucinações dispendiosas.

import re

SOURCE = """Refunds are paid within 7 days to the original payment method.
Orders over 1000 rupees ship free. Standard delivery takes 3 to 5 working days."""

def unsupported_numbers(answer, source):
    found = set(re.findall(r"\d+", answer))
    allowed = set(re.findall(r"\d+", source))
    return sorted(found - allowed, key=int)

Testamos três respostas escritas para imitar o resultado típico do modelo:

grounded     -> no unsupported numbers
hallucinated -> ['14', '500']
partly       -> ['1']

A resposta “alucinada” reivindicou reembolso de 14 dias e frete grátis acima de 500 rúpias, e ambos os números foram detectados. A resposta “parcialmente” tinha prazos de entrega corretos, mas acrescentou “ou 1 dia com expresso”, que a política nunca menciona, e isso também foi detectado. Uma segunda verificação verifica se as frases citadas realmente aparecem na fonte:

{'paid within 7 days': True, 'no questions asked': False}

Essas verificações têm limites óbvios. Eles perdem palavras erradas, unidades e afirmações não comprovadas sem números, e sinalizariam erroneamente um cálculo correto. Muitas equipes adicionam uma etapa “LLM como juiz”, onde um segundo modelo verifica cada afirmação em relação às fontes. Isso pega mais, mas também pode estar errado, então meça.

Teste para alucinações

Trate a taxa de alucinações como uma métrica de qualidade que você mede, não como um sentimento. Uma abordagem prática:

  • Crie um conjunto de testes de perguntas reais com respostas e fontes corretas conhecidas.
  • Inclua perguntas que o sistema deveria recusar, porque a resposta não está nos dados.
  • Pontue as respostas quanto à correção, fidelidade às fontes e recusas apropriadas.
  • Execute o conjunto em cada alteração nos prompts, modelos ou configurações de recuperação.
  • Exemplos de conversas de produção para revisão humana.

A disciplina de teste de regressão também se aplica aqui: um conjunto fixo de casos, executado a cada mudança, com resultados comparados ao longo do tempo. Ao escolher como aterrar um sistema, nossa comparação entre RAG versus ajuste fino versus engenharia imediata explica as compensações.

Conselhos para usuários comuns

  • Verifique fatos, números, citações e citações da fonte original.
  • Tenha especial cuidado com informações médicas, legais e financeiras.
  • Cole o texto fonte e peça ao assistente que responda apenas a partir dele.
  • Pergunte “quão confiante você está e em que isso se baseia?”, mas lembre-se de que a resposta também pode estar errada.

As alucinações podem ser eliminadas?

Não com a tecnologia atual. Modelos mais recentes e melhor treinamento reduziram as taxas de alucinação em muitos benchmarks, e o aterramento ajuda muito, mas todos os sistemas ainda cometem erros. O objetivo realista é tornar os erros raros, fáceis de detectar e de baixo impacto através do design do sistema, testes e sinais claros para os usuários.

Alucinações em ferramentas de codificação de IA

Os desenvolvedores encontram alucinações diariamente nos assistentes de codificação: um método que não existe em uma classe, uma opção de configuração desatualizada ou uma explicação confiável de um erro que na verdade é causado por outra coisa. As defesas são aquelas que você já usa para código humano. Compile ou verifique o tipo do resultado, execute os testes e leia a documentação oficial de qualquer API que você não tenha usado antes. Tome cuidado extra com códigos sensíveis à segurança, como autenticação, criptografia e validação de entrada, onde códigos de aparência plausível podem ser sutilmente inseguros. Trate as sugestões de IA como um rascunho de um colega rápido, mas não confiável: muitas vezes úteis, nunca corrigidas automaticamente.

Considerações finais

As alucinações vêm do modo como os modelos de linguagem funcionam: eles geram textos prováveis, e não fatos verificados. Você não pode desligá-los, mas pode projetar em torno deles. Baseie as respostas em dados confiáveis, deixe o modelo dizer “Não sei”, adicione verificações automáticas para os detalhes importantes e meça os resultados continuamente.

Perguntas frequentes

O que é uma alucinação de IA?

É quando um sistema de IA produz informações falsas ou sem suporte e as apresenta como verdadeiras, como uma estatística inventada, uma citação ou um detalhe de política.

Por que os modelos de IA têm alucinações?

Os modelos de linguagem prevêem textos prováveis ​​com base em padrões, não em fatos verificados. Lacunas nos dados de treinamento, instruções vagas e treinamento que recompensa a adivinhação tornam as alucinações mais prováveis.

O RAG interrompe as alucinações?

Reduz-os, fornecendo ao modelo informações confiáveis, mas não os impede. O modelo ainda pode interpretar mal as fontes e a recuperação pode retornar os documentos errados.

Como você pode detectar alucinações de IA?

Compare as respostas com os documentos de origem, verifique números e cotações automaticamente, use um segundo modelo para verificar afirmações e analise amostras com as pessoas.

As alucinações de IA algum dia irão desaparecer?

As taxas estão a cair à medida que os modelos melhoram, mas nenhum método actual as elimina totalmente. Resultados importantes ainda necessitam de verificações e revisão humana.

Continue aprendendo

Trabalhe com Stack Quora

Precisa de ajuda com testes, WordPress ou SEO?

Ajudamos as equipes a fornecer software melhor e a expandir seus sites. Conte-nos no que você está trabalhando e sugeriremos um próximo passo claro.

Continue lendo

Mais guias sobre testes, IA e desenvolvimento moderno

Gostou deste artigo? Escolha um tópico e vá direto para nossos tutoriais mais recentes.

Inteligência artificial

Explicação das alucinações de IA: por que os modelos de linguagem inventam as coisas e como reduzi-las

Explicação das alucinações de IA: o que são, por que os modelos de linguagem as produzem, tipos comuns, como reduzi-las com aterramento e instruções…

Leia o artigo →
DevOps

Variáveis de ambiente explicadas: arquivos .env, segredos e configuração bem feitos

Variáveis de ambiente explicadas com exemplos de Python que executamos: leitura e configuração, por que cada valor é uma string, arquivos .env, hera…

Leia o artigo →
Desenvolvimento de software

Explicação da limitação de taxa de API: algoritmos, cabeçalhos e tratamento de erros 429

Limitação de taxa de API explicada com uma simulação que executamos: token bucket, janela fixa, janela deslizante, 429 respostas, cabeçalhos de limi…

Leia o artigo →
Automação de testes

Zombando em Python: unittest.mock, patch e os erros que fazem os testes mentirem

Zombaria em Python com unittest.mock, testado: Mock e return_value, side_effect, patch onde um nome é usado, especificação e autospec, zombaria de d…

Leia o artigo →
Teste de software

Cobertura de código explicada: cobertura de linha versus filial e o que 100% realmente significa

Cobertura de código explicada com uma execução cobertura.py real: cobertura de linha, ramal e condição, leitura de um relatório, por que 100% de cob…

Leia o artigo →
Bancos de dados e SQL

DELETE vs TRUNCATE vs DROP em SQL: diferenças, reversão e quando usar cada um

DELETE vs TRUNCATE vs DROP explicado com SQL testado: o que cada um remove, rollback, aciona, redefinição de identidade, velocidade e como PostgreSQ…

Leia o artigo →
Bancos de dados e SQL

Exibições SQL explicadas: crie, use e evite as armadilhas, com exemplos

Visualizações SQL explicadas com consultas que executamos: criação de uma visualização, resultados ao vivo, ocultação de colunas, desempenho, visual…

Leia o artigo →
Desenvolvimento de software

Interface TypeScript vs tipo: diferenças reais, testadas com o compilador

Interface TypeScript versus tipo, verificada com o compilador real: o que ambos podem fazer, o que apenas um pode fazer, mesclagem de declarações, e…

Leia o artigo →
Desenvolvimento de software

Python *args e **kwargs explicados: funções flexíveis com exemplos claros

Python *args e **kwargs explicados com o código que executamos: empacotamento e descompactação, ordem dos parâmetros, argumentos somente de palavras…

Leia o artigo →
Desenvolvimento de software

Funções Python Lambda: sintaxe, usos reais e quando não usá-los

Funções lambda do Python explicadas com o código que executamos: sintaxe, classificação com chave, mapa e filtro, fechamentos, armadilha de ligação …

Leia o artigo →
Inteligência artificial

O que são agentes de IA? Como eles funcionam, com um loop de agente simples que você pode executar

O que são agentes de IA? Um guia simples para o loop do agente, ferramentas, memória e proteções, com um pequeno loop Python que executamos, riscos …

Leia o artigo →
DevOps

Monitoramento versus observabilidade: a verdadeira diferença, com logs, métricas e rastreamentos

Explicação do monitoramento versus observabilidade: falhas conhecidas e desconhecidas, logs, métricas e rastreamentos, um passo a passo do incidente…

Leia o artigo →
DevOps

Docker Volumes vs Bind Mounts: persista os dados do contêiner da maneira certa

Volumes Docker versus montagens de ligação explicadas: por que os dados do contêiner desaparecem, volumes nomeados, montagens de ligação, tmpfs, exe…

Leia o artigo →
Automação de testes

TDD vs BDD: principais diferenças, um recurso criado de ambas as maneiras e quando usar cada um

TDD vs BDD explicado com um recurso de desconto construído em ambos os sentidos: refatoração vermelho-verde com o código que executamos, cenários da…

Leia o artigo →
Teste de software

Teste de aceitação do usuário (UAT): processo, lista de verificação e exemplos reais

Explicação do teste de aceitação do usuário: quem o executa, como ele difere do controle de qualidade, um processo de sete etapas, um modelo de caso…

Leia o artigo →
Bancos de dados e SQL

Valores SQL NULL explicados: IS NULL, COALESCE, NULLIF e as armadilhas a serem evitadas

Valores SQL NULL explicados com consultas que executamos: lógica de três valores, IS NULL, COALESCE, NULLIF, como agregações, junções e classificaçã…

Leia o artigo →
Bancos de dados e SQL

Instrução SQL CASE WHEN: sintaxe, exemplos reais e erros comuns

SQL CASE WHEN explicado com consultas que executamos: formulários simples e pesquisados, ordem de condição, pivôs com SUM, truques COUNT, classifica…

Leia o artigo →
Desenvolvimento de software

O que é JWT? JSON Web Tokens explicados com um exemplo prático

O que é JWT? JSON Web Tokens explicados: as três partes, um token construído e adulterado no código que executamos, JWT vs sessões, armazenamento, t…

Leia o artigo →
Desenvolvimento de software

Loop de eventos JavaScript explicado: pilha de chamadas, microtarefas e temporizadores com exemplos

O loop de eventos JavaScript explicado com o código que executamos: pilha de chamadas, filas de tarefas e microtarefas, por que setTimeout 0 não é i…

Leia o artigo →
Desenvolvimento de software

Geradores Python e rendimento explicado: economize memória com exemplos reais

Geradores Python e rendimento explicados com o código que executamos: como eles pausam e reiniciam, medem economia de memória, pipelines, sequências…

Leia o artigo →
Inteligência artificial

O que são incorporações? Similaridade de vetores e cossenos explicada de forma simples

O que são incorporações? Um guia em linguagem simples para vetores, similaridade de cossenos e pesquisa semântica, com um pequeno exemplo que execut…

Leia o artigo →
DevOps

Implantação azul-verde vs canário: diferenças, compensações e como escolher

Explicação da implantação azul-verde versus canário: como cada um funciona, custo, risco e reversão, agrupamento estável de usuários que testamos, m…

Leia o artigo →
Automação de testes

Testes instáveis: o que os causa e como corrigi-los para sempre

Testes instáveis explicados com demonstrações que executamos: as principais causas, como confirmar e diagnosticar uma, soluções adequadas para tempo…

Leia o artigo →
Teste de software

Teste de carga versus teste de estresse: diferenças, métricas e exemplos k6

Teste de carga versus teste de estresse explicado: o que cada um prova, testes de pico e absorção, as métricas que importam, por que as médias engan…

Leia o artigo →
Teste de software

Caso de teste versus cenário de teste: principais diferenças, exemplos e quando usar cada um

Caso de teste vs cenário de teste explicado: definições claras, uma tabela lado a lado, um recurso de redefinição de senha retirado de cenários para…

Leia o artigo →
Bancos de dados e SQL

Otimização de consultas SQL: leia planos de execução e corrija consultas lentas, com intervalos

Otimização de consulta SQL testada em um milhão de linhas: leia planos de execução, adicione os índices corretos, corrija filtros não sargáveis, use…

Leia o artigo →
Bancos de dados e SQL

SQL UNION vs UNION ALL: diferenças, exemplos e desempenho testado

SQL UNION vs UNION ALL explicado com consultas que executamos: duplicatas, as regras que ambos seguem, um bug de dados real, desempenho medido, INTE…

Leia o artigo →
Desenvolvimento de software

Tutorial da API JavaScript Fetch: GET, POST, tratamento de erros e tempos limite

Um tutorial da API JavaScript Fetch testado em um servidor local: GET e POST, por que 404 não lança, um auxiliar reutilizável, strings de consulta, …

Leia o artigo →
Desenvolvimento de software

Manipulação de arquivos Python: leitura, gravação, CSV, JSON e pathlib com exemplos

Manipulação de arquivos Python explicada com código que executamos: modos abertos, com, leitura de arquivos grandes, CSV, JSON, pathlib, arquivos bi…

Leia o artigo →
Desenvolvimento de software

Classes e objetos Python: tutorial OOP com exemplos reais

Classes e objetos Python explicados com código que executamos: __init__, métodos, atributos de classe vs instância, herança, propriedades, métodos d…

Leia o artigo →
Inteligência artificial

O que é um modelo de linguagem grande? Como funcionam os LLMs, explicado sem exageros

O que é um modelo de linguagem grande? LLMs explicados em linguagem simples: tokens, incorporações, atenção, treinamento, temperatura e janelas de c…

Leia o artigo →
DevOps

Comandos Linux para iniciantes: o guia essencial do terminal com exemplos

Comandos Linux para iniciantes, agrupados por tarefa: navegação, arquivos, visualização de logs, grep, pipes, permissões, processos e arquivos, com …

Leia o artigo →
Automação de testes

Selenium vs Playwright: principais diferenças, código comparado e qual escolher

Selenium vs Playwright comparado: arquitetura, espera, suporte a navegador e linguagem, depuração, o mesmo teste em ambas as ferramentas, conselhos …

Leia o artigo →
Teste de software

Particionamento de equivalência: técnica de design de teste explicada com exemplos resolvidos

Explicação do particionamento de equivalência: como encontrar partições válidas e inválidas, exemplos resolvidos para idades, senhas e cupons, teste…

Leia o artigo →
Teste de software

Gravidade vs Prioridade em Testes de Software: Diferenças, Matriz e Exemplos Reais

Explicação da gravidade versus prioridade em testes de software: definições claras, uma matriz de quatro vias com exemplos, escalas de nível, quem d…

Leia o artigo →
Bancos de dados e SQL

Tutorial de subconsultas SQL: tipos, subconsultas correlacionadas e EXISTS com exemplos

Um tutorial de subconsultas SQL com consultas que executamos: subconsultas escalares, IN, FROM e SELECT, subconsultas correlacionadas, EXISTS, a arm…

Leia o artigo →
Bancos de dados e SQL

Transações SQL e ACID explicados: COMMIT, ROLLBACK e níveis de isolamento

Transações SQL e ACID explicadas com uma transferência bancária que executamos: COMMIT, ROLLBACK, savepoints, locks, níveis de isolamento, leituras …

Leia o artigo →
Desenvolvimento de software

Git merge vs rebase: diferenças, exemplos e quando usar cada um

Git merge vs rebase explicado com saída real do log, uma tabela comparativa, a regra de ouro do rebase e um fluxo de trabalho seguro para equipes.

Leia o artigo →
Desenvolvimento de software

List comprehension em Python: sintaxe, exemplos e quando evitar

List comprehension em Python explicada: sintaxe, filtros, if-else, laços aninhados, tempos medidos e quando um laço for comum é a melhor escolha.

Leia o artigo →
Bancos de dados e SQL

SQL JOIN explicado com exemplos (Inner, Left, Right, Full)

Entenda os joins SQL passo a passo com tabelas e consultas de exemplo: INNER, LEFT, RIGHT, FULL, CROSS e SELF, além de erros comuns e dicas de desem…

Leia o artigo →