本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
内存中的 AgentCore 内存组织
您可以设置短期和长期记忆在 AgentCore 内存中的组织方式。这使您可以按会话和按角色隔离记忆。对于长期内存,您还可以设置命名空间来组织内存策略中提取的内存。
-
参与者 — 指最终用户或 agent/user 组合等实体。例如,在编码支持聊天机器人中,演员通常是开发者提问。使用Actor ID可以帮助系统知道内存属于哪个用户,从而使每个用户的数据保持独立和井井有条。
-
会话 — 用户与 AI 代理之间的单一对话或互动时段。它将对话期间发生的所有相关消息和事件分组。
-
策略(仅限Long-term 内存)-显示正在使用哪种长期记忆策略。该策略标识符是在您创建 AgentCore 内存时自动生成的。
Short-term 内存组织
当您使用创建短期记忆事件时 CreateEvent,需要指定会话 ID (sessionId) 和唯一标识该事件的会话和参与者 ID (actorId)。之后,您可以使用短期内存操作检索用户或会话的事件。
有关示例代码,请参阅步骤 3:捕获对话历史记录。
Long-term 内存组织
创建或更新 AgentCore 内存时,可以选择创建一个或多个内存策略。在策略中,使用命名空间来指定 AgentCore Memory 可以组织长期记忆。
每当 AgentCore 内存使用内存策略提取新的长期内存时,长期内存都会保存在您设置的命名空间下。这意味着所有长期内存都限于其特定的命名空间,从而使它们井井有条并防止与其他用户或会话发生任何冲突。您应该使用分层格式,以正斜杠分隔/,以尾部斜杠结尾。结尾的斜杠可防止多租户应用程序中的前缀冲突,例如,使用代替。/actors/Alice/ /actors/Alice根据需要,您可以根据应用程序的组织需求在命名空间的大括号内使用以下预定义变量:
-
ActorId — 确定长期记忆属于谁。
-
StrategyID — 显示正在使用哪种内存策略。
-
会话ID — 识别内存来自哪个会话或会话。
例如,如果您在创建 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 策略,根据您定义的范围(例如参与者、会话和命名空间)限制内存访问。在 IAM 政策中使用范围作为上下文密钥。
以下策略限制了将内存检索到特定命名空间或特定 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/*" } } } ] }