Enregistrez et récupérez des informations
Une fois que vous avez configuré une AgentCore mémoire avec au moins une stratégie de mémoire à long terme et que la stratégie est ACTIVE, le service commence automatiquement à traiter les données conversationnelles pour extraire et stocker des informations. Ce processus comporte deux étapes distinctes : enregistrer la conversation brute, puis récupérer les informations structurées une fois qu'elles ont été traitées.
Étape 1 : enregistrer les événements conversationnels pour déclencher l'extraction
L'ensemble du processus de mémoire à long terme est déclenché lorsque vous enregistrez des données conversationnelles dans la mémoire à court terme à l'aide de cette create_event opération. Chaque fois que vous enregistrez un événement, vous fournissez une nouvelle matière première pour l'analyse de vos stratégies de mémoire active.
Important
Seuls les événements créés une fois que l'état d'une stratégie de mémoire est passé ACTIVE seront traités pour une extraction de mémoire à long terme. Les conversations enregistrées avant l'ajout et l'activation de la stratégie ne seront pas incluses.
L'exemple suivant montre comment enregistrer une conversation à plusieurs tours dans une ressource mémoire.
Exemple Enregistrer une conversation sous la forme d'une série d'événements
#'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!")
Étape 2 : Récupérez les informations extraites
L'extraction et la consolidation de mémoires à long terme sont des processus asynchrones qui s'exécutent en arrière-plan. Cela peut prendre une minute ou plus pour que les informations issues d'une nouvelle conversation soient disponibles pour être récupérées. La logique de votre application doit tenir compte de ce délai.
Pour récupérer les informations structurées, vous utilisez l'retrieve_memory_recordsopération. Cette opération effectue une recherche sémantique puissante dans la mémoire de stockage à long terme. Vous devez fournir l'information correcte namespace que vous avez définie dans votre stratégie ainsi searchQuery qu'une description des informations que vous recherchez.
L'exemple suivant montre comment attendre le traitement puis récupérer un résumé de la conversation enregistrée à l'étape précédente.
Exemple Attendre et récupérer le résumé d'une session
# '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.