前兩天開始把 AI Companion 從「記得使用者」往「根據不同使用者調整互動方式」推進。
Day 19 建立了 Personalization Context,把 Memory、Health Memory、互動紀錄、偏好與近期狀態整理成 Agent 可以使用的 Context。
Day 20 則加入 Contextual Bandit,讓系統不再固定使用同一種互動方式,而是根據目前情境選擇比較適合的策略。
但做到這裡其實還少了最後一段:
策略被選出來之後,要怎麼真的變成一句話或一個 Action?
所以今天要把 Personalization Context、Contextual Bandit 和 Agent 串起來,完成第一版真正的「自適應互動」。
目前完整流程變成:
User Context
+
Health State
+
Interaction History
↓
Personalization Context
↓
Contextual Bandit
↓
選擇 Interaction Action
↓
Agent Executor
↓
LLM Response / Tool Call
↓
User Feedback
↓
Reward Log
↓
更新後續策略
Personalization Context 負責整理「現在這個人處於什麼狀態」,Bandit 負責決定「現在比較適合採取什麼互動策略」,最後再交給 Agent 執行。
也就是:
Bandit 決定做什麼,Agent 決定怎麼做。
例如 Bandit 選出的 Action 可能包含:
normal_chat
light_checkin
health_followup
reminder
encouragement
no_action
如果選到 light_checkin,Agent 不會直接把這個 Label 回傳給使用者,而是會將 Action 和 Context 一起交給 LLM,產生真正自然的回答。
假設目前 Personalization Context 是:
最近三天睡眠品質不好
今天已經與 AI 互動 2 次
使用者不喜歡頻繁提醒
晚上比較願意聊天
目前沒有危急健康事件
Contextual Bandit 根據這些特徵,最後選擇:
Action = light_checkin
接著 Agent 判斷這次不需要查 RAG,也不需要建立提醒,只需要進行簡短關心。
最後 LLM 產生:
「你這幾天好像都睡得不太好,今晚感覺有比較舒服一點嗎?」
這時候系統就不再只是「根據 Memory 回答」,而是會根據目前情境主動調整互動方式。
如果今天已經互動很多次,Bandit 甚至可能選擇:
no_action
代表現在不主動打擾使用者。
對高齡陪伴系統來說,我覺得這反而是一個很重要的能力。
因為好的陪伴並不是一直說話,而是知道:
什麼時候應該關心,什麼時候應該保持安靜。
策略執行後,還需要知道這次互動到底有沒有產生好的結果。
因此今天也開始加入 Reward Log。
第一版先記錄:
context
selected_action
timestamp
user_response
interaction_duration
reminder_acceptance
reward
例如:
Action:light_checkin
使用者:
「有啊,今天有比較早睡。」
Reward:+1
如果 AI 主動提醒後,使用者直接拒絕:
Action:reminder
使用者:
「不用一直提醒我。」
Reward:-1
這些結果之後就可以回到 Contextual Bandit,用來更新不同 Action 的權重。
也就是:
這次選擇策略
↓
觀察使用者反應
↓
計算 Reward
↓
更新策略
↓
下一次做更適合的選擇
讓 Personalization 不只是寫在 Prompt 裡,而是真的可以隨著長期互動逐漸調整。
做到這裡也出現另一個問題:
如果系統太依賴過去資料,會不會反而很奇怪?
例如使用者三天前提過睡不好,不代表每一次聊天都要問:
「你最近睡得怎麼樣?」
如果每次都強調記憶,反而會讓陪伴變成一種壓力。
所以 Personalization Context 不應該直接控制所有回答,而只是提供 Agent 額外判斷依據。
目前會同時考慮:
資訊是否仍然相關
最近是否已經提過
今天互動次數
事件重要程度
使用者偏好
目前情境
只有真正有幫助的 Context 才應該影響這一次互動。
Day 19:
建立 Personalization Context,理解現在面對的是誰。
Day 20:
使用 Contextual Bandit,根據情境選擇互動策略。
Day 21:
把策略交給 Agent 真正執行,並利用使用者反應形成 Feedback Loop。
目前流程已經開始形成:
Context
↓
Decision
↓
Action
↓
Feedback
↓
Learning
AI Companion 不再只是固定規則的聊天機器人,而是開始能根據不同使用者、不同時間與不同互動結果,逐漸調整自己的互動方式。
今天最重要的一句話就是:
Bandit 負責選擇互動策略,Agent 負責把策略真正執行出來,而 Feedback 則讓下一次互動有機會變得更適合使用者。
下一步就可以開始把前面完成的 Health Memory、Health Trend、衛教 RAG、Agent、Reminder、Personalization 與 Contextual Bandit 整合到完整的高齡智慧健康照護情境中。