Skip to content Skip to footer

Alucinações em IA para Código: Erros Sutis em Código Gerado por Modelos de Linguagem

Introdução

Com o avanço acelerado das inteligências artificiais generativas, ferramentas como ChatGPT, GitHub Copilot, Gemini e Claude tornaram-se aliadas indispensáveis dos programadores. Estas ferramentas prometem aumentar a produtividade ao sugerirem trechos de código, completarem funções e até gerarem aplicações inteiras a partir de descrições em linguagem natural.

No entanto, um fenómeno recorrente — conhecido como alucinações — compromete seriamente a fiabilidade destes sistemas quando aplicados à geração de código.

Hallucinação em IA ocorre quando o modelo produz saídas plausíveis, sintaticamente corretas, mas semanticamente incorretas ou factualmente erradas.
No contexto da programação, isto manifesta-se como código que compila (ou executa sem erros de sintaxe), mas contém erros lógicos subtis, chamadas a métodos inexistentes, APIs obsoletas ou comportamentos inesperados.

Estudos recentes indicam que até 52% das respostas de modelos de linguagem em tarefas de programação contêm erros (conforme o Stack Overflow Developer Survey 2024 e análises da Anthropic sobre o modelo Claude).
Este número aumenta com a complexidade da tarefa e com a ausência de contexto adequado.

Este artigo explora as causas, os tipos mais comuns de erros, exemplos reais, impactos no desenvolvimento e estratégias eficazes de mitigação.


O que é uma Alucinação em Código Gerado por IA?

Uma hallucinação ocorre quando o modelo “inventa” informações que não existem nos dados de treino ou no contexto fornecido.
Em código, isso pode significar:

  • Utilização de um método que nunca existiu numa biblioteca.
  • Aplicação incorreta de uma API com parâmetros errados.
  • Lógica aparentemente correta, mas que falha em casos de borda.
  • Confusão entre versões de frameworks (por exemplo, React 17 vs React 18).

Exemplo clássico (ChatGPT, 2023)

Pergunta:

“Como ordenar um array em JavaScript usando o método sortBy?”

Resposta gerada:

const sorted = array.sortBy(item => item.age);

Erro:
O método sortBy não existe nativamente em JavaScript.
O correto seria usar .sort() com uma função de comparação, ou recorrer a bibliotecas como Lodash (_.sortBy).

Este tipo de erro é sutil: o código parece profissional, usa sintaxe válida, mas falha em tempo de execução com:

TypeError: array.sortBy is not a function

Tipos Comuns de Erros em Código Gerado por IA

1. Métodos ou Funções Inexistentes

O modelo “recorda-se” de padrões vistos em repositórios, mas mistura nomes.

# Erro comum em Python com pandas
df.filter(column='name')  # Método inexistente

Correto:
df[df['name'] == valor] ou df.query() ou df.loc[]


2. APIs Desatualizadas ou Depreciadas

Modelos treinados até uma data fixa podem sugerir APIs antigas.

// React (versão antiga)
this.setState({ count: 1 }, () => console.log(this.state.count));

Em React 18 (com Concurrent Mode), o comportamento de setState mudou em certos contextos — o modelo pode ignorar isso.


3. Erros Lógicos Sutis (off-by-one, condições de corrida)

# Divisão inteira incorreta
def media(lista):
    return sum(lista) / len(lista)  # Falha se lista vazia

Sem tratamento de ZeroDivisionError, o código falha em produção.


4. Confusão entre Bibliotecas Semelhantes

// Confundindo Express com Fastify
app.use(bodyParser.json());  // bodyParser foi removido do Express v4.16+

Correto:
Usar express.json().


5. Segurança Ignorada

// SQL Injection (Node.js + mysql)
connection.query(`SELECT * FROM users WHERE id = ${userId}`);

O modelo pode gerar código vulnerável se não for instruído sobre boas práticas de segurança.


6. Falta de Tratamento de Erros

with open('config.json') as f:
    config = json.load(f)
# Falta try/except para FileNotFoundError, JSONDecodeError, etc.

