iT邦幫忙

2026 iThome 鐵人賽

DAY 27
0
AI 自動化

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

Day 27|不只在 n8n 裡聊天!用 Webhook 打造可以從外部呼叫的 AI Agent

  • 分享至 

  • xImage
  •  

昨天替 AI Agent 加入了 Memory。

現在 Agent 已經慢慢具備:

Chat Model → 理解問題

Tools → 執行任務

Memory → 記住對話上下文

例如:

「我的專案叫 AI Automation。」

下一句只要說:

「幫我把剛剛那個專案記錄下來。」

Agent 就有機會利用前面的對話資訊,再透過 Google Sheets Tool 執行任務。

不過目前還有一個問題。

這個 Agent 幾乎都只能在 n8n 裡面測試。

如果未來想做自己的網頁、APP,甚至讓其他系統把問題傳給 Agent,總不能每次都先打開 n8n。

所以今天要把之前學過的 Webhook 再拿回來。

讓外部系統也能把訊息送進 AI Agent。


今天要完成什麼?

今天的目標是建立:

外部程式 / 使用者
        ↓
      Webhook
        ↓
     AI Agent
     ↙     ↘
 Memory   Tools
        ↓
     Response

例如外部送進:

{
  "message": "請用一句話介紹 AI 自動化"
}

Webhook 收到後,把 message 傳給 AI Agent。

Agent 處理完成,再把結果回傳出去。

這樣 n8n 就開始有點像:

自己的 AI 後端服務。

📷 這裡放今天完整 Workflow

圖 1 Webhook 串接 AI Agent 的完整 Workflow(自行截圖)


Step 1:重新加入 Webhook

Webhook 在 Day 10 已經使用過。

當時的概念是:

讓外部資料可以進入 n8n。

所以今天新增一個 Webhook,讓它當作 AI Agent 的入口。

流程先建立成:

Webhook
   ↓
AI Agent

Webhook 可以接收外部送進來的資料。

例如:

{
  "message": "什麼是 AI Agent?"
}

https://ithelp.ithome.com.tw/upload/images/20261006/20178835HgNxJPG2iZ.png

圖 2 使用 Webhook 作為 AI Agent 的外部資料入口


Step 2:取得 Webhook 傳進來的資料

接下來先測試 Webhook。

送入:

{
  "message": "請介紹 AI 自動化"
}

如果接收成功,就可以在 Webhook 的 Output 中找到這筆資料。

實際的資料結構可能會像:

body
 └── message

所以在後面的 Agent 中,可能會使用類似:

{{ $json.body.message }}

來取得使用者輸入。

不過這裡還是要以自己 Webhook 實際收到的 JSON 結構為準。

https://ithelp.ithome.com.tw/upload/images/20261006/20178835eFy1JGBxEo.png

圖 3 Webhook 成功接收到外部傳入的 message


Step 3:把 message 傳給 AI Agent

接著讓 AI Agent 使用 Webhook 傳進來的 message。

概念:

{
  "message": "請介紹 AI 自動化"
}
        ↓
     Webhook
        ↓
取得 message
        ↓
     AI Agent

這次 Agent 的問題不再是我直接在 AI Agent 裡輸入。

而是:

從外部 Request 傳進來。

這個差別非常重要。

因為只要其他系統可以送 HTTP Request,就有機會跟這個 Workflow 溝通。


Step 4:保留原本的 Chat Model

AI Agent 還是需要 Chat Model。

所以現在 Workflow 大概會變成:

Webhook
   ↓
AI Agent
   │
Chat Model

接著測試:

{
  "message": "請用一句話解釋什麼是 API"
}

如果設定正確,Agent 應該就可以讀到:

「請用一句話解釋什麼是 API」

然後交給 Chat Model 處理。

https://ithelp.ithome.com.tw/upload/images/20261006/20178835fWWKxBPpa1.png

圖 4 AI Agent 成功處理 Webhook 傳入的訊息


Step 5:Tool 也可以繼續使用

更有趣的是:

換成 Webhook 之後,Agent 原本的 Tool 不一定要拿掉。

例如之前已經有 Google Sheets Tool。

那外部系統就可以傳:

{
  "message": "幫我記錄:姓名 Student,主題 AI Automation,狀態 Learning"
}

Agent 收到之後:

Webhook
↓
AI Agent
↓
理解「幫我記錄」
↓
Google Sheets Tool
↓
新增資料

也就是:

外部系統不需要自己知道 Google Sheets 怎麼操作。

它只需要把使用者的需求傳給 Agent。

至於需不需要使用 Google Sheets,則由 Agent 根據任務和可用 Tools 判斷。


Step 6:把 Agent 的結果回傳出去

到這裡還少最後一步。

外部系統把資料送進來後,最後也需要收到結果。

所以概念上完整流程是:

外部系統
↓
Webhook
↓
AI Agent
↓
處理問題 / 使用 Tool
↓
回傳結果
↓
外部系統

例如外部傳入:

{
  "message": "請用一句話介紹 n8n"
}

最後可以回傳類似:

{
  "reply": "n8n 是一個可以串接不同服務並建立自動化流程的工具。"
}

這樣外部程式就可以取得 Agent 的回答。

