Aidez-moi à construire mon workflow : le nœud Agent avec Gemini + Outil Perplexity + Outil HTTP plante avant le parser de sortie. L'erreur alterne entre a.ok(nodeExists et out-of-memory

Bonjour, je suis nouveau sur n8n. J’ai commencé à créer un workflow pour utiliser un copilot afin de postuler à des rôles qui correspondent à mon profil, mais je n’arrive pas à faire fonctionner le flux. Est-ce un problème d’architecture ou je fais quelque chose d’autre mal ? Est-ce que c’est réalisable ou je suis trop ambitieux ? Si ce n’est pas possible, que pourrais-je faire pour le rendre au moins utilisable ? - par exemple, juste faire en sorte que le workflow mette tous les liens et informations dans un tableau de données pour que je puisse postuler plus facilement. Devrais-je recommencer de zéro ?

Cette automatisation doit :

  • S’exécuter chaque jour à 9 h.

  • Rechercher quotidiennement des offres d’emploi correspondant à l’expérience d’un candidat sur plusieurs sites d’emploi.

  • Détecter les mots-clés ATS, l’URL, l’entreprise, les informations sur l’emploi, le poste, et détecter les injections de requête et les preuves.

  • Extraire les informations dans un tableau.

Un deuxième déclencheur devrait créer des versions personnalisées du CV et de la lettre de motivation pour chaque candidat et enregistrer ces fichiers dans un dossier Drive. Il doit aussi remplir automatiquement les formulaires pour que le candidat puisse décider s’il veut postuler ou non. Il doit télécharger les documents CV sur chaque site.

Si ce n’est pas possible ou si cela présente des limitations, dites-le moi et nous ferons quelque chose de plus simple. J’ai accès à Perplexity et à Google Studio.

1 « J'aime »

Bienvenue @Camila_Andrea !

L’erreur a.ok(nodeExists) signifie généralement qu’un nœud de la chaîne d’outils de l’agent est référencé mais non connecté correctement - vérifiez que chaque nœud d’outil (Perplexity, HTTP) possède une connexion appropriée à l’entrée « Tool » du nœud Agent IA, et non seulement au flux principal. Le problème OOM est un problème distinct : avec Gemini + plusieurs outils, l’agent peut tourner en boucle de nombreuses fois en accumulant une grande fenêtre de contexte, ce qui épuise la mémoire. Définissez une limite d’itérations max sur le nœud Agent (sous Paramètres) - commencez par 5-10 et voyez si cela se termine.

Pour l’architecture : votre portée est correcte, mais je la diviserais en deux flux de travail distincts - l’un pour la découverte/extraction de postes, l’autre pour la génération de documents. Exécuter tout dans un seul agent avec autant d’outils rend le débogage beaucoup plus difficile.

1 « J'aime »

Hey Camila,

C’est un projet vraiment cool, et c’est tout à fait faisable avec n8n — mais l’architecture a besoin d’être repensée.

Le crash que tu vois provient probablement du nœud Agent qui essaie de gérer trop de choses à la fois. Quand tu combines plusieurs appels d’outils (recherche Perplexity + scraping de job boards + remplissage de formulaires) dans un seul nœud Agent, ça peut dépasser les limites de mémoire, surtout avec Gemini.

Voici ce que je te suggère :

  1. Divise-le en workflows séparés.** Ne essaie pas de tout faire dans un seul nœud Agent. Divise-le :
    Workflow A : Cron quotidien → recherche de job boards → filtrage des correspondances → sauvegarde en base de données
    Workflow B : Déclenché par correspondance → Perplexity pour l’analyse des mots-clés ATS → formatage en feuille de calcul
    Workflow C : Déclenchement manuel → génération d’un CV/lettre de motivation sur mesure pour chaque job sélectionné

  2. Le nœud Agent fonctionne mieux pour la prise de décision**, pas pour chaîner plusieurs requêtes HTTP lourdes. Utilise l’Agent pour décider QUELS jobs cibler, pas pour scraper les jobs eux-mêmes.

  3. Pour la partie remplissage automatique de formulaires** — c’est la partie la plus délicate. La plupart des job boards utilisent des structures de formulaires uniques. Une approche plus pratique est de faire en sorte que le workflow prépare tout (CV, lettre de motivation, réponses) et t’envoie une alerte pour postuler manuellement. J’ai trouvé que cette approche 80/20 fait gagner énormément de temps de développement.

