View a markdown version of this page

Guarde y recupere información - Amazon Bedrock AgentCore

Guarde y recupere información

Una vez que haya configurado una AgentCore memoria con al menos una estrategia de memoria a largo plazo y la estrategia esté ACTIVA, el servicio comenzará a procesar automáticamente los datos de la conversación para extraer y almacenar información. Este proceso consta de dos pasos distintos: guardar la conversación sin procesar y, a continuación, recuperar la información estructurada una vez procesada.

Paso 1: Guarda los eventos de conversación para activar la extracción

Todo el proceso de memoria a largo plazo se activa cuando se guardan datos de conversación en la memoria a corto plazo mediante la create_event operación. Cada vez que grabas un evento, estás proporcionando nueva materia prima para analizar tus estrategias de memoria activa.

importante

Solo los eventos que se creen después de que una estrategia de memoria pase a estar en estado se ACTIVE procesarán para su extracción de memoria a largo plazo. No se incluirán las conversaciones almacenadas antes de añadir y activar la estrategia.

El siguiente ejemplo muestra cómo guardar una conversación de varios turnos en un recurso de memoria.

Ejemplo: Guardar una conversación como una serie 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!")

Paso 2: Recupere la información extraída

La extracción y consolidación de recuerdos a largo plazo es un proceso asíncrono que se ejecuta en segundo plano. Es posible que los conocimientos de una nueva conversación tarden un minuto o más en estar disponibles para su recuperación. La lógica de la aplicación debería tener en cuenta este retraso.

Para recuperar la información estructurada, utilice la retrieve_memory_records operación. Esta operación realiza una potente búsqueda semántica en el almacén de memoria a largo plazo. Debe proporcionar la información correcta namespace que definió en su estrategia y una searchQuery que describa la información que busca.

El siguiente ejemplo muestra cómo esperar a que se procese y, a continuación, recuperar un resumen de la conversación guardada en el paso anterior.

Ejemplo: espere y recupere un resumen de la sesión

# '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.