如何為AI Agent構建記憶系統
本文介紹了為AI Agent添加記憶功能的實用方法,包括短期記憶和長期記憶的概念、追蹤分析以及如何利用LangSmith工具實現記憶循環,從而讓Agent從以往交互中學習並改進行為。
如何為AI Agent賦予記憶能力
讓Agent從以往的行動中學習,是打造優秀Agent體驗的關鍵。這種能力通常被稱為“記憶”。有了記憶,Agent無需用户反覆糾正同一個錯誤,而是能在第一次被告知後正確執行任務。雖然在實現上仍在不斷演進,但其核心抽象概念已經清晰:你需要一個後台進程,用於發現Agent犯錯或學到新信息的地方,並將這些信息提取並泛化為一個數據結構。
本文將通過一個具體實現來演示這一過程,使用LangSmith的可觀測性作為追蹤存儲,LangSmith Engine作為分析追蹤的進程,以及LangSmith Context Hub作為記憶存儲。
什麼是記憶?
記憶是Agent在多次運行中可以檢索的持久化上下文,用於指導其行為。它可能包括事實、偏好、以往交互、指令、技能、示例和學習到的模式。追蹤記錄或日誌是事件發生的證據,只有當相關的經驗被轉換為Agent在後續運行中可檢索的上下文,並用於改變其行為時,它才成為真正的記憶。
為了更好地組織記憶,可以將其分為短期記憶和長期記憶。短期記憶是Agent執行當前任務時的可用上下文,例如當前線程、最近消息、工具結果、檢索到的文檔、中間推理產物、臨時文件或狀態。長期記憶則是跨越當前運行的持久化上下文,包括事實、偏好、示例、工作流、策略、指令和技能。
兩者之間的關係是一個讀寫循環。在運行中,Agent受益於長期記憶,前提是系統通過提示組裝、存儲檢索、工具訪問等方式使其可用。運行結束後,追蹤提供了事件證據,其中大部分應保留為歷史,但部分包含有用信號:可記住的偏好、需澄清的指令、應成為規則的工具有使用模式或需更新的技能。
一種有用的長期記憶分類方式借鑑自認知科學:語義記憶(Agent知道的事實和知識)、情景記憶(Agent的過往經歷)和程序記憶(Agent的行為方式——指令、工作流、策略、技能和工具使用規則)。許多顯著的Agent行為改進來自程序記憶。
高層記憶過程
一個運作良好的Agent記憶循環包括三個部分:
- 捕獲追蹤:追蹤記錄Agent完成任務的路徑:用户輸入、模型調用、工具輸入輸出、檢索文檔、路由決策、延遲、錯誤和用户反饋。這對於理解Agent行為至關重要,因為Agent的意外行為可能源於多種原因。
- 分析追蹤:從追蹤中找到有用信號。信號可能來自顯式反饋、評估失敗或重複出現的模式。難點在於診斷——相同的症狀可能對應不同的修復方法。
- 更新記憶:理解信號後,系統決定是否需要改變未來上下文。這包括修復問題(如澄清指令或更改路由規則),也包括記住有用的信息(如用户偏好或成功的示例)。
使用LangSmith實現
LangSmith提供了完整的記憶循環工具:LangSmith Observability用於捕獲追蹤,LangSmith Engine用於分析追蹤,LangSmith Context Hub用於更新記憶。
追蹤提供了捕獲步驟,追蹤項目存儲了Agent的軌跡。Engine作為後台進程,將追蹤轉化為改進信號——識別重複問題、診斷根因、提出具體變更建議(如添加規則、移動指令、創建新示例、更新技能或更改路由策略)。Context Hub作為版本化管理指令、工具和技能的地方,確保記憶不是臨時性的修改。
上下文更新後,後續運行加載最新的上下文,從而閉合循環。
設計原則
- 並非所有數據都應成為記憶更新:大多數追蹤數據應保留為歷史,僅一小部分成為持久上下文。
- 確保後續運行能夠讀取更新:如果運行時緩存了提示、工具或技能,記憶提交後需要刷新路徑。
- 用評估保護重要行為:如果記憶更新足夠重要,應具有檢測行為退化的方法。
通過這種結構化的方式,開發者可以逐步構建出能夠學習和適應的AI Agent系統。