簡介
記憶將代理從「金魚」(每次對話後都忘記)變成了真正的助手——記住偏好,從錯誤中學習,並隨著時間的推移積累知識。
1. 記憶體類型
1.1 短期記憶(工作記憶)
- 目前會話中的對話歷史記錄
- 受上下文視窗限制
1.2 長期記憶
- 跨會話持續存在
- 儲存在向量DB或資料庫中
- 例如:使用者偏好、重要事實
1.3 情景記憶
- 記住「情節」-代理完成任務的時間
- 幫助代理商從經驗中學習
- “上次用戶問同樣的事情時,我這樣做了並且成功了”
2. 實施
class AgentMemory:
def __init__(self):
self.short_term = []
self.long_term = chromadb.Collection("long_term")
self.episodes = chromadb.Collection("episodes")
def remember(self, content, memory_type="long_term"):
if memory_type == "long_term":
self.long_term.add(documents=[content], ...)
def recall(self, query, n=5):
return self.long_term.query(query_texts=[query], n_results=n)
def save_episode(self, task, steps, outcome):
episode = f"Task: {task}\nSteps: {steps}\nOutcome: {outcome}"
self.episodes.add(documents=[episode], ...)
總結
- 3種類型的記憶:短期(對話)、長期(事實)、情境(經驗)
- 向量資料庫是長期記憶和情景記憶的支柱
- 摘要記憶有助於將長對話融入情境窗口
- 情景記憶有助於代理隨著時間的推移而改進
練習
- 實作完整的AgentMemory類
- 建立一個能夠跨會話「記住」使用者偏好的代理
- 實施情景記憶,測試代理人會改善嗎?
- 比較:長對話的緩衝記憶體與摘要記憶體