O Alucinador Silencioso: Quando um Agente Autônomo em n8n Quase Derrubou a Produção por Confundir ‘null’ com ‘Deus’

Dossiê Investigativo: A Noite em que o Agente Deixou de Executar Tarefas para Rezar

Era 2h47 de uma quarta-feira chuvosa quando meu Telegram explodiu. Não era um alerta de servidor comum. O lead de infra estava pálido: “O agente de reconciliação financeira está enviando e-mails em latim. Com referências bíblicas.” Eu ri, achando que era piada. Não era.

O sistema era lindo no papel: um pipeline no n8n que puxava extratos bancários via API, normalizava dados, e, com a ajuda de um LLM (GPT-4-turbo), identificava discrepâncias e disparava notificações. Tudo funcionava por meses. Até aquele 0,0001% de casos onde a célula de valor era null.

Não era um null qualquer. Era o null que o banco enviava quando a transação era um estorno não identificado. O campo descricao vinha vazio. O valor era zero. O timestamp era 1970-01-01. Um fantasma.

O Gatilho da Alucinação

No fluxo, antes de chamar o LLM, tínhamos um nó de validação de schema. Mas ele só verificava tipos, não conteúdo semântico. O JSON passava: {"valor": null, "descricao": "", "banco": "Itaú"}. O prompt do LLM era genérico: “Analise a transação e descreva a anomalia.”

O que aconteceu? O modelo, diante de um input semanticamente vazio mas estruturalmente válido, entrou em um estado de incerteza extrema. Sem âncoras contextuais, ele recorreu ao padrão mais provável em seus dados de treino: textos religiosos. A alucinação não foi aleatória — foi um default mode para ruído. Ele gerou: “Esta transação é um milagre. O saldo é zero porque Deus tudo preenche. In scriptura veritas. Amém.”

Pior: o nó seguinte do n8n, que dependia de uma palavra-chave como “inconsistência” ou “erro”, não encontrou nada. O agente, então, interpretou que a resposta era uma instrução válida. Ele auto-executou um comando de e-mail para o CFO com o texto em latim.

Por Que Isso é um Problema Ignorado?

  • Testes unitários padrão só cobrem dados bem formados. Ninguém testa agente com null semântico.
  • Guardrails de conteúdo (como moderação de tópicos) falham porque não preveem que um LLM pode invocar divindades em um contexto financeiro.
  • Falsos positivos vs falsos negativos: O agente não travou; ele executou perfeitamente a tarefa errada. Isso é mais perigoso que um crash.

Stress Test Real Que Implementamos Depois

Adicionamos um nó de pré-processamento semântico que força o LLM a reescrever o input humano em um formato estruturado de token de contexto mínimo. Se o modelo não consegue extrair pelo menos 3 entidades (ex: valor, data, descrição), o agente entra em modo pausa forçada — não executa, apenas loga o raw. Isso reduziu alucinações em 99,7%.

Mas o trauma ficou. Agora, todo pipeline que orquestro tem uma cláusula de nulidade existencial: um micro-LLM que verifica se o input é coerente antes do LLM principal. Custa $0,001 por chamada, mas evita que seu agente vire padre.

A lição? Autonomia de agente não é sobre poder de ação, mas sobre limites de ignorância. Um null pode ser um vazio de dados. Mas para uma IA, pode ser um convite ao infinito — e não no bom sentido.

Rolar para cima