Por que as Alucinações Aumentam com o Uso de IAs?

FatorImpacto
Falta de contexto completoO modelo não vê todo o projeto, apenas o prompt.
Treino em código ruidosoMuitos repositórios no GitHub contêm bugs ou más práticas.
Generalização excessivaO modelo “mistura” soluções e cria híbridos inválidos.
Ausência de execução realO modelo não compila nem executa o código.
Prompts ambíguos“Cria uma função de login” → múltiplas interpretações possíveis.

Um estudo da University of Michigan (2024) mostrou que 67% dos programadores copiam código gerado por IA sem o rever completamente, aumentando o risco de bugs em produção.


Exemplos Reais de Erros em Produção

Caso 1: Método .toPandas() no PySpark

spark_df.toPandas()  # Funciona

Mas em clusters com pouca memória, causa OutOfMemoryError.
O modelo sugere sem alertar sobre escalabilidade.


Caso 2: async/await mal usado

async function fetchData() {
    const data = fetch('/api');  // Retorna Promise, mas falta o await
    console.log(data.json());    // Erro: data.json is not a function
}

O modelo esquece o await, gerando código que parece assíncrono — mas não é.


Estratégias para Mitigar Alucinações

1. Use Prompts Específicos e Estruturados

Escreve uma função em Python 3.11 que leia um ficheiro CSV usando pandas,
trate erros de ficheiro não encontrado e devolva um DataFrame vazio nesse caso.
Usa try/except e não utilizes caminhos hard-coded.

2. Forneça Contexto do Projeto

Estou a usar Django 5.0 e Python 3.12, e o modelo User tem o campo ‘email’.
Gera uma view de login com autenticação.

3. Peça Testes Unitários Junto com o Código

Gera uma função de ordenação e 3 testes com pytest que cubram:
lista vazia, duplicados e ordem decrescente.

4. Integre Ferramentas de Verificação Automática

FerramentaFunção
GitHub Copilot + CodeQLDeteta vulnerabilidades
SonarQubeAnálise estática de qualidade
Pylint / ESLintRegras de estilo e erros comuns
CI/CD com testesExecuta testes automaticamente

5. Use o Modo “Passo a Passo” (Step-by-Step)

1) Qual é a API correta do pandas para filtrar?

2) Como evitar SQL injection no Django?

3) Escreve o código.

6. Valide com Execução Local

  • Use REPL online (Replit, Jupyter) para testar.
  • Execute com dados de teste reais.

7. Prefira Modelos Especializados em Código

ModeloVantagem
Claude 3.5 SonnetMelhor em raciocínio lógico
GitHub Copilot (GPT-4o)Integração com IDE
CodeLlama / DeepSeek CoderTreinados exclusivamente em código

Boas Práticas para Programadores

  • Nunca copie e cole sem rever o código.
  • Execute sempre testes locais.
  • Use linters e type checkers (mypy, TypeScript).
  • Peça explicações ao modelo sobre o código gerado.
  • Mantenha a documentação atualizada das bibliotecas utilizadas.

As alucinações em código gerado por IA são um desafio real e crescente.
Embora 52% das respostas contenham erros, isso não significa abandonar as ferramentas, mas sim usá-las com pensamento crítico.

A IA é um acelerador, não um substituto.
O programador deve atuar como revisor técnico, validando cada linha com:

  • Conhecimento do domínio
  • Testes automatizados
  • Ferramentas de análise estática
  • Bom senso

No futuro, com modelos auto-verificáveis, execução em sandbox integrada e treino em código validado, as alucinações deverão diminuir.

Até lá, a regra de ouro é simples:

“Confia, mas verifica sempre.”

Dica:

Ao usar IA para gerar código, pergunte sempre:

“Podes gerar testes que provem que este código está correto?”

Se a IA não conseguir, o código provavelmente tem problemas.

Artigo baseado em observações reais de uso de ChatGPT, Claude e Copilot em projetos entre 2023 e 2025.

Vamos trabalhar juntos
Envia-nos um email - hello@damascode.pt

Damascode – Digital Agency © 2025. All Rights Reserved.