View a markdown version of this page

内存中的 AgentCore 内存组织 - Amazon Bedrock AgentCore

内存中的 AgentCore 内存组织

你可以设定短期和长期记忆在记忆中的组织 AgentCore 方式。这使您可以按会话和角色隔离记忆。对于长期内存,您还可以设置一个命名空间来组织内存策略中提取的内存。

  • Acto@@ r-指最终用户或 agent/user 组合等实体。例如,在编码支持聊天机器人中,参与者通常是开发者在提问。使用操作者 ID 可以帮助系统知道内存属于哪个用户,从而使每个用户的数据保持独立和井井有条。

  • 会话-用户与 AI 代理之间的单次对话或互动时段。它对对话期间发生的所有相关消息和事件进行分组。

  • 策略(仅限Long-term 内存)-显示正在使用哪种长期记忆策略。此策略标识符是在您创建 AgentCore 内存时自动生成的。

Short-term 记忆组织

使用创建短期记忆事件时 CreateEvent,可以指定会话 ID (sessionId) 和操作者 ID (actorId),它们可以唯一标识该事件的会话和操作者。稍后,您可以使用短期记忆操作检索用户或会话的事件。

有关示例代码,请参阅步骤 3:捕获对话历史记录

Long-term 记忆组织

创建或更新 AgentCore 内存时,可以选择创建一个或多个内存策略。在策略中,使用命名空间来指定 AgentCore Memory 组织长期记忆

每当 AgentCore Memory 使用内存策略提取新的长期内存时,长期内存都会保存在您设置的命名空间下。这意味着所有长期记忆都限于其特定的命名空间,从而使它们井井有条,并防止与其他用户或会话发生任何冲突。应使用由正斜杠分隔/、以尾部斜杠结尾的分层格式。尾部斜杠可防止在多租户应用程序中出现前缀冲突,例如,使用而不是。/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 层次结构下的记录的访问权限。在此示例中,该策略仅允许访问具有精确命名空间(例如 OR)的内存,其命名空间位于以下 NamespacePath 层次结构下,例如summaries/agent1/或。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/*" } } } ] }