Je construis des workflows n8n comme celui-ci en professionnel — ce genre d’automatisation IA multi-étapes, c’est vraiment ma spécialité. Si tu veux que je t’aide à l’architecturer ou à le construire, envoie-moi un DM. Je serais ravi de sauter sur un appel rapide et de te cartographier l’architecture.

De toute façon, super idée de projet — n’abandonne pas, restructure-le simplement.

1 « J'aime »

Deux erreurs différentes qui alternent signifient généralement deux vrais problèmes qui s’empilent, et la réponse ci-dessus les a bien séparés. Ça vaut le coup de les traiter dans cet ordre.

L’erreur a.ok(nodeExists) est un problème de câblage : un nœud outil (Perplexity, l’outil HTTP) est référencé par l’agent mais pas correctement connecté à l’entrée Tool du nœud AI Agent. Chaque outil doit se connecter à l’entrée ai_tool de l’agent, pas à la ligne d’exécution principale. Ouvre le nœud agent et vérifie que chaque outil apparaît dans sa liste tools ; si l’un est câblé au flux principal au lieu de l’entrée tool, tu obtiens exactement cette erreur.

Le manque de mémoire est un problème distinct : c’est l’agent qui boucle. Avec Gemini plus plusieurs outils, si l’agent ne converge pas, il continue à appeler les outils et accumule le contexte jusqu’à saturer la mémoire de l’instance. Limite-le : définis une limite d’itérations maximales sur l’agent pour qu’il ne boucle pas indéfiniment, et réduis ce que chaque outil retourne (l’outil HTTP qui déverse une énorme réponse dans le contexte est une cause d’OOM courante). Corrige d’abord le câblage pour que ça fonctionne, puis ajoute la limite d’itérations pour qu’une exécution qui ne converge pas échoue proprement au lieu de consommer la mémoire.

Pour un débutant, c’est un workflow réalisable ; tu n’es pas trop ambitieux, tu as juste heurté deux des pièges standard des agents à la fois. Fais fonctionner un outil du bout à l’autre avant d’en ajouter un deuxième ; c’est beaucoup plus facile de déboguer un outil que trois. Quel outil étais-tu en train de câbler quand l’erreur nodeExists s’est d’abord manifestée ?

1 « J'aime »

Cette erreur alternée se produit quand l’allocation de mémoire heap de Node.js (max-old-space-size) est complètement débordée par les données d’exécution concurrente circulant dans les fenêtres de contexte de Gemini et Perplexity. Quand le conteneur s’étouffe, il abandonne soit le suivi de l’état du nœud (a.ok(nodeExists) soit s’écrase brutalement avec une erreur Out-of-Memory.

Pour éviter que cela fasse tomber votre instance, vous devez forcer n8n à éliminer les anciens journaux d’exécution et augmenter l’empreinte mémoire de Node.js dans vos variables d’environnement Docker.

Ajoutez ceci à votre configuration de conteneur dès maintenant :
NODE_OPTIONS=–max-old-space-size=4096
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=24

Si vous exécutez des boucles IA hautement complexes pour un projet client et avez besoin d’une configuration serveur infaillible qui ne s’écroule pas sous la charge avant lundi matin, connectons-nous. Je suis un ingénieur en infrastructure backend ; je peux faire un rapide partage d’écran avec vous aujourd’hui, optimiser vos couches Docker compose, et stabiliser vos moteurs d’analyse IA pour un forfait de 250 $. Envoyez-moi un DM si vous voulez que ce soit réglé dans les 30 minutes !