里程碑
我讓 AI 成為心靈樹洞,卻先被 undefined 搞瘋了
棗子 @date-dates發布於
構想
在課程完成後,我開始思考自己可以做一個什麼樣的小精靈。身為一個對心理學有興趣的人,我想到了「心情日誌」:如果能用聊天的形式與 AI 互動,還能順便記錄自己的心情,那不是很好嗎?
於是我開始動手試做。一開始想著:「這不就是加一個 Google Sheets 作為紀錄嗎?」卻沒想到,這竟然是一場無止境的抓蟲(Bug)大作戰……
原理
先分享一下每個節點的作用。首先,Webhook 負責接收 LINE 傳來的訊息,再由 Edit Fields 整理需要的資料,交給 AI Agent 理解內容並生成回覆。
特別的是,我加入了 Structured Output Parser,讓 AI 的輸出符合預先設定的結構。因為這個系統不只是聊天,還需要將心情整理成日誌,因此回答不能只有單純的關心與理解,還需要包含日誌內容、情緒分類及反思等資訊,才能供後續流程使用。
在適當的情況下,系統會先整理日誌草稿,詢問使用者是否同意保存,避免記錄使用者不想保存的內容。IF 節點則負責根據 AI 判斷出的意圖,將流程分流;最後,在使用者明確同意保存後,才將日誌寫入 Google Sheets,方便日後回顧。
困難
其中,我卡最久的兩個問題,分別是 AI Agent 的 Prompt 和 Structured Output Parser。
Prompt 的部分,是我卡最久的問題之一。當時 Input 明明已經收到使用者傳來的文字,AI Agent 卻一直顯示 "undefined"。我試著讀取 Edit Fields 整理後的資料,也嘗試直接指定節點,但仍然無法成功,甚至一度回頭檢查前面的資料傳遞。最後,我改成直接從 Webhook 的原始資料中取得訊息,才成功讓 AI Agent 正確讀取使用者輸入。這次經驗讓我發現,即使資料確實存在,也不代表引用資料的路徑一定正確。
至於 Structured Output Parser,一開始我不知道需要讓 AI 以固定的結構輸出內容,導致後續流程難以直接取得需要的資料。我曾試著在 AI Agent 的 Prompt 中加入相關提示詞,卻仍然屢屢出錯。後來才改用 Structured Output Parser 設定輸出格式,將日誌內容、情緒、反思及意圖等欄位明確分類,讓後續節點能依照指定欄位處理資料,再將相應的內容對應到 Google Sheets 的欄位。
心得
累是真的累。沒有相關技術背景的我,就像個瞎子摸象,只能一步步試錯,抓了一隻又一隻的蟲。
雖然耗時,但最後還是完成了自己想做的作品。它現在或許還很粗糙,只能算是勉強「跑得動」,但至少已經跨出了第一步。我也希望能在這個可以運作的基礎上,持續修正問題、完善功能,讓我的心情日誌變得更好。
2 個愛心0 則留言
登入並驗證手機後就能留言。登入