Agent Platform Memory Bank

Agent Platform Memory Bank 可根據使用者與代理程式之間的對話,動態生成長期記憶。這些記憶是個人化資訊,會在多個工作階段中保留,讓代理程式能根據脈絡和連續性調整及個人化回覆。

功能與特色

Memory Bank 可協助您管理記憶,以便個人化代理與使用者互動的方式,以及管理脈絡視窗。Memory Bank 會為每個範圍維護獨立的記憶體集合。每項記憶都是獨立的資訊片段,可用於擴充代理可用的情境。例如:

{
  "name": "projects/.../locations/.../reasoningEngines/.../memories/...",
  "scope": {
    "agent_name": "My agent",
    "user": "my user ID"
  },
  "fact": "I use Memory Bank to manage my memories."
}

Memory Bank 包含下列功能:

  • 記憶生成: 使用大型語言模型 (LLM) 建立、修正及管理記憶內容。

    • 記憶擷取:從來源資料中擷取最有意義的資訊,並儲存為記憶。

    • 記憶整合:將新擷取的資訊與現有記憶整合,讓記憶隨著新資訊的擷取而演進。您也可以將預先擷取的記憶內容 (例如代理程式或人工輔助認為有意義的資訊) 與現有記憶內容合併。

    • 非同步生成在背景生成個人化記憶,這樣代理就不必等待個人化記憶生成完畢。

    • 持續擷取事件:透過事件擷取功能串流及管理對話事件,系統會根據您設定的批次處理規則,自動觸發記憶體生成作業。

    • 可自訂的擷取功能:提供特定主題和少量樣本,設定 Memory Bank 認為有意義的資訊

    • 多模態理解:處理多模態資訊,生成並保留文字深入分析結果。

  • 代管儲存和擷取:充分運用全代管、持續性且可存取的記憶體儲存空間。

    • 跨身分資料隔離:記憶體合併和擷取作業會隔離至特定身分

    • 可存取且持續存在的儲存空間:儲存可從多個環境存取的回憶,包括 Agent Runtime本機環境或其他部署選項

    • 相似度搜尋:使用相似度搜尋功能,擷取特定身分的記憶內容。

    • 自動過期:設定記憶的存留時間 (TTL),確保系統自動刪除過時資訊。設定 Memory Bank 執行個體,讓系統自動將存留時間套用至插入或生成的記憶。

    • 記憶體修訂版本:自動建立及維護記憶體修訂版本,方便您檢查記憶體在擷取新資訊時的轉換方式。

    • 限制性權限:使用 IAM 條件,限制哪些主體可以讀取或寫入特定範圍的記憶內容。

  • 代理整合:將 Memory Bank 連線至代理,以便自動調度呼叫,產生及擷取記憶內容。

    • Agent Development Kit (ADK) 整合:使用內建 ADK 工具和 VertexAiMemoryBankService自動調度來自 ADK 型代理的呼叫,從 Memory Bank 讀取及寫入資料。

    • 其他架構:將 Memory Bank 程式碼包裝在工具和回呼中,以便協調記憶體生成和擷取作業。

用途

您可以運用 Memory Bank,將無狀態的代理程式互動轉換為有狀態的情境式體驗,讓代理程式隨著時間記憶、學習及適應。Memory Bank 非常適合需要下列功能的應用程式:

  • 長期個人化:打造專為個別使用者設計的體驗。Memory Bank 會將記憶範圍限定在特定身分,讓代理在多個工作階段中記住使用者的偏好設定、記錄和重要詳細資料。

    • 示例:客服專員記得使用者過去支援單中的重要資訊和產品偏好設定,不必再次詢問。
  • LLM 驅動的知識擷取:當您需要自動識別及保留對話或多模態內容中的重要資訊,且不想手動操作時,即可使用這項功能。

    • 範例:研究代理會讀取一系列技術論文,並彙整重要發現、方法和結論。
  • 動態且不斷演進的脈絡:如果需要非靜態的知識來源,請使用 Memory Bank。Memory Bank 的設計宗旨是持續整合來自代理程式的新資訊,並在有新資料時,精進及更新儲存的記憶內容。確保代理程式一律使用最新且準確的背景資訊。RAG 使用靜態外部知識庫,而 Memory Bank 則可根據代理提供的內容演進。

應用實例

Agent Platform Memory Bank 概念總覽

您可以搭配使用 Memory Bank 和 Agent Platform 工作階段,按照下列程序從儲存的工作階段生成記憶體:

  1. (工作階段) CreateSession:在每次對話開始時,建立新的工作階段。代理程式使用的對話記錄僅限於這個工作階段。工作階段包含使用者與代理程式互動時,依時間順序排列的訊息和動作 (SessionEvents)。所有工作階段都必須有使用者 ID,這個工作階段擷取的記憶內容 (請參閱 GenerateMemories) 會對應至這個使用者。

  2. (工作階段) AppendEvent:使用者與代理程式互動時,系統會將事件 (例如使用者訊息、代理程式回覆、工具動作) 上傳至工作階段。這些事件會保留對話記錄,並建立對話記錄,可用於生成回憶。

  3. (工作階段) ListEvents:使用者與代理程式互動時,代理程式會擷取對話記錄。

  4. (Memory Bank) 生成或建立記憶:

    • GenerateMemories:在指定間隔 (例如每個工作階段或每回合對話結束時),代理程式可以觸發記憶內容,並使用對話記錄生成記憶內容。系統會自動從對話記錄中擷取使用者資訊,以便在目前或日後的工作階段中使用。

    • CreateMemory:您的代理程式可直接將記憶寫入 Memory Bank。舉例來說,代理程式可以決定何時應寫入記憶體,以及應儲存哪些資訊 (記憶體即為工具)。如要讓代理程式進一步控管擷取的資訊,請使用 CreateMemory

  5. (Memory Bank) RetrieveMemories:使用者與代理互動時,代理可以擷取有關該使用者的記憶。您可以擷取所有記憶內容 (簡單擷取),也可以只擷取與目前對話最相關的記憶內容 (相似度搜尋擷取)。然後將擷取的回憶插入提示。

快速入門導覽課程

如要開始使用 Memory Bank,請參閱下列快速入門導覽課程:

提示詞注入的安全性風險

除了代理程式平台共擔責任中列出的安全責任外,使用長期記憶時,請考量提示注入和記憶中毒的風險,這可能會影響代理程式。記憶體中毒是指 Memory Bank 中儲存了錯誤資訊。代理程式可能會在日後的工作階段中,根據這類錯誤或惡意資訊運作。

如要降低記憶體中毒的風險,請採取下列做法:

  • Model Armor:使用 Model Armor 檢查傳送至 Memory Bank 或來自代理程式的提示。

  • 對抗性測試:主動測試 LLM 應用程式是否有提示注入安全漏洞,方法是模擬攻擊。這通常稱為「紅隊測試」。

  • 沙箱執行:如果代理程式能夠執行或與外部/重要系統互動,這些動作應在沙箱環境中執行,並接受嚴格的存取控管和人工審查。

詳情請參閱「Google 的安全 AI 代理程式開發方針」。

後續步驟

快速入門

開始使用 Memory Bank API 管理長期記憶。

快速入門

開始使用 Agent Development Kit (ADK)。

指南

瞭解如何設定 Memory Bank。