iT邦幫忙

0

【Day 14】智慧意圖路由:根據 Dify 判斷結果自動執行 Notion 的 CRUD 操作

  • 分享至 

  • xImage
  •  

在昨天的 Day 13 中,我們成功為待辦助理傳遞了 conversation_id,讓 AI 具備了多輪對話與上下文記憶。然而,在先前的流程中,我們只能對 Notion 資料庫進行「新增(Create)」動作。當使用者在對話中說出「修改剛才的會議時間」或「刪除倒垃圾的任務」時,流程依然只會一味地建立新資料。

今天我們要實現自動化管線的核心關鍵——「智慧意圖路由(CRUD Routing)」!透過 Dify 判斷使用者的真正意圖(新增、更新、刪除、查詢),並使用 n8n 的 Switch / Router 節點 導向對應的 Notion 操作,打造具備完整 CRUD 能力的 AI 待辦系統!


為什麼需要意圖路由?

一個成熟的 AI 助理不能只有單一動作。當自然語言進入系統時,背後涉及多種資料庫操作:

  1. 新增(Create):使用者提到全新的待辦事項(如「明早九點要開會」)。
  2. 更新(Update):使用者欲修訂既有事項(如「改為十點開會」)。
  3. 刪除(Delete / Cancel):使用者欲取消任務(如「不用倒垃圾了」)。
  4. 查詢(Query / Read):使用者詢問行程(如「我明天有什麼安排?」)。

透過將 AI 的結構化輸出加上 action(動作類型)欄位,n8n 就能像交通警察一樣,將資料精準分流至不同的處理分支。


核心實作步驟說明

1. 修改 Dify 提示詞與輸出 JSON 結構

  • 進入 Dify 應用設定,更新 Prompt 讓 LLM 在輸出 JSON 時包含 action 屬性:
{
  "action": "create | update | delete | query",
  "task": "任務名稱",
  "priority": "High | Medium | Low",
  "time": "執行時間"
}

  • 引導模型根據對話上下文精準標註 action 種類。

2. 在 n8n 新增 Switch 節點進行分支

  • 在 Code in JavaScript 節點後方,新增一個 Switch 節點。
  • Mode:選擇 Rules。
  • Data Type:選擇 String。
  • 新增四個路由規則(Rules):
  • Rule 1 (Create):{{ $json.action }} 等於 create ➔ 連接至現有的 Create Database Page 節點。
  • Rule 2 (Update):{{ $json.action }} 等於 update ➔ 連接至 Update Database Page 節點。
  • Rule 3 (Delete):{{ $json.action }} 等於 delete ➔ 連接至 Delete/Archive Page 節點。
  • Rule 4 (Query):{{ $json.action }} 等於 query ➔ 連接至 Get Many Database Pages 節點。

3. 配置 Update 與 Delete 的 Notion 節點

  • Update 分支:

  • 使用 Notion 節點的 Update a database page 功能。

  • 傳入需要更新的 Page ID(可由歷史記錄或查詢獲取),更新其 Priority 或 Time 屬性。

  • Delete 分支:

  • 使用 Notion 節點的 Update a page 功能,將 Archived 屬性改為 true(將該筆卡片封存刪除)。

4. 完整流程端到端測試

  • 測試發送「明天下午三點跟廠商開會」:

  • Dify 輸出 action: "create" ➔ 走向 Rule 1 ➔ Notion 自動新增卡片。

  • 測試追問「把剛才的會議改成四點」:

  • Dify 結合上下文輸出 action: "update" ➔ 走向 Rule 2 ➔ Notion 即時更新該筆卡片時間!

今天我們成功解決了傳統自動化只能「單向寫入」的局限,讓 n8n 與 Dify 結合出具備完整 CRUD 邏輯的智慧型 Agent。明天「Day 15」我們將對前半段(Day 01 - Day 15)的研發成果進行「階段性總複習與系統優化」,帶大家檢視整個自動化管線的效能與擴充方向!


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言