View a markdown version of this page

AgentCore 記憶體中的記憶體組織 - Amazon Bedrock AgentCore

AgentCore 記憶體中的記憶體組織

您可以設定如何在 AgentCore 記憶體中組織短期和長期記憶體。這可讓您依工作階段和演員隔離記憶體。對於長期記憶體,您也可以設定命名空間來組織記憶體策略的擷取記憶體。

  • 演員 – 是指實體,例如最終使用者或客服人員/使用者組合。例如,在編碼支援聊天機器人中,演員通常是提出問題的開發人員。使用演員 ID 可協助系統知道記憶體所屬的使用者,將每個使用者的資料保持個別和整理。

  • 工作階段 – 使用者與 AI 代理器之間的單一對話或互動期間。它會將對話期間發生的所有相關訊息和事件分組。

  • 策略 (僅限長期記憶體) – 顯示正在使用的長期記憶體策略。當您建立 AgentCore 記憶體時,系統會自動產生此策略識別符。

短期記憶體組織

當您使用 CreateEvent 建立短期記憶體事件時,您可以指定工作階段 ID sessionId () 和演員 ID actorId (),以唯一識別事件的工作階段和演員。稍後,您可以使用短期記憶體操作來擷取使用者或工作階段的事件。

如需範例程式碼,請參閱步驟 3:擷取對話歷史記錄

長期記憶體組織

當您建立或更新 AgentCore 記憶體時,您可以選擇建立一或多個記憶體策略 。在策略中,使用命名空間來指定 AgentCore 記憶體組織長期記憶體

每次 AgentCore 記憶體使用記憶體策略擷取新的長期記憶體時,長期記憶體都會儲存在您設定的命名空間下。這表示所有長期記憶體的範圍都限定在其特定的命名空間,保持它們井然有序,並防止與其他使用者或工作階段發生衝突。您應該使用以斜線 / 分隔的階層格式,結尾是結尾斜線。結尾斜線可防止多租戶應用程式中的前綴衝突,例如,使用 /actors/Alice/而非 /actors/Alice 。如有需要,您可以根據您應用程式的組織需求,在命名空間中的括號內使用下列預先定義的變數:

  • actorId – 識別長期記憶體所屬的對象。

  • strategyId – 顯示正在使用的記憶體策略。

  • sessionId – 識別記憶體來自哪個工作階段或對話。

例如,如果您在建立 AgentCore 記憶體時將下列命名空間定義為策略的輸入:

/strategy/{memoryStrategyId}/actor/{actorId}/session/{sessionId}/

建立記憶體後,此命名空間可能看起來像:

/strategy/summarization-93483043/actor/actor-9830m2w3/session/session-9330sds8/

命名空間可以有不同層級的精細程度:

組織最精細層級

/strategy/{memoryStrategyId}/actor/{actorId}/session/{sessionId}/

跨工作階段演員層級的精細

/strategy/{memoryStrategyId}/actor/{actorId}/

跨演員策略層級的精細

/strategy/{memoryStrategyId}/

全球所有策略

/

如需範例程式碼,請參閱啟用長期記憶體

使用 IAM 限制存取

您可以建立 IAM 政策,依您定義的範圍限制記憶體存取,例如演員、工作階段和命名空間。使用範圍做為 IAM 政策中的內容索引鍵。

下列政策會將擷取記憶體的存取權限制在特定命名空間或特定namespacePath階層下的記錄。在此範例中,政策僅允許存取具有確切命名空間的記憶體,例如具有命名空間的 summaries/agent1/ OR,位於具有 的下列namespacePath階層下,例如 summaries/agent1/ summaries/agent1/session1/summaries/agent1/session2/

{ "Version":"2012-10-17", "Statement": [ { "Sid": "SpecificNamespaceAccess", "Effect": "Allow", "Action": [ "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/memory_id", "Condition": { "StringEquals": { "bedrock-agentcore:namespace": "summaries/agent1/" } } }, { "Sid": "SpecificNamespacePathAccess", "Effect": "Allow", "Action": [ "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/memory_id", "Condition": { "StringLike": { "bedrock-agentcore:namespacePath": "summaries/agent1/*" } } } ] }