Salva e recupera informazioni dettagliate
Dopo aver configurato una AgentCore memoria con almeno una strategia di memoria a lungo termine e la strategia è ATTIVA, il servizio inizierà automaticamente a elaborare i dati conversazionali per estrarre e archiviare informazioni. Questo processo prevede due fasi distinte: salvare la conversazione non elaborata e recuperare le informazioni strutturate dopo che sono state elaborate.
Passaggio 1: salva gli eventi conversazionali per attivare l'estrazione
L'intero processo di memoria a lungo termine viene attivato quando si salvano i dati conversazionali nella memoria a breve termine utilizzando l'operazione. create_event Ogni volta che si registra un evento, si fornisce nuova materia prima per l'analisi delle strategie di memoria attiva.
Importante
Solo gli eventi creati dopo il raggiungimento dello stato di una strategia di memoria ACTIVE verranno elaborati per l'estrazione della memoria a lungo termine. Le conversazioni archiviate prima dell'aggiunta e dell'attivazione della strategia non verranno incluse.
L'esempio seguente mostra come salvare una conversazione a più turni in una risorsa di memoria.
Esempio Salvare una conversazione come serie di eventi
#'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!")
Fase 2: Recupera le informazioni estratte
L'estrazione e il consolidamento delle memorie a lungo termine è un processo asincrono che viene eseguito in background. Potrebbe essere necessario un minuto o più prima che gli approfondimenti di una nuova conversazione diventino disponibili per il recupero. La logica dell'applicazione dovrebbe tenere conto di questo ritardo.
Per recuperare le informazioni strutturate, si utilizza l'retrieve_memory_recordsoperazione. Questa operazione esegue una potente ricerca semantica nell'archivio di memoria a lungo termine. È necessario fornire le informazioni corrette namespace che avete definito nella vostra strategia e una searchQuery che descriva le informazioni che state cercando.
L'esempio seguente dimostra come attendere l'elaborazione e quindi recuperare un riepilogo della conversazione salvata nel passaggio precedente.
Esempio: Attendi e recupera un riepilogo della sessione.
# '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.