沒想到在十多年後,因為想做飲食營養控管,所以自己利用 AI 開始做一個簡單的食品營養分析工具,能分析我每餐的飲食是否充足或過量,並提供有依據的飲食建議。
最初的雛形是基於以往曾參與「Food Open Data」倡議的經驗,我希望用最簡單的方式,拍照-->AI辨識與分析-->提供建議,然後統計一段期間的營養攝取狀況。
最初的想法
當我把我的雛形想法告訴 AI 後,Claude Code 很快的就幫我設計好雛形、教我如何申請Telegram Bot,這些步驟都寫得很清楚,整個雛形做好不用半天,我還愣住了,怎麼可能這麼簡單?難怪那些應用程式公司只把飲食營養分析當作一個「附加功能」,主要目的是蒐集其他的生理監測資料,但這些公司蒐集資料的用途,我自己在處理過美國資料經紀公司所販售的資料隱私資訊後,這是值得關心的議題,但不在此篇文章裡討論。
不過,我只專注在飲食分析項目,我覺得這個功能如果可以做好,再想想其他的。最初的想法很宏大,因為家人與自己患有慢性疾病,所以特別針對某些族群設計,但事實上,如果沒有實際的使用情境,可能也無法做出符合需求的產品。
於是我把這個Bot的使用者只鎖定在我自己的飲食分析上,那就簡單多了。
工具與環境限制
我在今年已經改用 Claude Cowork 與 Claude Code 協作,雖然 Claude Code 有一般介面版,但我大多數時間都開著終端機視窗使用 Claude Code,這樣比較能專心工作。
基於使用工具的習慣,我使用 Claude Code 開始建置,當時的模型雖然已經有Opus 4.8,但Sonnet 4.6已綽綽有餘,而後來出現的Fable 5 則用在其他專案裡。
因為只做給自己用,所以選擇最簡單的 Chatbot 形式;也因為我希望可以自由的使用而不是提供過多的個人資料給其他平台,選用 Telegram Bot,而不是台灣人常用的 LINE Bot ,而且 LINE上太多廣告,根本不想開它。
在衡量經濟現實及自我管理資料的想法後,目前這個 Bot 與資料庫只放在我的電腦裡,沒有上雲端,當電腦休眠、網路斷線時,Bot就會停止工作。
雖然只是給我自己使用,但我還是要求資料庫是加密儲存的,匯出資料時也必須加密。
台灣的飲食文化很多元
我不是開發者、也不是營養師,我自己也沒使用過其他的應用程式,所以無從理解在開發飲食營養分析應用程式的工程師們,除使用AI來分析外,有沒有實際去參考飲食營養資料?或是確認 AI 辨識出的東西是否正確?我自己就曾遇過 AI 把粽子辨識成滷雞腿、把茶葉蛋辨識成小饅頭的狀況,而錯誤的辨識結果也會影響到營養分析的結果。那使用者有沒有辦法修正辨識錯誤的結果?我把修改的功能寫進去,可修改食物名稱、份量、熱量,在昨天,我要求它能記住我每次修改後的資訊,做一次改版。
一般使用者無從得知 AI 辨識的依據是什麼,根據哪個飲食指南?資料庫?參考資料與分析出的結果可信度是多少?由於台灣有豐富多元的飲食文化,AI 能否辨識出不同國家料理的營養成份?
在 Claude 的協助下,這些問題都處理好了,我連輸入「Khichari」(印度阿育吠陀小豆粥),這個Bot 都能分析出來。
現在的進度
在我使用 Chatbot 的過程裡,也發現自己食用不少包裝食品,而這些食品通常都會有條碼,於那個在腦袋裡塵封十多年前的專案,又回到眼前--我能否靠掃描條碼就能取得每一份的營養成份資訊?又或是我拍下包裝上的營養成份表,我就可以直接讓 AI 取得資訊?
我把想法告訴Claude,它就開始幫我串接、寫程式、驗證,完成後再讓我實際去掃描一次條碼,並提醒我較知名的品牌比較可能有機會取得資料,但小眾的品牌就不會有。我分別測試義美與元本山的包裝食品,我有取得義美包裝食品的營養成份資訊,元本山則是無法經由條碼取得資訊,改由辨識拍攝的營養成份表取得。
食藥署的開放政府資料
由於 Claude 提醒我,台灣的包裝食品資料並不完整,尤其缺乏本地較小的廠牌的包裝食品資料。於是我想起了以前的食品安全溯源系統,但大概是更換執行團隊或什麼原因,原本的食品安全溯源網站已經不存在了,而食藥署提供「非登不可」與「非追不可」兩個平台,但都不是一般民眾會使用的介面,當我進一步再查找有無開放的API可以介接或是開放政府資料可以下載時,我在政府開放資料平台上找到「食品藥物開放資料平臺 OpenData API」網址,頁面列出的大概都是網站公告的資訊、丟在社群媒體上的懶人包,最後終於找到「食品追溯追蹤系統消費者查詢資料集」,但不是可以介接的 API,我讓Claude幫我寫入更新排程裡。
當我第一眼看到食藥署開放的 API 頁面時,我只能回應「不予置評」,當初行政院的「食品雲」理想,不知道是否在2024年後就沒再延續下去?最近的食安問題,「非登不可」與「非追不可」兩個平台能提供人民什麼協助?
在我寫這篇文章的同時,Claude正在幫我整合資料(使用額度快到期的Fable 5),同時也把 7 天更新一次的頻率寫進去,也因為台灣多元的飲食文化、食品名稱,Claude 也幫我整合同義詞表等這些細微的工作項目。
目的:了解自己的飲食習慣-鈉超標
從原本只想用AI辨識分析自己的飲食資料,到後來我發現AI辨識所依據資料的來源、可信度,都在一個黑盒子裡,基於工作習慣,我需要分析結果有憑有據,為此繞了很大一圈,但這麼大一圈、介接許多資料後,還是有很多地方需要調整,例如只能約略估算食物的份量,但資料庫可能是以 100 g 為單位;便當盒裡雜亂無章擺放的菜與飯,AI也無法正確辨識份量;台灣有很多美味的小吃是不在資料庫裡,只能讓AI去估算。不過我只是給自己使用,我可以再想辦法調整。
在我實際使用幾個星期後,我看著Bot自動產出的報表,雖然有測試資料,但我會記得刪除,保留下來的資料都顯示出我攝取的鈉超標了,而經營養師檢核,都認為我的飲食已偏清淡,但還是有鈉攝取過量的問題。
結尾
昨天晚上我完成掃條碼及辨識成份資料表的功能時,我其實百感交集。當初的 FOOD OpenData,因為各種原因,似乎成為一句口號,我在當時有與其他業者聊過,想過多種應用情境,但都沒有看到產品,我不喜歡安裝無法信任的程式,也不喜歡把自己的生理資料存在一般公司的電腦裡(美其名是存在雲端)。
我一直都在鼓勵許多使用者,把你需要的東西、想要解答的問題丟進AI,它會帶著你逐步從評估、製作雛形到完成、改版……。不再受限於需要花時間等待工程師幫你做雛形,而是直接生成可以用的雛形,再依照使用情境去修改,所有的天馬行空被實現的可能機會增加了,我覺得這才是AI時代的意義。
Image by Bernadette Wurzinger from Pixabay


留言
發佈留言
請勿匿名留言,待審核後才會出現。