最新
療心智能正式加入 NVIDIA Inception 新創計畫 | 療心智能入選 Anthropic Claude Startups 計畫 | 療心智能進入 2026 資訊應用服務創新創業新秀選拔決選 | DietMate 臨床營養 AI 平台開放診所試用 | Taiwan Health MCP v0.1.0 更新上線,支援 FHIR R4 資源與台灣 FDA 藥品查詢 → | 
聯絡我們
✓ 連結已複製

揭開 AI 營養師背後的技術:DietMate 的多模態 AI 系統是如何運作的?

深入剖析 DietMate 的 AI 技術架構:從影像辨識、多智能體協作到營養師審核。

BY 療心智能團隊 2025.11.23 · 8 分鐘閱讀
Key Takeaways
  • DietMate 同時處理三種輸入:食物照片(影像)、血糖等生理數值(結構化)、病患自述(文字),三者合併才能給出有意義的營養建議
  • 食物辨識目標準確率:單一食物 >90%、複雜餐點 >85%,支援 3,000 種以上台灣常見食物,辨識耗時 2–3 秒
  • 四個 Agent 並非輪流「聊天」,而是各自專注在飲食分析、健康數值、建議生成、品質審核,最後合併輸出給營養師
  • 人機協作不是口號:AI 建議送到營養師佇列後,審核時間從原本的 10–15 分鐘縮短至 2–3 分鐘,但簽核權始終在人手上
  • 所有病患資料本地儲存,符合個資法與 GDPR;AI 決策過程留有完整稽核軌跡

這個系統要解決什麼問題?

讓我們從一個實際情境開始:一位第二型糖尿病患者拍了一張便當照片傳給 DietMate,同時系統已知他今天早上的血糖是 178 mg/dL、腎絲球過濾率(eGFR)在輕度下降的邊緣。

這三件事合在一起,代表他這頓飯的白飯份量需要減少、醬汁的鈉含量需要評估、蛋白質攝取量還要對照腎功能另行計算。任何一個維度單獨看都只是局部資訊;把影像辨識、生理數值、個案背景三者整合,才能給出對這個人有意義的建議。

這就是 DietMate 技術架構的出發點:不是「讓 AI 看懂食物」,而是「讓 AI 在正確的脈絡下判讀食物」。


三個核心技術問題,各自怎麼解

問題一:三種格式的輸入,如何同時處理?

病患資料天然是異質的。一張便當照片是非結構化影像、血糖數值是結構化表格、「我最近很容易餓」是自由文字。傳統單一模型難以同時對三種格式建立語意關聯。

DietMate 的做法是在 API Gateway 層就把輸入分流:

用戶介面(Web App / LINE Bot / 營養師後台)
        │
        ▼
  API Gateway(FastAPI + Cloudflare)
        │
   ┌────┴────┐
   │ 輸入路由 │
   └────┬────┘
   ┌────┼────────────┐
   ▼    ▼            ▼
影像  結構化數據   文字描述
辨識  整合模組    NLP 解析
   └────┬────────────┘
        ▼
   AI 處理引擎(多 Agent 協作)
        ▼
   數據儲存層(本地,不出境)

影像進影像辨識模組,血糖等生理數據進結構化整合模組,文字進語言模型的 NLP 解析。三條管道處理完成後,才交給 AI 處理引擎做合併分析。分流不是為了複雜化,而是讓每種模態用最適合它的方式預處理,避免雜訊互相干擾。


問題二:台灣食物的辨識準確率,怎麼做到的?

食物辨識是 DietMate 最容易被問到的技術點,也是最容易被誤解的一個。「AI 看食物照片」聽起來簡單,但食物辨識的難度遠比辨識人臉複雜——同一道菜在不同光線、角度、擺盤下外觀差異極大,份量估算更牽涉到三維空間的推算。

目前的目標指標:單一食物辨識率 >90%,複雜混合餐點 >85%,分析完成時間 2–3 秒。做到這個數字,需要幾個配合條件:

1. 在地化資料集

通用的國際食物資料集對台灣食物覆蓋率嚴重不足。魯肉飯、麻油雞、鹽水雞、蚵仔煎——這些食物不只是分類問題,連烹調方式不同(乾煎 vs. 水炒)都會影響油脂含量的估算。DietMate 建立並持續維護台灣本地食物資料庫,目前涵蓋超過 3,000 種台灣常見食物與料理方式,這是外部通用模型無法提供的。

2. 訓練資料的台灣飲食偏差修正

模型不只要認識「這是什麼」,還要正確估算「份量有多少」。份量估算透過視覺特徵(食物與容器的比例、食物堆疊層數)進行推算,這部分的誤差控制目標是 ±10% 以內。

3. 處理流程

上傳照片(JPG/PNG,最大 5MB)
  ↓
預處理:調整解析度、標準化色彩空間、增強對比度
  ↓
食物辨識:CNN 架構識別所有食物項目(支援多食物同框)
  ↓
份量估算:視覺特徵推算份量
  ↓
查詢本地食物資料庫 → 計算營養成分
  ↓
輸出:每道食物的熱量、蛋白質、碳水、脂肪、鈉等主要營養素

辨識結果不是最終輸出,而是交給下一層的多 Agent 系統進行進一步的脈絡分析。


問題三:如何避免 AI 的單一視角盲點?

這是 DietMate 架構中最費工設計的部分:用四個專門化 Agent,模擬不同專業角色的協作討論,而不是讓單一模型包辦所有判斷。

