里程碑
第一次用 n8n 打造 LINE 記帳小幫手|從構想到流程設計
Lu @lu11.10發布於 已編輯
專案構想
我常常忘記記帳,因此想做一個 LINE 小幫手,讓記帳融入日常聊天。用戶只要像平常一樣說「午餐吃了雞肉飯 80」,AI 就會整理成日期、品項、金額,確認後寫進 Google 試算表,也能隨時查詢本週、本月的消費明細。
使用工具: n8n、LINE Messaging API、OpenAI、Google Sheets
Day1(10/12):決定架構
- 思考: 原本構想是一個 AI 專門回應用戶,另一個 AI 負責記帳。
- 困難: 用戶聊天時不一定會說清楚金額和品項,資訊不完整也會被登錄。
- 解決: 把整個流程接成一直線,避免兩個 AI 資訊不對等。
- 思考: 變成一個 AI,並且由 AI 將整理好的資料傳進 Google 試算表。
- 困難: 用戶有些訊息只是純聊天,造成試算表不斷出現空白列。
- 解決: 把試算表移到 AI Agent 底下當作 Tool。一般連線是「流程走到就一定執行」,Tool 則是「AI 自己判斷要不要用」,所以資料湊齊才會記一筆。
Day2(10/14):多人使用與表格設計
思考: 希望多人共用同一個流程,但每個人只看得到自己的帳,還要能結算當週、當月。
做法:
- Simple Memory 的 Session ID 改成 LINE 的 userId,每個人的對話記憶分開,不會混在一起。
- 表格欄位設計為:日期、品項、金額、userID、週、月。
- 「週」「月」兩欄用 ARRAYFORMULA 從日期自動算出,方便之後篩選。
- 困難: 設定 Tool 欄位後,日期、品項、金額三格寫入了同一串文字,並出現錯誤
You have multiple tools with the same name: '_' - 原因: Tool 節點用中文命名,n8n 會把中文過濾成空字串,三個參數被當成同一個。
- 解決: Tool 改用英文名稱(
add_expense、query_week、query_month),中文說明留在 Description。
- 困難: AI 回覆說今天是 2023 年,試算表的日期也寫成 2023。
- 原因: System Message 沒有切到 Expression 模式,AI 看不到現在時間。
- 解決: 切到 Expression 模式,並在提示詞裡明確寫出今年年份。
Day3(10/15):查詢本週、本月
困難: 詢問「這週花多少」,AI 一直回「沒有記錄」。
排查過程:
- 到 Executions 發現 AI 根本沒有查詢用的 Tool,所以另外建立
query_week、query_month(Get Row(s))。 - 在 Tool 裡取用戶 ID 不能用
$json,要明確指定$('Webhook').item.json.body.events[0].source.userId。 - 用「一次只留一條 Filter」的二分法測試,確認 userID 篩選正常,問題出在「週」欄位的比對。
解決: 週與月改成只用 userID 篩選,再由 AI 自行篩出本週並加總。
Day4(10/15):讓 AI 守規矩
- 困難: 我只說「今天午餐好好吃」和「辛拉麵」,沒說金額,AI 卻自己寫入 -90。
- 原因: 舊的 Memory 留有過去紀錄,而且 System Message 沒有禁止猜測。
- 解決:
- System Message 明確規定:日期、品項、金額必須是用戶本人說出的內容,不可猜測或沿用舊金額。
- 呼叫
add_expense前,先跟用戶確認一次。 - 欄位說明也寫上「不可猜測」。
- 換新的 Session ID,清掉舊記憶。
- 困難: 我說「昨天領了 1000 元」,AI 回「只能記錄消費」。
- 原因: System Message 只寫「記帳助理」,沒說收入也能記,而且規則重複、互相衝突。
- 解決: 整合成單一版本的 System Message,把意圖分成記帳、查詢、閒聊三類,規定支出為負數、收入為正數,查詢時分開統計總支出與總收入。
學到的事
- 中文不能當 n8n 的內部名稱:
$fromAI參數名、Tool 名稱都要用英文。 - 預覽顯示
undefined不一定是錯,$fromAI要等 AI 呼叫才有值。 - 除錯用二分法:一次拿掉一個條件,就知道問題在哪。
- Executions 是最好的除錯工具:能看到 AI 呼叫了哪個 Tool、傳了什麼值。
- 改 Prompt 後要換 Session ID,否則 AI 會沿用舊對話。
之後想優化
- 用 Code 節點加總,取代 AI 心算
- 加上「查詢上週、上個月」
- 加上修改、刪除紀錄的功能
0 個愛心0 則留言
登入並驗證手機後就能留言。登入