前言

在數位轉型的浪潮下,如何讓專業知識(如畜牧技術)透過 AI 更親民地傳遞?本文將分享我如何利用 n8n 自動化工作流,結合 Gemini 2.5 大語言模型,打造出一位既專業又具備「台語人情味」的虛擬副技師——阿德。


一、 工作流架構圖

整個系統由五個核心節點組成,形成一個完整的閉環:

  1. LINE Webhook:接收來自用戶的訊息。
  2. Extract LINE Message:從複雜的 JSON 中提取使用者文字與 replyToken
  3. Process with Gemini AI:AI 核心,負責角色扮演與邏輯生成。
  4. Format Response for LINE:透過 JavaScript 處理格式錯誤。
  5. Send Reply to LINE (HTTP Request):將結果回傳給 LINE 伺服器。

二、 核心 Coding 邏輯與代表含意

在串接過程中,我們使用了兩段關鍵的代碼來確保穩定性:

1. 換行與特殊符號處理 (JavaScript)

這是最重要的一步。AI 生成的文字通常包含換行(Enter)或雙引號,這會導致發送給 LINE 的 JSON 結構破裂。

let text = $input.item.json.text;
// 將真正的換行符號轉為文字版的 \n,並將雙引號轉義
let safeText = text.replace(/\n/g, "\\n").replace(/"/g, '\\"');
return [{ json: { replyToken: ..., text: safeText } }];
  • 代表含意:確保資料在傳輸過程中不會因為「格式不合法」而被 LINE 拒絕。

2. 系統指令 (System Prompt) 優化

為了防止 AI 產生「幻覺」(例如亂編人事資料),我們使用了 事實錨定(Fact Anchoring) 技術:

「你是畜試所副技師阿德。恆春分所長是 陳嘉昇。清單外的人名嚴禁亂編背景,不確定時請引導用戶查詢官網。」

  • 代表含意:賦予 AI 靈魂的同時,建立「行為邊界」,確保公信力。

三、 疑難排解 (Troubleshooting) 大全

在開發過程中,我們踩過的坑都是寶貴的經驗:

Q1:為什麼一直出現 Invalid reply token

  • 原因:LINE 的 replyToken 壽命只有 30 秒
  • 解決法:不要在 n8n 編輯器點擊「測試舊資料」,必須直接從手機傳送新訊息來觸發。

Q2:為什麼機器人會回覆「很抱歉,本帳號無法個別回覆」?

  • 原因:這是 LINE 官方帳號預設的自動回應功能。
  • 解決法:到 LINE Official Account Manager 的「回應設定」,將「自動回應訊息」設為 停用,並開啟 Webhook

Q3:如何節省 Gemini 的費用?

  • 策略:將模型切換為 Gemini 1.5 Flash-Lite,並在指令中要求「全文 300 字以內」。
  • 結果:在不影響品質的前提下,大幅降低 Output Token 消耗。

四、 未來展望:地端化與記憶優化

下一步,我預計將工作流搬遷至 Docker 地端環境,以獲得更高的隱私性與無限的執行次數。同時,也計畫加入 Window Buffer Memory,讓阿德技師能「記得」農友上次提過的問題,提供更具連續性的專業諮詢。


結語:打造 AI 機器人不僅是技術的堆疊,更是對專業領域知識的重新梳理。希望這篇分享能幫助同樣想在 LINE 上部署 AI 的朋友們!

相關延伸閱讀與參考資料
https://youtu.be/14sTKPNFWis?si=8xaPXuMEdEdJCD4h

發表留言