Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Salva e recupera informazioni
Una volta configurata 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: il salvataggio della conversazione grezza e il recupero delle informazioni strutturate dopo che sono state elaborate.
Fase 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 registri un evento, fornisci nuove materie prime da analizzare per le tue 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. Tutte 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. Devi fornire il codice corretto namespace che hai definito nella tua strategia e searchQuery che descriva le informazioni che stai cercando.
L'esempio seguente dimostra come attendere l'elaborazione e quindi recuperare un riepilogo della conversazione salvato nel passaggio precedente.
Esempio: attendere e recuperare 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.