Ajude-me a construir meu workflow: nó Agent com Gemini + Ferramenta Perplexity + Ferramenta HTTP falha antes do parser de saída. Erro alterna entre a.ok(nodeExists e out-of-memory

Oi pessoal, sou novo no n8n. Comecei a criar um fluxo de trabalho para aplicar com o copilot em algumas vagas que combinam com meu perfil, mas não consigo fazer o fluxo funcionar. É um problema de arquitetura ou estou fazendo algo errado? Isso é possível de fazer ou estou sendo muito ambicioso? Se não for possível, o que eu poderia fazer para pelo menos tornar isso utilizável? - por exemplo, apenas conseguir que o fluxo coloque todos os links e informações em uma tabela de dados para que eu possa aplicar mais facilmente. Devo começar do zero?

Esta automação deve:

  • Executar todos os dias às 9 AM.

  • Pesquisar diariamente em múltiplos portais de emprego por vagas que correspondam à experiência de um candidato (candidato único).

  • Detectar palavras-chave de ATS, URL, empresa, informações da vaga, função e detectar injeções de prompt e evidências.

  • Extrair as informações para uma tabela.

Um segundo gatilho deve criar versões personalizadas do currículo e carta de apresentação para cada vaga e salvar esses arquivos em uma pasta do Drive. Deve também preencher automaticamente formulários para que o candidato possa decidir se quer aplicar ou não. Deve fazer upload dos documentos de CV para cada site.

Se isso não for possível ou tiver limitações, me avise e faremos algo mais simples. Tenho acesso a Perplexity e Google Studio.

1 curtida

Bem-vindo @Camila_Andrea!

O erro a.ok(nodeExists) geralmente significa que um nó na cadeia de ferramentas do agente é referenciado mas não está conectado corretamente - verifique novamente se cada nó de ferramenta (Perplexity, HTTP) tem uma conexão apropriada à entrada “Tool” do nó do Agente IA, não apenas ao fluxo principal. O problema de OOM é um problema separado: com Gemini + múltiplas ferramentas, o agente pode fazer loop muitas vezes acumulando uma grande janela de contexto, o que esgota a memória. Defina um limite máximo de iterações no nó do Agent (em Settings) - comece com 5-10 e veja se ele é concluído.

Para a arquitetura: seu escopo está bom, mas eu dividiria em dois fluxos de trabalho separados - um para descoberta/extração de vagas, outro para geração de documentos. Executar tudo em um único agente com tantas ferramentas torna a depuração muito mais difícil.

1 curtida

Oi Camila,

Este é na verdade um projeto muito legal, e é definitivamente viável no n8n — mas a arquitetura precisa ser repensada.

O crash que você está vendo provavelmente vem do nó Agent tentando lidar com muita coisa de uma vez. Quando você combina múltiplas chamadas de ferramentas (busca Perplexity + scraping de quadros de vagas + preenchimento de formulários) dentro de um único nó Agent, pode facilmente ultrapassar os limites de memória, especialmente com Gemini.

Aqui está o que eu sugiro:

  1. Divida em workflows separados.** Não tente fazer tudo em um único nó Agent. Separe assim:
    Workflow A: Cron diário → buscar quadros de vagas → filtrar correspondências → salvar no banco de dados
    Workflow B: Acionado por correspondência → Perplexity para análise de palavras-chave de ATS → formatar em planilha
    Workflow C: Acionamento manual → gerar currículo/carta de apresentação personalizada por vaga selecionada

  2. O nó Agent funciona melhor para tomada de decisão**, não para encadear múltiplas requisições HTTP pesadas. Use o Agent para decidir QUAIS vagas solicitar, não para fazer o scraping das vagas em si.

  3. Para a parte de preenchimento automático de formulários** — essa é a parte mais complicada. A maioria dos quadros de vagas usa estruturas de formulário únicas. Uma abordagem mais prática é ter o workflow preparar tudo (currículo, carta de apresentação, respostas) e alertá-lo para aplicar manualmente. Descobri que essa abordagem 80/20 economiza um tempo de desenvolvimento massivo.

Eu construo workflows n8n como este profissionalmente — este tipo de automação de IA em várias etapas é na verdade minha especialidade. Se você quiser que eu ajude a arquitetar ou construir, me envie uma DM. Fico feliz em fazer uma chamada rápida e mapear a arquitetura para você.

De qualquer forma, ótima ideia de projeto — não o descarte, apenas reestruture-o.

1 curtida

Dois erros diferentes alternando geralmente significa dois problemas reais empilhados, e a resposta acima os separou corretamente. Vale a pena enfrentá-los nessa ordem.

O erro a.ok(nodeExists) é um problema de conexão: um nó de ferramenta (Perplexity, a ferramenta HTTP) é referenciado pelo agente mas não está conectado corretamente na entrada Tool do nó AI Agent. Cada ferramenta deve se conectar à entrada ai_tool do agente, não à linha de execução principal. Abra o nó do agente e confirme se cada ferramenta aparece em sua lista de ferramentas; se uma está conectada ao fluxo principal em vez da entrada de ferramentas, você obtém exatamente este erro.

A falta de memória é separada e é o agente fazendo loop. Com Gemini mais várias ferramentas, se o agente não converge, ele continua chamando ferramentas e acumulando contexto até esgotar a memória da instância. Limite isso: defina um limite máximo de iterações no agente para que ele não possa fazer loop indefinidamente, e reduza o que cada ferramenta retorna (a ferramenta HTTP despejando uma resposta enorme no contexto é uma causa comum de OOM). Corrija a conexão primeiro para que funcione, depois adicione o limite de iterações para que uma execução que não converge falhe de forma limpa em vez de consumir memória.

Para um iniciante, este é um fluxo de trabalho viável; você não está sendo muito ambicioso, simplesmente caiu em duas das armadilhas padrão de agentes de uma vez. Obtenha uma ferramenta conectada e funcionando de ponta a ponta antes de adicionar a segunda; é muito mais fácil depurar uma ferramenta do que três. Qual ferramenta você estava conectando quando o erro nodeExists apareceu pela primeira vez?

1 curtida

Esse erro alternado ocorre quando a alocação de heap de memória do Node.js (max-old-space-size) fica completamente sobrecarregada pelos dados de execução concorrente fluindo através das janelas de contexto do Gemini e Perplexity. Quando o container falha, ele ou descarta o rastreamento de estado do node (a.ok(nodeExists) ou trava com um erro de Out-of-Memory.

Para evitar que isso derrube sua instância, você precisa forçar o n8n a limpar logs de execução anteriores e expandir o espaço de memória do Node.js dentro das variáveis de ambiente do Docker.

Adicione isto à configuração do seu container agora:
NODE_OPTIONS=–max-old-space-size=4096
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=24

Se você está executando loops de IA altamente complexos para um projeto de cliente e precisa de uma configuração de servidor inquebrantável que não trave sob carga antes de segunda-feira de manhã, vamos conversar. Sou engenheiro de infraestrutura backend; consigo entrar em uma rápida videochamada com você hoje, otimizar as camadas do seu Docker Compose e estabilizar seus engines de análise de IA por um valor fixo de $250. Me mande uma mensagem direta se quiser resolver isso em 30 minutos!