iT邦幫忙

2026 iThome 鐵人賽

DAY 18
0
AI 自動化

30 天打造我的 AI 自動化工作流系列 第 18 篇

Day 18|Workflow 出錯怎麼辦?學習 n8n 的錯誤處理與除錯方法

  • 分享至 

  • xImage
  •  

昨天終於把前面學過的功能組合起來,完成了第一個比較完整的:

AI 客服訊息自動分類系統

目前的流程已經可以做到:

Webhook → AI 分類 → Switch 分流 → Email / Google Sheets

不過 Workflow 變長之後,我也發現一個很現實的問題:

只要其中一個 Node 出錯,後面的流程就可能全部停下來。

例如 AI 沒有正常回傳、Google Sheets 寫入失敗,甚至只是資料欄位名稱打錯,都可能讓 Workflow 無法正常執行。

所以今天先不增加新的功能,而是來學一件實際做自動化一定會遇到的事情:

怎麼找到錯誤發生在哪裡?


Workflow 為什麼會出錯?

前幾天的 Workflow 很短,出錯時通常一下就可以找到問題。

但現在已經變成:

Webhook
   ↓
  AI
   ↓
 Switch
 ↙  ↓  ↘
Email   Google Sheets

只要其中一個地方出問題,就可能影響後面的流程。

例如:

Webhook 沒收到 text
        ↓
AI 沒有正確的文字可以分析
        ↓
AI 沒產生 category
        ↓
Switch 不知道要走哪條路

所以有時候看到 Switch 沒有執行,真正的問題不一定出在 Switch。

有可能是更前面的 Node 已經出錯了。


Step 1:故意製造一個錯誤

今天我想先故意把 Workflow 弄錯一次。

例如原本 Webhook 收到的資料是:

{
  "text": "系統目前無法登入"
}

AI Prompt 原本取得:

{{ $json.body.text }}

可以故意把它改成不存在的欄位,例如:

{{ $json.body.message }}

但實際 JSON 根本沒有:

message

這時候後面的 AI 就可能拿不到原本預期的資料。

https://ithelp.ithome.com.tw/upload/images/20261002/201788353fH7WLinUL.png

圖 1 故意設定錯誤的資料欄位進行測試


Step 2:不要急著一直重新執行

以前看到紅色錯誤時,我第一個反應可能是:

「是不是 n8n 壞掉了?」

然後一直重新執行。

但今天開始練習另一種方式:

先找出是哪一個 Node 開始出現問題。

例如完整流程:

Webhook → AI → Switch → Email

如果 Email 沒有寄出去,我會先看:

Webhook 有沒有收到資料?

再看:

AI 有沒有正常輸出?

最後才看:

Switch 有沒有走到 urgent?

這樣就不用一次檢查整個 Workflow。


Step 3:查看 Node 的 Input 和 Output

這時候 Day 8 學到的 Input / Output 就非常重要了。

假設 Webhook 的 Output 是:

{
  "body": {
    "text": "系統目前無法登入"
  }
}

代表 Webhook 沒問題。

接著查看 AI Node。

如果 AI 原本應該收到:

系統目前無法登入

結果卻沒有收到文字,就可以往 Expression 的設定檢查。

原本錯誤的是:

{{ $json.body.message }}

正確應該是:

{{ $json.body.text }}

這樣就找到問題了。

https://ithelp.ithome.com.tw/upload/images/20261002/20178835etPkWnbJrY.png

圖 2 透過 Input / Output 檢查資料傳遞狀況


Step 4:一個 Node 一個 Node 測試

Workflow 越來越長之後,我覺得一開始就直接執行全部流程反而比較難除錯。

比較簡單的方法是分段確認:

Webhook ✓
   ↓
AI ✓
   ↓
Switch ✓
   ↓
Email / Sheets ✓

先確認 Webhook 收到的資料正確。

再確認 AI 有沒有得到預期的輸出,例如:

