Escenario: un agente de IA de atención al cliente que usa AgentCore Memory
En esta sección, aprenderás a crear un agente de IA de atención al cliente que utilice AgentCore Memory para ofrecer asistencia personalizada manteniendo el historial de conversaciones y extrayendo información a largo plazo sobre las preferencias de los usuarios. El tema incluye ejemplos de código para la AgentCore CLI y el AWS SDK.
Pensemos en una clienta, Sarah, que contacta con el agente de asistencia de inteligencia artificial de su sitio web de compras para preguntar sobre un pedido retrasado. El flujo de interacción a través de las API de AgentCore memoria tendría el siguiente aspecto:
Temas
Paso 1: Crear una AgentCore memoria
Primero, crea un recurso de memoria con capacidades de memoria a corto y largo plazo, configurando las estrategias para extraer la información a largo plazo.
ejemplo
Paso 2: Iniciar la sesión
Cuando Sarah inicia la conversación, el agente crea un identificador de sesión nuevo y único para realizar un seguimiento de esta interacción por separado.
# Unique identifier for the customer, Sarah sarah_actor_id = "user-sarah-123" # Unique identifier for this specific support session support_session_id = "customer-support-session-1" print(f"Session started for Actor ID: {sarah_actor_id}, Session ID: {support_session_id}")
Paso 3: Captura el historial de conversaciones
Mientras Sarah explica su problema, el agente captura cada momento de la conversación (tanto sus preguntas como las respuestas del agente). Esto rellena toda la conversación en la memoria a corto plazo y proporciona los datos sin procesar para que los procesen las estrategias de memoria a largo plazo.
print("Capturing conversational events...") full_conversation_payload = [ { 'conversational': { 'role': 'USER', 'content': {'text': "Hi, my order #ABC-456 is delayed."} } }, { 'conversational': { 'role': 'ASSISTANT', 'content': {'text': "I'm sorry to hear that, Sarah. Let me check the status for you."} } }, { 'conversational': { 'role': 'USER', 'content': {'text': "By the way, for future orders, please always use FedEx. I've had issues with other carriers."} } }, { 'conversational': { 'role': 'ASSISTANT', 'content': {'text': "Thank you for that information. I have made a note to use FedEx for your future shipments."} } } ] data_client.create_event( memoryId=memory_id, actorId=sarah_actor_id, sessionId=support_session_id, eventTimestamp=datetime.now(), payload=full_conversation_payload ) print("Conversation history has been captured in short-term memory.")
Paso 4: Generar memoria a largo plazo
En segundo plano, se ejecuta el proceso de extracción asíncrona. Este proceso analiza los eventos sin procesar recientes utilizando las estrategias de memoria configuradas para extraer recuerdos a largo plazo, como resúmenes, datos semánticos o preferencias del usuario, que luego se almacenan para su uso futuro.
Paso 5: Recupera las interacciones pasadas de la memoria a corto plazo
Para proporcionar asistencia basada en el contexto, el agente carga el historial de conversaciones actual. Esto ayuda al agente a entender los problemas que Sarah ha planteado en la conversación en curso.
print("\nRetrieving current conversation history from short-term memory...") response = data_client.list_events( memoryId=memory_id, actorId=sarah_actor_id, sessionId=support_session_id, maxResults=10 ) # Reverse the list of events to display them in chronological order event_list = reversed(response.get('events', [])) for event in event_list: print(event)
Paso 6: Utilice los recuerdos a largo plazo para obtener asistencia personalizada
El agente realiza una búsqueda semántica en las memorias extraídas a largo plazo para encontrar información relevante sobre las preferencias de Sarah, su historial de pedidos o sus inquietudes anteriores. Esto permite al agente ofrecer una asistencia altamente personalizada sin tener que pedirle a Sarah que repita información que ya ha compartido en conversaciones anteriores.
# Wait for the asynchronous extraction to finish print("\nWaiting 60 seconds for long-term memory processing...") time.sleep(60) # --- Example 1: Retrieve the user's shipping preference --- print("\nRetrieving user preferences from long-term memory...") preference_response = data_client.retrieve_memory_records( memoryId=memory_id, namespace=f"/users/{sarah_actor_id}/preferences/", searchCriteria={"searchQuery": "Does the user have a preferred shipping carrier?"} ) for record in preference_response.get('memoryRecordSummaries', []): print(f"- Retrieved Record: {record}") # --- Example 2: Broad query about the user's issue (across sessions with the help of namespacePath) --- print("\nPerforming a broad search for user's reported issues...") issue_response = data_client.retrieve_memory_records( memoryId=memory_id, namespacePath=f"/summaries/{sarah_actor_id}/", searchCriteria={"searchQuery": "What problem did the user report with their order?"} ) for record in issue_response.get('memoryRecordSummaries', []): print(f"- Retrieved Record: {record}")
Este enfoque integrado permite al agente mantener un contexto detallado en todas las sesiones, reconocer a los clientes habituales, recordar detalles importantes y ofrecer experiencias personalizadas sin problemas, lo que se traduce en una atención al cliente más rápida, natural y eficaz.