┌────────────────────────────────────────────┐
│           Multi-Agent 協作系統               │
├────────────────────────────────────────────┤
│                                            │
│  Agent 1:飲食分析                          │
│  ├─ 分析這頓餐點的巨量營養素組成            │
│  ├─ 識別營養不均衡(例:蛋白質偏低)        │
│  └─ 計算本日累計攝取比例                   │
│                                            │
│  Agent 2:健康數值整合                      │
│  ├─ 對照血糖、血壓、腎功能等生理數據        │
│  ├─ 評估本餐食物對當前生理狀態的影響        │
│  └─ 標記高風險營養問題(如:腎病患的磷鉀)  │
│                                            │
│  Agent 3:建議生成                          │
│  ├─ 根據 Agent 1+2 的分析生成具體建議       │
│  ├─ 考量台灣在地飲食文化與可取得的替代品    │
│  └─ 提供可執行的替代方案(而非空泛衛教)    │
│                                            │
│  Agent 4:品質審核                          │
│  ├─ 檢查三個 Agent 的建議是否邏輯一致       │
│  ├─ 確保符合醫療標準與法規                 │
│  └─ 過濾矛盾或潛在有害的建議              │
│                                            │
└────────────────┬───────────────────────────┘
                 ↓
         整合輸出:多 Agent 討論結果 + 結構化報告
                 ↓
         推送至營養師審核佇列

為什麼不用一個通用模型直接給建議?在 DietMate 開發初期,我們確實嘗試過單一 Agent 包辦的架構。問題很快就暴露了:面對「血糖偏高但同時有輕度腎功能下降」的患者,單一 Agent 容易在「控糖建議(增加蛋白質)」與「護腎建議(限制蛋白質)」之間來回矛盾,無法有效整合多個維度的衝突。

四 Agent 分工之後,Agent 1 先完整分析飲食,Agent 2 平行整合健康數值,Agent 3 拿到這兩份報告再生成建議,Agent 4 最後做一致性檢查。衝突在 Agent 4 被發現,而不是直接輸出給病患。


人機協作的實際流程

「AI 輔助而非取代」說起來容易,實作起來需要把這個原則轉化成具體的工作流設計。

1. AI 生成初步建議(約 5–10 秒)
   ↓
2. 自動推送至營養師審核佇列

3. 營養師開啟案件,看到:
   ├─ 食物辨識結果(含信心分數)
   ├─ 各 Agent 的分析過程(可展開查看推理步驟)
   ├─ 整合後的初步建議
   └─ 病患歷史紀錄與生理數值摘要

4. 營養師審核與處置:
   ├─ ✅ 確認正確 → 一鍵發送給病患
   ├─ ✏️ 需要調整 → 直接在介面修改後發送
   └─ ❌ 發現重大問題 → 退回重新分析,並留下標記供模型學習

5. 所有審核動作完整記錄,包含:
   ├─ 誰審核、何時審核
   ├─ 修改了什麼
   └─ 最終發送的版本

這個流程帶來的實際效果是:審核時間從原來的 10–15 分鐘降到 2–3 分鐘,但營養師的「最終簽核」這個步驟沒有被省掉。速度的提升來自 AI 把準備工作做完,而不是跳過判斷。


語言模型在架構中的角色

除了影像辨識和多 Agent 協作,DietMate 還整合了大型語言模型(LLM)負責三個具體任務:

自然語言理解:解析病患用口語說的「我最近很容易餓,飯後兩小時就想再吃東西」這類描述,判斷其中可能暗示的血糖波動模式或胃排空問題。

報告結構化:把 AI 分析結果轉成醫療機構可用的格式——不是 JSON 或程式碼,而是營養師後台能直接閱讀、帶有清晰結構的評估摘要,包含問題點、建議事項、追蹤指標。

對話式互動:當病患用 LINE Bot 詢問「我可以吃蛋黃嗎?」,LLM 根據該病患的個案脈絡(腎功能、膽固醇、用藥史)生成對應的回應,而不是給通用的衛教答案。


合規與資安的設計選擇

DietMate 在架構層面做了幾個選擇,不是技術最優化,但是在醫療場景下非這樣做不可:

選擇具體做法原因
資料不出境病患資料本地儲存,不依賴境外雲端 API符合衛福部個資法規範
可解釋決策每個 Agent 的推理步驟可展開查看醫療合規要求稽核軌跡
人類最終簽核所有發送給病患的建議必須有執照人員確認《營養師法》執業規範
信心分層AI 給每個辨識結果標注信心分數低信心的結果優先進入人工審核

「可解釋性」在這裡不只是技術名詞,而是法律必要條件。當一份建議被審核人員或主管機關詢問「AI 為什麼這樣建議?」,系統必須能回答,而不是說「模型就是這樣輸出的」。


從架構回到臨床現實

DietMate 的技術架構不是從工程角度往外推的——它是從「一位診所院長要怎麼對病患負責」這個問題往裡收的。多模態輸入是因為病患資料天然異質;多 Agent 是因為複雜病況需要交叉驗證;人機協作是因為 AI 的法律地位目前還不能獨立簽核醫療建議。

技術的選擇永遠服從臨床的需求,而不是反過來。

想了解 DietMate 如何整合進診所工作流?歡迎查看 DietMate 產品介紹,或直接聯絡我們討論你的場景。

療
ABOUT THE AUTHOR
療心智能團隊

醫療 AI 實作團隊

我們關心的不是 AI 能不能看懂病歷,而是患者離開醫院後那 99% 的時間有沒有人接住。這裡的文章來自我們開發 DietMate、CareMate 與 Taiwan Health MCP 的第一手經驗,技術、產業與倫理都談。

討論區 (0 則留言)

加載評論中...