L'agent IA s'arrête en cas d'échec de l'outil

Bonjour, j’utilise le nœud AI Agent et j’ai un problème. Quand un outil ne retourne aucun résultat, l’agent entier s’arrête. Y a-t-il un moyen de le faire continuer ou d’ignorer cet outil au lieu d’arrêter tout le flux de travail ?

@Asha_Naon ouvre le nœud d’outil qui est défaillant → onglet Paramètres (en haut à droite du panneau de configuration de l’outil) → définis « On Error » (En cas d’erreur) sur « Continue (Using Error Output) » (Continuer (en utilisant la sortie d’erreur)). Désormais, quand cet outil lance une erreur, l’agent reçoit l’erreur comme réponse de l’outil au lieu que tout le workflow échoue.

dans le JSON du nœud, ça ressemble à :

{
  "parameters": { },
  "type": "n8n-nodes-base.yourToolNode",
  "typeVersion": 1,
  "position": [600, 300],
  "onError": "continueErrorOutput",
  "name": "Your Tool"
}

après ça, l’agent voit quelque chose comme « l’outil a retourné une erreur : … » et peut contourner le problème (s’excuser auprès de l’utilisateur, essayer un outil différent, etc). Quel est l’outil qui pose problème ? Ça pourrait valoir le coup d’ajuster ses entrées aussi pour qu’il ne échoue pas en premier lieu

Bonjour @Asha_Naon

Le problème est que l’Agent IA n8n traite actuellement tout échec d’outil ou résultat vide comme un « crash fatal ». Au lieu que l’IA dise « Je n’ai rien trouvé », l’ensemble du workflow s’arrête simplement. Malheureusement, le paramètre standard « Continuer en cas d’erreur » ne fonctionne pas ici car le crash se produit à l’intérieur de l’outil, pas de l’agent lui-même.

Le correctif le plus fiable consiste à arrêter d’utiliser des nœuds d’outil directs et à utiliser plutôt l’outil « Appeler un workflow n8n ». En plaçant la logique de votre outil dans un sous-workflow séparé, vous pouvez activer « Continuer en cas d’échec » pour les nœuds spécifiques qui sont instables. Cela garantit que le sous-workflow se termine toujours et envoie une réponse quelconque à l’agent, empêchant le workflow principal de s’arrêter.

Une autre astuce clé consiste à empêcher vos outils d’« échouer » au sens technique. Au lieu de laisser un nœud devenir rouge et lancer une erreur, configurez-le pour qu’il retourne un message réussi contenant une « erreur douce », comme un objet JSON disant {"success": false, "error": "No data found"}. Cela fait croire à n8n que l’outil a fonctionné parfaitement, tout en donnant à l’IA l’information réelle dont elle a besoin pour savoir que la recherche a échoué.

Enfin, vous devez indiquer à l’IA comment gérer ces « erreurs douces » dans son Système Prompt. Instruisez explicitement l’agent que s’il voit un message « success: false » ou un résultat vide, il ne doit pas abandonner. Dites-lui d’essayer un terme de recherche différent, de tenter de corriger l’entrée, ou simplement d’expliquer la situation à l’utilisateur en langage naturel.

merci @kjooleng @achamm, j’ai essayé mais ça ne semble pas fonctionner

Quel modèle d’IA utilisez-vous ? Parfois, le modèle d’IA joue aussi un rôle très important

Bonjour @Asha_Naon, bienvenue dans notre communauté ! Je suis Jay et je suis un créateur n8n vérifié vietnamien.

J’ai rencontré un problème très similaire auparavant, et dans mon cas, il s’est avéré être un bug dans le nœud AI Agent v3.1. Chaque fois que l’un des outils échouait ou ne retournait rien, l’agent s’arrêtait complètement au lieu de continuer.

J’ai pu contourner le problème en rétrogradant le nœud AI Agent à la version 2.2. Avec la v2.2, l’agent continuait à fonctionner même si certains appels d’outils échouaient ou ne produisaient aucune sortie.

Voici comment j’ai rétrogradé la version du nœud :

  1. Ouvrez votre workflow et copiez le nœud AI Agent.

  2. Collez-le dans un éditeur de texte (VS Code, Notepad, etc.) pour pouvoir voir le JSON.

  3. Trouvez le champ "typeVersion" de ce nœud et changez-le de 3.1 à 2.2.

  4. Copiez le JSON modifié et collez-le dans n8n pour remplacer l’ancien nœud.

Après cela, le workflow utilisera à nouveau AI Agent v2.2, et les défaillances d’outils ne devraient plus arrêter complètement l’agent.

Si vous le souhaitez, je peux également partager un workflow d’exemple minimal qui reproduit le comportement sur 3.1 et montre qu’il fonctionne à nouveau sur 2.2.

Ou vous pouvez copier ici.

merci beaucoup, ça marche enfin

Mettre le nœud d’outil On Error à Continue (Using Error Output) est le bon correctif pour empêcher tout l’agent de s’arrêter. Cependant, il y a une chose à ajouter, car cela crée un nouveau piège.

Une fois que l’outil continue en cas d’erreur, l’échec devient invisible. L’agent le contourne, l’exécution s’achève avec succès, et vous ne saurez jamais que cet outil échoue à chaque fois. Alors connectez la sortie d’erreur à quelque chose qui l’enregistre : un nœud Set qui enregistre le nom de l’outil et l’erreur dans une feuille de calcul, ou une notification rapide en cas d’échecs répétés. De cette façon, « continuer » ne devient pas « silencieusement cassé depuis deux semaines ».

Il vaut aussi la peine de corriger pourquoi l’outil ne retourne rien en premier lieu, car un outil qui échoue à chaque exécution est généralement un problème d’entrée ou d’authentification, pas quelque chose à simplement contourner.