Scenario: un agente AI dell'assistenza clienti che utilizza AgentCore la memoria
In questa sezione imparerai come creare un agente di intelligenza artificiale per l'assistenza clienti che utilizzi la AgentCore memoria per fornire assistenza personalizzata conservando la cronologia delle conversazioni ed estraendo informazioni a lungo termine sulle preferenze degli utenti. L'argomento include esempi di codice per la AgentCore CLI e l' AWS SDK.
Prendi in considerazione una cliente, Sarah, che contatta l'agente AI del servizio di assistenza del tuo sito di shopping per richiedere informazioni su un ordine in ritardo. Il flusso di interazione attraverso le API di AgentCore memoria sarebbe simile al seguente:
Argomenti
Fase 1: Creare un AgentCore ricordo
Innanzitutto, si crea una risorsa di memoria con funzionalità di memoria sia a breve che a lungo termine, configurando le strategie per le informazioni a lungo termine da estrarre.
Esempio
Fase 2: Avvia la sessione
Quando Sarah avvia la conversazione, l'agente crea un nuovo e unico ID di sessione per tracciare questa interazione separatamente.
# 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}")
Passaggio 3: acquisisci la cronologia delle conversazioni
Mentre Sarah spiega il suo problema, l'agente registra ogni fase della conversazione (sia le sue domande che le risposte dell'agente). Questo compila l'intera conversazione nella memoria a breve termine e fornisce i dati grezzi per l'elaborazione delle strategie di memoria a lungo termine.
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.")
Fase 4: Generare memoria a lungo termine
In background, viene eseguito il processo di estrazione asincrona. Questo processo analizza gli eventi raw recenti utilizzando le strategie di memoria configurate per estrarre memorie a lungo termine come riepiloghi, fatti semantici o preferenze dell'utente, che vengono poi archiviate per usi futuri.
Fase 5: Recupera le interazioni passate dalla memoria a breve termine
Per fornire assistenza in base al contesto, l'agente carica la cronologia corrente delle conversazioni. Questo aiuta l'agente a capire quali problemi ha sollevato Sarah nella chat in corso.
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)
Fase 6: Utilizza memorie a lungo termine per un'assistenza personalizzata
L'agente esegue una ricerca semantica tra le memorie a lungo termine estratte per trovare informazioni pertinenti sulle preferenze di Sarah, sulla cronologia degli ordini o sulle preoccupazioni passate. Ciò consente all'agente di fornire un'assistenza altamente personalizzata senza dover chiedere a Sarah di ripetere le informazioni che ha già condiviso nelle chat precedenti.
# 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}")
Questo approccio integrato consente all'agente di mantenere un contesto ricco tra le sessioni, riconoscere i clienti abituali, richiamare dettagli importanti e fornire esperienze personalizzate senza interruzioni, con conseguente assistenza clienti più rapida, naturale ed efficace.