Salve e recupere insights
Depois de configurar uma AgentCore memória com pelo menos uma estratégia de memória de longo prazo e a estratégia estiver ATIVA, o serviço começará automaticamente a processar dados de conversação para extrair e armazenar insights. Esse processo envolve duas etapas distintas: salvar a conversa bruta e, em seguida, recuperar os insights estruturados após serem processados.
Etapa 1: salvar eventos de conversação para acionar a extração
Todo o processo de memória de longo prazo é acionado quando você salva dados de conversação na memória de curto prazo usando a create_event operação. Cada vez que você grava um evento, você está fornecendo uma nova matéria-prima para análise de suas estratégias de memória ativa.
Importante
Somente eventos criados após o status de uma estratégia de memória se tornar ACTIVE serão processados para extração de memória de longo prazo. Todas as conversas armazenadas antes de a estratégia ser adicionada e ativada não serão incluídas.
O exemplo a seguir mostra como salvar uma conversa de vários turnos em um recurso de memória.
Exemplo: Salvar uma conversa como uma série de eventos
#'memory_id' is the ID of your memory resource with an active summary strategy. from bedrock_agentcore.memory.session import MemorySessionManager from bedrock_agentcore.memory.constants import ConversationalMessage, MessageRole import time actor_id = "User84" session_id = "OrderSupportSession1" # Create session manager session_manager = MemorySessionManager( memory_id=memory_id, region_name="us-west-2" ) # Create a session session = session_manager.create_memory_session( actor_id=actor_id, session_id=session_id ) print("Capturing conversational events...") # Add all conversation turns session.add_turns( messages=[ ConversationalMessage("Hi, I'm having trouble with my order #12345", MessageRole.USER), ConversationalMessage("I am sorry to hear that. Let me look up your order.", MessageRole.ASSISTANT), ConversationalMessage("lookup_order(order_id='12345')", MessageRole.TOOL), ConversationalMessage("I see your order was shipped 3 days ago. What specific issue are you experiencing?", MessageRole.ASSISTANT), ConversationalMessage("The package arrived damaged", MessageRole.USER), ] ) print("Conversation turns added successfully!")
Etapa 2: recuperar os insights extraídos
A extração e consolidação de memórias de longo prazo é um processo assíncrono executado em segundo plano. Pode levar um minuto ou mais para que os insights de uma nova conversa estejam disponíveis para recuperação. A lógica do seu aplicativo deve levar em conta esse atraso.
Para recuperar os insights estruturados, você usa a retrieve_memory_records operação. Essa operação executa uma poderosa pesquisa semântica no armazenamento de memória de longo prazo. Você deve fornecer o correto namespace que você definiu em sua estratégia e um searchQuery que descreva as informações que você está procurando.
O exemplo a seguir demonstra como aguardar o processamento e, em seguida, recuperar um resumo da conversa salva na etapa anterior.
Exemplo Aguarde e recupere um resumo da sessão
# 'session' is an existing session object that you created when adding the coversation turns # session should be created on a memory resource with an active summary strategy. # --- Example 1: Retrieve the user's shipping issues under a specific namespace --- memories = session.search_long_term_memories( namespace=f"/summaries/{actor_id}/{session_id}/", query="What problem did the user report with their order?", top_k=5 ) # --- Example 2: Retrieve the user's shipping issues under a particular namespace hierarchy (e.g.: shipping issues across multiple sessions) --- memories = session.search_long_term_memories( namespace_path=f"/summaries/{actor_id}/", query="What problem did the user report with their order?", top_k=5 ) print(f"Found {len(memories)} memories:") for memory_record in memories: print(f"Retrieved Issue Detail: {memory_record}") print("--------------------------------------------------------------------") # Example Output: # Retrieved Issue Detail: The user reported that their package for order #12345 arrived damaged.