Erkenntnisse speichern und abrufen
Sobald Sie einen AgentCore Speicher mit mindestens einer Langzeitspeicherstrategie konfiguriert haben und die Strategie AKTIV ist, beginnt der Dienst automatisch mit der Verarbeitung von Konversationsdaten, um Erkenntnisse zu extrahieren und zu speichern. Dieser Prozess umfasst zwei unterschiedliche Schritte: Speichern der unformatierten Konversation und anschließendes Abrufen der strukturierten Erkenntnisse, nachdem sie verarbeitet wurden.
Schritt 1: Speichern Sie Konversationsereignisse, um die Extraktion auszulösen
Der gesamte Langzeitgedächtnisprozess wird ausgelöst, wenn Sie Konversationsdaten mithilfe dieser Operation im Kurzzeitgedächtnis speichern. create_event Jedes Mal, wenn Sie ein Ereignis aufzeichnen, stellen Sie neues Rohmaterial zur Analyse Ihrer Strategien für das aktive Gedächtnis zur Verfügung.
Wichtig
Nur Ereignisse, die entstehen, nachdem der Status einer Speicherstrategie erreicht wurde, ACTIVE werden für die Extraktion des Langzeitgedächtnisses verarbeitet. Alle Konversationen, die vor dem Hinzufügen und Aktivieren der Strategie gespeichert wurden, werden nicht berücksichtigt.
Das folgende Beispiel zeigt, wie eine Multi-Turn-Konversation in einer Speicherressource gespeichert wird.
Beispiel: Speichern Sie eine Konversation als eine Reihe von Ereignissen
#'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!")
Schritt 2: Extrahierte Erkenntnisse abrufen
Die Extraktion und Konsolidierung von Langzeitgedächtnissen ist ein asynchroner Prozess, der im Hintergrund abläuft. Es kann eine Minute oder länger dauern, bis Erkenntnisse aus einer neuen Konversation abgerufen werden können. Ihre Anwendungslogik sollte diese Verzögerung berücksichtigen.
Um die strukturierten Erkenntnisse abzurufen, verwenden Sie die retrieve_memory_records Operation. Diese Operation führt eine leistungsstarke semantische Suche im Langzeitgedächtnisspeicher durch. Sie müssen die korrekte Angabe machennamespace, die Sie in Ihrer Strategie definiert haben, und einesearchQuery, die die Informationen beschreibt, nach denen Sie suchen.
Das folgende Beispiel zeigt, wie Sie auf die Verarbeitung warten und dann eine Zusammenfassung der im vorherigen Schritt gespeicherten Konversation abrufen.
Beispiel: Warten Sie und rufen Sie eine Sitzungszusammenfassung ab
# '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.