依照 Webhook 的回應設定方式,可以使用 Webhook 本身的回應機制,或在需要控制回傳內容時使用對應的 Response 節點。

https://ithelp.ithome.com.tw/upload/images/20261006/201788358Du0Xcgb35.png

圖 5 外部 Request 成功取得 AI Agent 回傳結果


Test URL 和正式使用有什麼差別?

使用 Webhook 時,我覺得這個地方很容易搞混。

測試 Workflow 時,通常會有測試用的 Webhook URL。

它比較適合:

開發、測試、確認資料有沒有進來。

真正希望外部服務長期呼叫時,則需要使用正式運作時對應的 Webhook URL,並讓 Workflow 處於可接收正式請求的狀態。

所以不能只是:

測試成功 → 複製測試網址 → 永遠拿來用

正式串接時還是要確認自己使用的是正確的 Webhook URL 與 Workflow 狀態。

這也是之前 Day 10 第一次使用 Webhook 時還沒有特別注意到的地方。


Step 7:Memory 怎麼辦?

昨天剛學 Memory,所以今天會出現一個很重要的問題。

假設外部第一次送:

{
  "message": "我的專案叫 AI Automation"
}

第二次送:

{
  "message": "我的專案叫什麼?"
}

如果希望 Agent 知道這兩個 Request 是同一段對話,就不能只考慮 message。

還需要有方法區分:

這是誰的對話?

概念上可以多帶一個:

{
  "sessionId": "user001",
  "message": "我的專案叫 AI Automation"
}

下一次:

{
  "sessionId": "user001",
  "message": "我的專案叫什麼?"
}

這樣 Memory 才比較有辦法把相關訊息放在同一個對話脈絡中。

至於實際 Session ID 如何設定,會依目前使用的 Memory、Trigger 與 n8n 版本而不同。

今天先理解:

外部聊天不只有 message,還需要考慮 Session。

就很夠了。


如果沒有 Session 會怎樣?

假設同時有兩個使用者:

使用者 A
我的專案叫 Project A
使用者 B
我的專案叫 Project B

如果 Memory 沒有正確區分不同對話,就可能造成上下文混亂。

所以理想概念是:

User A
↓
Session A
↓
Memory A

User B
↓
Session B
↓
Memory B

這讓我發現:

做自己的 AI Agent,不只是把 AI 接上去就結束了。

還要處理使用者、Session、Memory 和資料安全。


Webhook 可以接到什麼?

做到今天之後,Webhook 的用途突然變得很明顯。

未來可以想像:

網頁
  ↓
Webhook
  ↓
AI Agent

也可以:

APP
 ↓
Webhook
 ↓
AI Agent

甚至其他系統:

其他服務
↓
HTTP Request
↓
n8n Webhook
↓
AI Agent
↓
Tools

也就是說,AI Agent 不一定只能存在於 n8n 的操作畫面中。

n8n 可以放在後面負責:

接收資料

AI 處理

呼叫 Tools

執行 Workflow

回傳結果

而前面可以是其他使用者介面。


今天的測試

今天可以做三組測試。

測試 1:普通問答

傳入:

{
  "message": "什麼是 AI Agent?"
}

確認:

Webhook → Agent → 回傳回答

測試 2:使用 Tool

傳入:

{
  "message": "幫我記錄:姓名 Student,主題 AI Automation,狀態 Learning"
}

確認:

Agent 有沒有呼叫 Google Sheets Tool。

測試 3:連續對話

使用相同 Session 概念傳入:

第一句:
我的專案叫 AI Automation

第二句:
我的專案叫什麼?

確認 Memory 是否能正確取得前面的對話。

這三個測試都成功的話,今天的 Agent 就已經有:

外部輸入 + AI + Tool + Memory + 外部輸出

的基本架構了。


今天最大的收穫

Day 25 讓 Agent 可以:

真的操作 Google Sheets。

Day 26 加入:

Memory。

而今天加入 Webhook 之後,我覺得整個架構才開始比較像真正可以被其他程式使用的系統。

從:

我在 n8n 裡測試 Agent

慢慢變成:

外部系統
↓
n8n
↓
AI Agent
↓
Memory + Tools
↓
回傳結果

這也讓我開始理解,前面 20 多天學的東西其實不是分開的。

Webhook、JSON、API、Authentication、AI、Google Sheets、Memory……

現在開始慢慢組在一起了。


今日小結

今天把 Webhook 接到 AI Agent,讓外部 Request 也可以把訊息傳進 Agent。

完整概念:

             外部系統
                ↓
             Webhook
                ↓
             AI Agent
          ↙      ↓       ↘
      Memory  Chat Model  Tools
                         ↓
                   Google Sheets
                ↓
             Response

現在這個 Agent 已經開始有「可以給外部系統使用」的感覺。

不過還有一個很現實的問題:

如果任何人知道 Webhook URL,都可以一直傳 Request 怎麼辦?

前面 Day 21 才學過 Authentication,現在剛好可以真正把它用回來。


上一篇
Day 26|AI Agent 也會忘記?加入 Memory,讓 Agent 記得前面的對話
下一篇
Day 28|我的 AI Agent 不能誰都能用!替 Webhook 加上基本的安全與驗證機制
系列文
30 天打造我的 AI 自動化工作流 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言