AI Agent 在工具失敗時停止

嗨,我使用了 AI Agent 節點,遇到一個問題。當某個工具沒有傳回任何結果時,整個代理就會停止執行。有沒有辦法讓它繼續執行或跳過該工具,而不是停止整個工作流程?

@Asha_Naon 打開失敗的工具節點 → 設定分頁(工具設定面板右上角)→ 將 On Error 設定為「Continue (Using Error Output)」。這樣當該工具拋出錯誤時,Agent 會收到錯誤作為工具回應,而不是整個工作流程掛掉。

在節點 JSON 中看起來像這樣:

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

之後 Agent 會看到類似「tool returned error: …」的訊息,並可以繞過它(向使用者道歉、嘗試不同的工具等)。是哪個工具出問題了?調整它的輸入可能很值得,這樣就不會在一開始就失敗了

嗨 @Asha_Naon

問題在於 n8n AI Agent 目前將任何工具故障或空結果視為「致命崩潰」。AI 沒有說出「我找不到任何東西」,而是整個工作流程就停止運行了。遺憾的是,標準的「出現錯誤時繼續」設定在這裡不起作用,因為崩潰發生在工具內部,而不是 Agent 本身。

最可靠的解決方案是停止使用直接工具節點,改用「呼叫 n8n 工作流程」工具。透過將工具邏輯放入單獨的子工作流程中,你可以為那些有問題的特定節點啟用「失敗時繼續」。這樣可以確保子工作流程始終完成並將某種回應傳送回 Agent,防止主工作流程當機。

另一個關鍵技巧是停止讓工具在技術上「失敗」。與其讓節點變紅並拋出錯誤,不如將其設定為傳回成功訊息,其中包含「軟錯誤」,例如 JSON 物件 {"success": false, "error": "No data found"}。這樣可以騙過 n8n 認為工具運作完美,同時給予 AI 它需要知道搜尋失敗的實際資訊。

最後,你需要在系統提示中告訴 AI 如何處理這些「軟錯誤」。明確指示 Agent,如果它看到「success: false」訊息或空結果,就不應該放棄。告訴它要麼嘗試不同的搜尋詞,嘗試修復輸入,或者直接用純英文向使用者說明情況。

感謝 @kjooleng @achamm,我試過了,但似乎沒有作用

你使用的是哪個 AI 模型?有時候,AI 模型也會扮演很重要的角色

嗨 @Asha_Naon,歡迎加入我們的社群!我是 Jay,是越南驗證的 n8n 創作者。

我之前遇過非常類似的問題,在我的情況下,問題原來是 AI Agent 節點 v3.1 中的一個 bug。每當其中一個工具失敗或沒有回傳任何內容時,整個 agent 就會停止,而不是繼續執行。

我能夠透過將 AI Agent 節點降級回版本 2.2 來解決這個問題。使用 v2.2,即使某些工具呼叫失敗或沒有產生任何輸出,agent 仍會繼續執行。

以下是我降級節點版本的方法:

  1. 開啟您的工作流程並複製 AI Agent 節點。

  2. 將其貼到文字編輯器(VS Code、記事本等)中,這樣您就可以看到 JSON。

  3. 找到該節點的 "typeVersion" 欄位,並將其從 3.1 變更為 2.2。

  4. 複製編輯後的 JSON 並將其貼回 n8n 中以取代舊節點。

之後,工作流程將再次使用 AI Agent v2.2,工具失敗應該不會再完全停止 agent。

如果您想要,我也可以分享一個最小範例工作流程,展示 3.1 中的行為,以及在 2.2 上再次正常運作的情況。

或者您可以複製這裡。

非常感謝你,它終於可以運作了

將工具節點的「發生錯誤時」設定為「繼續(使用錯誤輸出)」是防止整個代理程式故障的正確修復方式。不過,有一點需要注意,因為這樣做會製造新的陷阱。

工具在發生錯誤時繼續執行後,故障就會變成看不見。代理程式會繞過它,執行以綠色完成,而你永遠不會知道該工具一直在失敗。所以要將錯誤輸出連接到會記錄它的東西:使用「設定」節點將工具名稱和錯誤記錄到工作表,或在重複失敗時進行快速通知。這樣「繼續」才不會變成「兩週來無聲地損壞」。

也值得修復工具一開始為什麼不返回任何內容,因為每次執行都失敗的工具通常是輸入或驗證問題,而不是什麼可以直接跳過的東西。