呷爸 jaba - 透過 LINE 群組輕鬆訂餐

📖 前置知識

jaba 呷爸 jaba 是一個 AI 驅動的午餐訂便當系統,透過 LINE Bot 讓群組點餐變得簡單直覺。

專為團隊設計的午餐訂餐系統,使用者只需在 LINE 群組中用自然語言告訴呷爸想吃什麼,系統就會自動處理訂單。


功能特色

LINE 群組點餐

超級管理員功能

系統功能


系統架構

系統架構


技術棧

技術 用途
FastAPI Web 框架
Socket.IO 即時通訊
Claude / Gemini AI 對話與菜單辨識
JSON 檔案 資料儲存(無資料庫)
uv 套件管理

兩個主頁面

頁面 路徑 功能
看板頁 / 群組訂單總覽、美食評論區、LINE QRCode
管理頁 /manager 超級管理員:群組訂單管理、店家管理、付款追蹤

看板頁面

看板頁面

顯示所有群組的訂單、美食評論區(LINE 群組對話)、LINE QRCode 方便加入呷爸好友。

超級管理員頁面

管理頁面

管理員可選擇群組、查看訂單、代理點餐、標記付款狀態。


使用方式

LINE 群組點餐

  1. 將呷爸 LINE Bot 加入群組
  2. 發送啟用密碼讓呷爸加入白名單
  3. 點餐流程:
    • 發送「開單」開始群組點餐
    • 與呷爸對話:「我要雞腿便當」「+1」「珍奶 微微 L」
    • 發送「收單」結束點餐並顯示統計

超級管理員

  1. 開啟管理頁 /manager
  2. 輸入管理員密碼登入
  3. 選擇群組查看訂單、編輯、標記付款
  4. 透過 AI 對話設定店家:「今天吃佳香味」
  5. 上傳菜單圖片讓 AI 自動建立菜單

AI Prompt Context 架構

呷爸的 AI 對話由四個層次組成,每次對話時動態組合:

┌─────────────────────────────────────────────────────────┐
│  Layer 4 (Top): 當前訊息 (Current Message)              │
│     └─ 使用者輸入的文字                                 │
├─────────────────────────────────────────────────────────┤
│  Layer 3: 對話歷史 (Chat History)                       │
│     └─ 最近 20 條對話記錄                               │
├─────────────────────────────────────────────────────────┤
│  Layer 2: 動態上下文 (Dynamic Context)                  │
│     └─ JSON: 今日店家、菜單、使用者偏好、目前訂單       │
├─────────────────────────────────────────────────────────┤
│  Layer 1 (Base): 系統提示詞 (System Prompt)             │
│     └─ group_ordering_prompt.md 或 manager_prompt.md    │
└─────────────────────────────────────────────────────────┘
                         │
                         ▼
              ┌─────────────────────┐
              │    AI Response      │
              │  {message, actions[]}│
              └─────────────────────┘

四種 AI 模式

模式 提示詞 用途
群組點餐 group_ordering_prompt.md LINE 群組訂餐
個人偏好 personal_prompt.md 1對1 聊天設定偏好
管理員 manager_prompt.md 店家設定
菜單辨識 menu_recognition_prompt.md 圖片轉菜單

動態上下文範例(群組點餐模式)

{
  "today": "2025-12-09",
  "today_stores": [{"store_id": "coco", "store_name": "CoCo都可茶飲"}],
  "group_id": "C1234567890",
  "group_name": "午餐群",
  "session_active": true,
  "group_orders": [{ "user_id": "U123", "display_name": "小明", "items": [...] }]
}

支援多個 AI Provider


菜單辨識與差異預覽

上傳菜單圖片,AI 自動提取結構化資訊:

差異預覽

辨識後顯示差異預覽:綠色為新增、黃色為修改、紅色為可刪除,可選擇性套用變更。


專案結構

jaba/
├── main.py                 # FastAPI 應用程式入口
├── app/
│   ├── ai.py               # AI 整合主入口
│   ├── data.py             # 資料存取模組
│   ├── linebot.py          # LINE Bot 整合
│   └── providers/          # CLI Provider 模組
│       ├── __init__.py     # BaseProvider 抽象類別與工廠
│       ├── claude.py       # Claude CLI 實作
│       └── gemini.py       # Gemini CLI 實作
├── data/
│   ├── stores/             # 店家資料與菜單
│   │   └── {store_id}/
│   │       ├── info.json   # 店家資訊
│   │       └── menu.json   # 菜單
│   └── system/             # 系統設定
│       ├── config.json     # 系統配置
│       ├── today.json      # 今日店家
│       ├── ai_config.json  # AI 模型設定
│       └── prompts/        # AI 提示詞
├── templates/              # HTML 頁面
└── static/                 # 靜態資源

執行時會動態產生:


快速開始

# 安裝相依套件
uv sync

# 設定 API 金鑰
export ANTHROPIC_API_KEY="your-api-key"

# 啟動伺服器
uv run uvicorn main:socket_app --reload --host 0.0.0.0 --port 8098

# 開啟瀏覽器
# http://localhost:8098

相關連結