{
  "category": "urgent",
  "summary": "使用者目前無法登入",
  "notify": true
}

接著再確認 Switch 是否真的讀到:

category = urgent

最後才檢查 Email。

這樣問題發生時,比較容易知道是哪一步出錯。


Step 5:檢查 AI 的 Output

AI 是目前 Workflow 裡比較特別的一個部分。

因為一般 Node 的規則通常比較固定,但 AI 的回答可能受到 Prompt、模型以及輸入內容影響。

例如我們預期:

{
  "category": "urgent"
}

但 AI 卻產生:

分類結果:urgent

這時候 AI 本身可能沒有「執行失敗」,但後面的 Switch 卻可能無法使用這個結果。

這也是一種錯誤。

所以除錯 AI Workflow 時,不能只看:

Node 有沒有變紅?

還要看:

Node 輸出的內容是不是我們預期的格式?

https://ithelp.ithome.com.tw/upload/images/20261002/20178835CTRz4vA3PU.png

圖 3 檢查 AI 是否按照指定格式輸出資料


Step 6:看看執行紀錄

除了直接查看 Workflow,也可以利用 n8n 的執行紀錄來確認每次 Workflow 的執行情況。

當流程執行失敗時,可以回頭查看那一次執行,觀察:

哪一個 Node 成功?

哪一個 Node 開始失敗?

當時收到什麼 Input?

錯誤訊息是什麼?

https://ithelp.ithome.com.tw/upload/images/20261002/20178835LDUjNAJNBu.png

圖 4 查看 Workflow 執行失敗的位置與錯誤資訊

這比只知道「Workflow 沒有成功」有用很多。


Step 7:錯誤處理不只是「修 Bug」

今天原本只是想學怎麼找錯誤,但後來發現還有另一個問題。

假設這套 Workflow 真的每天自動執行。

如果凌晨 3 點突然失敗,我根本不會一直盯著 n8n。

所以更完整的自動化系統,除了正常流程之外,其實也應該考慮:

正常
↓
繼續執行

發生錯誤
↓
記錄錯誤
↓
通知管理者

例如未來可以設計:

Workflow 發生錯誤
        ↓
取得錯誤資訊
        ↓
發送 Email
        ↓
通知「某個 Workflow 執行失敗」

這樣就不用等到自己發現資料沒有進 Google Sheets,才知道系統早就出問題了。


今天整理出的除錯順序

經過今天的測試,我覺得之後 Workflow 出錯時,可以先按照一個固定方向檢查:

先找失敗的 Node → 看 Input → 看 Output → 檢查 Expression / 欄位 → 檢查 AI 格式 → 修正後重新測試

比起看到錯誤就一直改不同地方,這樣比較容易找到真正的原因。

尤其 Workflow 越來越大之後,這個習慣應該會更重要。


今日小結

今天沒有讓 Workflow 多一個很酷的新功能,但我覺得這反而是很重要的一天。

前面一直在想:

怎麼讓 Workflow 做更多事情?

今天第一次開始想:

如果 Workflow 沒有照預期工作,我要怎麼知道問題在哪?

而目前最重要的方法就是:

不要一次看整條 Workflow,而是沿著資料流,一個 Node 一個 Node 檢查 Input 和 Output。

這也讓我發現,建立自動化不只是把 Node 接起來而已。

真正要讓它可以長期使用,還要考慮:

錯誤、測試、紀錄與通知。

到目前為止,我們都是等 Workflow 開始之後才看結果。

明天想再進一步,看看 n8n 怎麼處理「一大堆資料」,而不是每次只處理一筆。


上一篇
Day 17|把前面全部組起來!打造 AI 客服訊息自動分類系統
下一篇
Day 19|一次來很多筆資料怎麼辦?認識 n8n 的多筆資料與批次處理
系列文
30 天打造我的 AI 自動化工作流 共 26 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言