旅遊記帳小幫手
時間: 2025.07
和朋友出遊時,分帳往往成為最麻煩的事。做了一個部署在 LINE 群組內的記帳小助手,用自然語言就能快速記帳、即時查詢、最後一鍵結算。展示如何在對的地方用 LLM(語意理解)、對的地方用固定邏輯(數學計算),把時間留給真正重要的旅行回憶。
專案簡介
朋友出遊最常卡在「分帳」:大家花得開心,但最後要翻找轉帳紀錄、對帳、算錢,讓旅行多了不必要的負擔。
2025 和朋友約了一趟體檢行,做了一個在 LINE 群組內的「旅遊記帳小助手」,用自然語言就能快速記帳、即時彙總個人花費、最後一鍵結算分帳。
以後出遊不需要再開 Excel、也不用投票誰做總務,同一個聊天群組隨手記、隨時查,結束時清清楚楚分帳,把時間留給真正重要的旅行回憶。
旅遊記帳小幫手示範影片
專案連結:
- LINE Bot ID: @022zjrut
- Google Sheets 資料庫
專案背景
為什麼出遊需要記帳幫手?
對於一群互相信任的好友,算錢的成本遠大於代墊的費用
朋友出遊時,大家都很樂意墊款、也願意結清帳款,可是因為旅遊過程的錢很雜,每次出遊最後都很難計算,常常要拖了很久才可以算得清。
由於真正的痛點並不是實際帳務的爭議,而是算錢的成本太高。因此,解決方案不是需要更精準的記帳,而是把記帳結算這件事的摩擦降到最低,讓大家隨手記、方便算。
我希望打造一個在 LINE 群組內就能完成所有記帳與分帳的系統,讓記帳變得像聊天一樣自然。
設計理念
- 夠用就好 - 不過度設計,也不欠缺功能
- 零維護成本 - Google Sheets 作為資料庫,無需伺服器
- 零使用摩擦 - 在 LINE 群組中直接對話,無需切換 App
什麼時候用 LLM、什麼時候用固定邏輯?
不是所有問題都該用 LLM 解決
技術選型的本質是「用對的工具解決對的問題」。LLM 擅長語意理解彈性高但速度慢、貴又有一釘的隨機性,數學計算需要快、穩、準,因此選用固定邏輯才能確保產出一致。
LLM vs 固定邏輯決策表
| 功能模組 | 技術選擇 | 為什麼? |
|---|---|---|
| 自然語言解析 | LLM | 使用者輸入格式多樣,需要彈性理解 |
| 意圖判斷 | LLM | 使用者行為多樣(記帳/查詢/結算/聊天) |
| 分帳計算 | 固定邏輯 | 數學公式確定(632 ÷ 4 = 158),無需彈性 |
| 債務最小化 | 固定算法 | 有標準解法(greedy algorithm),確定性高 |
| 資料讀寫 | 固定邏輯 | Google Sheets API 呼叫,固定格式 |
| 視覺化組裝 | 固定邏輯 | LINE Flex Message JSON 結構固定 |
設計原則
原則 1:LLM 只處理「需要理解語意」的部分
使用者輸入:「小助手,C同學幫墊了 632 元高雄到台南車費,應付人 A同學,B同學,C同學,D同學」
LLM 負責:
- 理解「C同學幫墊了」→ 墊款人 = C同學
- 提取「632 元」→ 金額 = 632
- 解析「應付人 A同學,B同學,C同學,D同學」→ 分帳對象 = 4 人
固定邏輯負責:
- 分帳計算:632 ÷ 4 = 158 元/人
- 寫入 Google Sheets
- 組裝 LINE 回覆卡片
原則 2:數學計算與資料處理用固定邏輯
| 場景 | 用固定邏輯的好處 |
|---|---|
| 分帳計算 | 確保計算準確,不浪費 token |
| 結算優化 | Greedy algorithm 保證最優解 |
| 資料寫入 | 速度快、成本零 |
原則 3:成本效益考量
假設每天 100 筆記帳:
方案 A:所有功能都用 LLM
- Token 成本:100 筆 × (解析 + 計算 + 格式化) = 高成本,還要等待 LLM 生成與理解長內容
- 風險:LLM 計算錯誤、格式不穩定
方案 B:只在語意理解用 LLM
- Token 成本:100 筆 × (僅解析) = 低成本,LLM 短內容處理速度快
- 風險:計算與格式由固定邏輯保證正確
系統架構
技術選擇的商業邏輯
因為是自用小工具,選擇最快驗證想法、最少維護成本的方案:
| 選擇 | 背後考量 | 技術優勢 |
|---|---|---|
| LINE Bot | 本來就有共同群組,零推廣成本 | Messaging API 標準化 |
| n8n 自動化 | 內部簡單邏輯,n8n 已足夠 | 視覺化流程編排,無需寫程式 |
| OpenAI API | 支援自然語言,降低使用門檻 | 智慧意圖判斷,無需記操作指令 |
| Google Sheets | 所有人都看得到,完全透明 | 零伺服器費用,維護成本最低 |
完全免費的基礎設施 + 低額 API 費用 = 大大改善旅遊分帳的困擾。
工作流程:
┌─────────────────────────────────────────────────────────┐
│ 使用者在 LINE 群組傳訊息 │
│ 例:「小助手,A同學墊 500,應付人 A,B,C」 │
└────────────┬────────────────────────────────────────────┘
│
┌────────────▼────────────────────────────────────────────┐
│ [n8n Webhook] │
│ • 接收 LINE 訊息 → 轉發到後續邏輯 │
└────────────┬────────────────────────────────────────────┘
│
┌────────────▼────────────────────────────────────────────┐
│ [OpenAI API - LLM] │
│ • 解析自然語言 → 提取結構化資料 │
│ • 判斷使用者意圖 → 分流到對應功能 │
└────────────┬────────────────────────────────────────────┘
│
┌────────┴────────┬──────────┬─────────┐
│ │ │ │
┌───▼──┐ ┌────▼──┐ ┌───▼──┐ ┌──▼───┐
│ 記帳 │ │ 查詢 │ │結算 │ │聊天 │
└───┬──┘ └────┬──┘ └───┬──┘ └──────┘
│ │ │
▼ ▼ ▼
┌──────────────────────────────────────────────────────────┐
│ [固定邏輯層] │
│ • 分帳計算 • Google Sheets 讀寫 │
│ • 債務最小化 • LINE Flex Message 組裝 │
└────────────┬─────────────────────────────────────────────┘
│
┌────────────▼────────────────────────────────────────────┐
│ 回傳給使用者(在 LINE 群組中) │
└─────────────────────────────────────────────────────────┘
技術架構如何解決原始問題
| 原始問題 | 技術解決方案 | 為什麼選這個方案? |
|---|---|---|
| 使用者要學操作 | OpenAI 語意解析,自然語言即可操作 | LLM 協助翻譯成指令即可 |
| 需要多人分帳 | 固定分帳邏輯 | 數學公式穩定快速 |
| 需要統計誰欠誰錢 | Google Sheets 紀錄 | 零學習成本 + 完全同步透明 |
| 帳務太雜很難理解 | LINE Flex Message(固定模板) | LINE 即時查詢,無需跳轉介面 |
為什麼好用?
| 效益 | 以前 | 現在 |
|---|---|---|
| 記帳時間 | 30 秒/筆(填表單) | 5 秒/筆(一句話) |
| 分帳計算 | 兩個月(收集和彙整耗時) | 30 秒(系統自動) |
| 轉帳次數 | 6+ 次(每人各轉) | 2-3 次(系統優化) |
| 學習成本 | 需要看 App 教學 | 直接在 LINE 群聊 |
| 查詢透明度 | 需要找訊息、翻 Excel | 隨時查看摘要 |
核心功能展示
1. 自然語言記帳
輸入範例:
小助手,C同學幫墊了 632 元高雄到台南車費,應付人 A同學,B同學,C同學,D同學
系統回應:
為了這632元的高雄到台南車費,C同學表示:「我幫大家墊錢了,不然我就變成台南的免費車司機啦!」大家也笑說:「那我們得趕快還錢,別讓C同學開個免費計程車行!」
2. 個人摘要
輸入範例:
小助手,個人摘要
系統回應:

視覺化呈現個人財務狀態:
- 應收/應付總額
- 我墊付的紀錄
- 別人幫我墊付的紀錄
3. 結算分帳
輸入範例:
小助手,總結分帳
系統回應:

系統自動計算最優轉帳方案:
- 誰該轉給誰
- 轉帳金額
- 最少轉帳次數(債務最小化算法)
省了多少時間: 從兩個月 → 30 秒
4. 輕量聊天
輸入範例:
小助手,講個 A 同學的笑話
小助手,體檢要注意什麼?
系統自動判斷意圖,提供對應回應。
技術策略總結
設計原則
| 原則 | 說明 | 實際應用 |
|---|---|---|
| LLM 只用在語意理解 | 自然語言解析、意圖判斷 | 記帳輸入、功能分流 |
| 數學計算不用 LLM | 有確定解法的用固定邏輯 | 分帳計算、債務優化 |
| 資料處理不用 LLM | 固定格式讀寫不需彈性 | Google Sheets API、Flex Message |
| 成效穩定優先 | 能用固定邏輯就不燒 token | 盡可能確保每次的產出穩定快速 |
核心功能試用
- LINE Bot ID: @022zjrut
- Google Sheets 資料庫 (可即時看到結果)
記帳測試 Prompt:
小助手,A同學墊付晚餐錢 1000
小助手,A同學墊付晚餐錢 2000,應付人 A同學,C同學
查詢摘要測試 Prompt:
小助手,個人摘要
結算分帳測試 Prompt:
小助手,總結分帳
適用情境
- 4-8 人朋友出遊
- 短期活動(旅遊、聚餐)
- 台灣國內旅遊(僅支援新台幣)