O Prelúdio de um Desastre Silencioso
Ninguém percebeu na primeira iteração. Um agente autônomo no n8n, projetado para extrair dados de PDFs e atualizar um CRM, começou a devorar créditos como se fossem biscoitos. O erro? Uma configuração de maxTokens abaixo do ideal. O resultado? Uma fatura de $4.200 em menos de um quarto de hora. E o pior: tudo aconteceu em silêncio, sem alarmes.
Eu estava lá. No fim de semana, um alerta de custo explodindo no painel da AWS me fez suar frio. O agente não estava em loop infinito — ele estava em loop buck, um termo que cunhei para descrever o comportamento de agentes que, ao atingirem o limite de tokens, reiniciam com um contexto truncado, gerando chamadas repetitivas e exponenciais. Vamos dissecar isso como se fosse uma autópsia forense.
O Problema: Tokenização Imperfeita e o Efeito Dominó
Agentes autônomos modernos, especialmente os que usam LLMs como GPT-4 ou Claude, operam com janelas de contexto limitadas. No n8n, um fluxo típico de agente pode ser: input do usuário → chamada LLM → processamento → saída. O problema começa quando a saída do LLM é maior que o esperado ou quando o agente precisa fazer múltiplas chamadas para completar uma tarefa.
O Cenário Real: Extração de Dados de PDF
Um cliente configurou um agente no n8n para extrair campos de 50 PDFs e atualizar um banco. O fluxo: 1. Node HTTP para baixar PDF → 2. Node de extração (usando Tesseract ou docling) → 3. Node LLM (GPT-4, maxTokens=512) para estruturar dados → 4. Node do banco (Postgres).
Aqui está o pulo do gato: o PDF tinha tabelas complexas com 3000 caracteres. O LLM, com maxTokens=512, conseguia processar apenas parte. Para contornar, o engenheiro adicionou um loop de iteração: se o texto exceder X, dividir e processar partes. Mas o loop não tinha controle de estado. Cada parte gerava uma chamada, e como o contexto era parcial, o LLM retornava dados inconsistentes, forçando o agente a tentar novamente — com novas chamadas. E mais chamadas. E mais.
Em 14 minutos, 78.000 chamadas para a API da OpenAI. Custo: $0.03/1K input tokens → 2.6M tokens de input + 0.5M output → $4.200. O cliente quase teve um ataque cardíaco.
Anatomia do Loop Buck
O loop buck é diferente de um loop infinito: ele não trava, mas gera um crescimento exponencial no número de requisições. Vamos modelar:
- Iteração 1: Agente chama LLM com 1000 tokens de input (maxTokens=512). Output truncado em 512 tokens. O agente não completa a tarefa.
- Iteração 2: Agente envia o output truncado como novo input (512 tokens) + dados parciais. LLM retorna mais 512 tokens. Ainda incompleto.
- Iteração N: O input cresce com o acúmulo de outputs anteriores. O LLM trabalha mais, consome mais tokens, e o loop se retroalimenta.
Em vez de processar 1000 tokens de uma vez (custo $0.03), ele faz 4 chamadas de 512 tokens ($0.12) e não termina. O custo dobra e o loop nunca converge.
Por que o Mercado Ignora Isso?
Ferramentas como n8n popularizaram a criação de agentes com poucas linhas de código. O problema: os engenheiros ignoram a tokenização. Acham que maxTokens é apenas um limite de segurança. Na verdade, é uma faca de dois gumes. Se você subdimensiona, o agente falha; se superdimensiona, o custo explode.
A indústria foca em latência e precisão, mas o custo de chamadas repetitivas é o verdadeiro assassino de finanças. E o pior: sem monitoramento granular, você só descobre no fim do mês.
Soluções Práticas (Que Ninguém Ensina)
Depois do susto, implementamos três contramedidas no fluxo do n8n. Funcionaram como um encanto.
1. Buffer de Contexto com Janela Deslizante
Em vez de repassar o output anterior inteiro, usamos um buffer circular de tamanho fixo (ex: 2000 tokens). O agente guarda apenas os fragmentos mais relevantes, podando o resto. No n8n, isso é feito com um nó de código JavaScript que gerencia o histórico manualmente.
2. Early Exit com Heurística de Confiança
Adicionamos um nó de validação após o LLM: se a saída for menor que 80% do input ou inconsistente com a tarefa, o agente para e reporta erro. Nunca mais tentou automaticamente. Quebra o loop buck na raiz.
3. Alerta de Custo em Tempo Real
Integramos um nó de webhook que envia alerta ao Slack a cada 50 chamadas no mesmo fluxo. O custo? Quase zero. O retorno? Evitou outra catástrofe no mês seguinte.
O Veredito Final
Agentes autônomos são ferramentas incríveis. Mas sem entender a física de tokens, você está pilotando um avião sem instrumentos. O loop buck é silencioso, barato no início, e letal no final. A próxima vez que você configurar um fluxo no n8n, lembre-se: o maxTokens não é um limite — é um cronômetro de bomba.
Compartilhei minha cicatriz. Que sirva de alerta.