前幾天已經讓 AI Companion 可以結合 Health Memory、Health State 和衛教 RAG,根據使用者近期狀況產生比較個人化的回答。
但做到這裡,AI 其實還是偏向:
使用者問一個問題,AI 回答一個問題。
今天開始往下一步前進:
讓 AI 不只決定「要說什麼」,也開始決定「接下來要做什麼」。
也就是加入第一版 AI Agent。
目前系統裡的三個角色可以簡單分成:
LLM
→ 理解問題、產生回答
RAG
→ 找需要的知識
Agent
→ 根據 Context 決定下一個 Action
例如使用者說:
最近一直睡不好。
一般 LLM 可能直接回答睡眠建議。
加入 RAG 後,可以先找到可信的睡眠衛教資料再回答。
而 Agent 會再多判斷:
近期有沒有相關 Health Memory?
狀況持續多久?
要不要查 RAG?
要不要記錄新的 Health Event?
需要進一步追問嗎?
所以 Agent 並不是單純換一個模型,而是讓 LLM 開始有能力決定要不要使用工具。
目前先設計幾個簡單 Action:
reply
retrieve_health_rag
save_health_memory
ask_follow_up
create_reminder
suggest_professional_help
例如使用者說:
我今天早上的藥好像還沒吃。
Agent 可以判斷:
save_health_memory
→ 記錄 medication_not_taken
ask_follow_up
→ 確認是否真的漏服
reply
→ 提醒依照原本醫囑或用藥紀錄確認
這裡需要特別限制:
AI 不直接決定要不要補吃藥,也不自行修改用藥方式。
Agent 主要負責紀錄、提醒與資訊整理。
第一版先讓 LLM 輸出結構化結果:
{
"action": "retrieve_health_rag",
"reason": "近期持續出現睡眠問題",
"query": "睡眠品質改善與睡眠衛教"
}
程式收到 Action 後,再呼叫對應 Tool。
整體流程變成:
User Message
↓
Context
├─ Memory
├─ Health Memory
├─ Health State
└─ Conversation
↓
Agent Decision
↓
Tool / Action
↓
Result
↓
LLM Response
以前是把所有資料一次丟給 LLM。
現在則多了一層:
先判斷現在真正需要什麼,再執行對應 Action。
假設使用者說:
最近還是一直睡不好。
系統看到近期 Health Memory:
09/01 睡眠品質不好
09/02 半夜醒來兩次
09/03 仍然睡不好
Health State 顯示:
sleep_issue
duration: 3 days
trend: persistent
Agent 就可以決定:
查詢睡眠衛教 RAG
↓
取得相關知識
↓
產生個人化回答
最後回答就不只是:
建議保持規律作息。
而是:
你最近幾天都有提到睡眠品質不好,
看起來已經持續一段時間。
可以先觀察最近的咖啡因、午睡時間與睡前活動,
並盡量維持固定的睡眠時間。
如果持續影響白天精神,
也可以考慮向醫療專業人員諮詢。
健康情境中的 Agent 不能無限制執行 Action。
目前先限制:
不進行疾病診斷
不自行修改用藥
不決定停藥或加藥
不把 Health Memory 當成正式醫療紀錄
Agent 比較適合做的是:
整理資訊
查詢衛教資料
建立提醒
後續追問
健康狀態觀察
建議尋求專業協助
加入 Agent 後,最難的是:
什麼時候真的需要呼叫 Tool?
Tool 呼叫太多會增加延遲,也可能產生不必要的 Action;但判斷太保守,又會變回一般 Chatbot。
所以後續還需要調整 Agent 的觸發條件與安全規則。
Day 15 是:
Memory + RAG,讓回答更個人化。
Day 16 則變成:
Context
↓
Agent Decision
↓
Tool / Action
↓
Response
讓 AI Companion 開始從「只會回答」,進一步變成「可以決定下一步做什麼」。
下一步 Day 17,就可以繼續做:
根據 Health State 主動判斷什麼時候需要關心使用者。