View a markdown version of this page

Organização da memória na AgentCore memória - Amazon Bedrock AgentCore

Organização da memória na AgentCore memória

Você pode definir como as memórias de curto e longo prazo são organizadas em uma AgentCore memória. Isso permite isolar memórias por sessão e por ator. Para memória de longo prazo, você também pode definir um namespace para organizar as memórias extraídas para uma estratégia de memória.

  • Ator — Refere-se a entidades como usuários finais ou agent/user combinações. Por exemplo, em um chatbot de suporte à codificação, o ator geralmente é o desenvolvedor fazendo perguntas. Usar o ID do ator ajuda o sistema a saber a qual usuário a memória pertence, mantendo os dados de cada usuário separados e organizados.

  • Sessão — Um único período de conversa ou interação entre o usuário e o agente de IA. Ele agrupa todas as mensagens e eventos relacionados que acontecem durante a conversa.

  • Estratégia (somente Long-term memória) — Mostra qual estratégia de memória de longo prazo está sendo usada. Esse identificador de estratégia é gerado automaticamente quando você cria uma AgentCore memória.

Short-term organização da memória

Ao criar um evento de memória de curto prazo com CreateEvent, você especifica uma ID de sessão (sessionId) e uma ID de ator (actorId) que identificam exclusivamente a sessão e o ator do evento. Posteriormente, você pode recuperar eventos para um usuário ou sessão usando operações de memória de curto prazo.

Por exemplo de código, consulte Etapa 3: Capturar o histórico da conversa.

Long-term organização da memória

Ao criar ou atualizar uma AgentCore memória, você pode, opcionalmente, criar uma ou mais estratégias de memória. Em uma estratégia, use um namespace para especificar que a AgentCore memória organiza as memórias de longo prazo.

Sempre que a AgentCore Memory extrai uma nova memória de longo prazo com uma estratégia de memória, a memória de longo prazo é salva no namespace que você definiu. Isso significa que todas as memórias de longo prazo têm como escopo seu namespace específico, mantendo-as organizadas e evitando conflitos com outros usuários ou sessões. Você deve usar um formato hierárquico separado por barras progressivas/, terminando com uma barra final. A barra final evita colisões de prefixos em aplicativos multilocatários — por exemplo, use em vez de. /actors/Alice/ /actors/Alice Conforme necessário, você pode usar as seguintes variáveis predefinidas entre chaves no namespace com base nas necessidades da organização do seu aplicativo:

  • ActorID — Identifica a quem pertence a memória de longo prazo.

  • StrategyID — Mostra qual estratégia de memória está sendo usada.

  • sessionID — Identifica de qual sessão ou conversa a memória vem.

Por exemplo, se você definir o namespace a seguir como entrada para sua estratégia ao criar uma AgentCore memória:

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

Após a criação da memória, esse namespace pode ter a seguinte aparência:

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

Um namespace pode ter diferentes níveis de granularidade:

Nível de organização mais granular

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

Granular no nível do ator em todas as sessões

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

Granular no nível da estratégia entre os atores

/strategy/{memoryStrategyId}/

Global em todas as estratégias

/

Por exemplo, código, consulte Habilitar memória de longo prazo.

Restrinja o acesso com o IAM

Você pode criar políticas do IAM para restringir o acesso à memória pelos escopos definidos, como ator, sessão e namespace. Use os escopos como chaves de contexto em suas políticas do IAM.

A política a seguir restringe o acesso à recuperação de memórias em um namespace ou registros específicos em uma determinada hierarquia de NamespacePath. Neste exemplo, a política permite acesso somente a memórias com namespaces exatos, como summaries/agent1/ OR, com namespaces na seguinte hierarquia de namespacePath com, como ou. 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/*" } } } ] }