在 昨天 (Day 9),我們看到 Reflection Pattern 如何讓 AI 事後檢討與修正。
AI 能反思「景點時間太長 → 超時」,並提出改進方案,讓行程成功在 18:00 前結束。
但是如果第二天我們再請 AI 排類似的行程,它是否還會重蹈覆轍?
光有 Reflection,AI 只能「當下修正」,但下次仍可能忘記之前的錯誤。
這時候,我們需要 Memory(記憶) —— 讓經驗能被保存,避免重蹈覆轍。
Memory 讓 AI 不只會臨時反思,還能「記住經驗」,未來遇到相似情境時自動套用。
圖:Memory 的核心循環 —— Write → Retrieve → Apply → Result → Write
使用者的輸入或任務結果會被寫入 (Write),存放到記憶庫。下一次遇到相似任務時,會先檢索 (Retrieve) 相關資訊並應用 (Apply),讓輸出更貼近需求。結果再回饋到記憶中,形成持續成長的循環。
若再搭配昨天的 Reflection,AI 在輸出後會先檢討,再把檢討結論更新進記憶,讓循環更完整。
而在不同情境下,這些記憶可以以不同型態存在,常見的有以下三種:
這三種記憶往往是同時存在並互相補充的:短期記憶處理上下文,長期記憶累積知識,而反思記憶則留存經驗教訓,三者結合才能讓 AI 真正展現『成長』的感覺。
延續 Day 9 案例,我們刻意給了:
總長度高達 13.5 小時,導致行程要到 22:30 才能結束 → 超時失敗。
[
{"place": "美泉宮", "minutes": 300},
{"place": "交通(美泉宮→餐廳)", "minutes": 30},
{"place": "午餐", "minutes": 120},
{"place": "交通(餐廳→聖史蒂芬大教堂)", "minutes": 30},
{"place": "聖史蒂芬大教堂", "minutes": 300}
]
模擬結果:22:30 才結束 → 超時。
昨天 Reflection 存下的記憶(延續 Day 9 檢討結論):
「美泉宮建議 4 小時、聖史蒂芬大教堂 1.75 小時,避免超時」
今天規劃時直接套用:
[
{"place": "美泉宮", "minutes": 240},
{"place": "交通(美泉宮→餐廳)", "minutes": 30},
{"place": "午餐", "minutes": 90},
{"place": "交通(餐廳→聖史蒂芬大教堂)", "minutes": 30},
{"place": "聖史蒂芬大教堂", "minutes": 105}
]
輸出結果:17:45 結束 → 剛好在 18:00 前完成。
旅行不只要考慮時間,還要顧及個人偏好。這裡我們示範 AI 如何透過 記憶 + LLM,記住使用者飲食習慣,並在推薦時自動套用。
# ---- 記憶存放結構 ----
memory_store = {"diet": {}, "cuisine_pref": []}
def update_memory(user_input: str):
if "不吃牛肉" in user_input:
memory_store["diet"]["beef"] = False
if "義大利" in user_input and "italian" not in memory_store["cuisine_pref"]:
memory_store["cuisine_pref"].append("italian")
# 使用者輸入
user_input = "我不吃牛肉,喜歡義大利餐廳"
update_memory(user_input)
print("使用者記憶:", memory_store)
輸出:
{
"diet": {"beef": false},
"cuisine_pref": ["italian"]
}
candidates = [
{"name": "市中心牛排館", "tags": ["beef", "steak"]},
{"name": "市中心壽司店", "tags": ["japanese", "sushi"]},
{"name": "市中心義大利餐廳", "tags": ["italian", "pasta"]}
]
import google.generativeai as genai
genai.configure(api_key="YOUR_API_KEY")
llm = genai.GenerativeModel("gemini-2.0-flash")
prompt = f"""
使用者的飲食習慣:
{memory_store}
候選餐廳:
{candidates}
請依照使用者的飲食限制與偏好,選擇最合適的一間餐廳,
並只輸出餐廳的名稱。
"""
response = llm.generate_content(prompt)
print("AI 建議的餐廳:", response.text.strip())
使用者記憶: {'diet': {'beef': False}, 'cuisine_pref': ['italian']}
AI 建議的餐廳:市中心義大利餐廳
在今天的示例中,我們看到了兩種情境:
這正好展現了 Memory 的核心價值:讓 AI 不只是「當下反思」,而是真正能把經驗保存下來。
對照來看:
有了這樣的能力,AI 就不再只是「短期助手」,而能逐漸成為「長期隊友」——會學習、會成長,越用越聰明。
圖:維也納百水公寓(Hundertwasserhaus)。這棟色彩斑斕、造型自由的建築,沒有一扇窗戶完全相同,每個細節都像被保存下來的片段記憶。綠樹從屋頂和牆面生長,讓舊有的空間與新的生命交織。就像 Memory 的作用:AI 把不同的經驗累積、保存,再在未來拼湊成更完整的理解與行動。(攝影:作者自攝)