View a markdown version of this page

Szenario: Ein KI-Agent für den Kundensupport, der AgentCore Memory verwendet - Amazon Grundgestein AgentCore

Szenario: Ein KI-Agent für den Kundensupport, der AgentCore Memory verwendet

In diesem Abschnitt erfahren Sie, wie Sie einen KI-Agenten für den Kundensupport einrichten, der AgentCore Memory verwendet, um personalisierte Unterstützung zu bieten, indem er den Konversationsverlauf verwaltet und langfristige Erkenntnisse über Benutzerpräferenzen gewinnt. Das Thema enthält Codebeispiele für die AgentCore CLI und das AWS SDK.

Stellen Sie sich eine Kundin namens Sarah vor, die sich beim KI-Supportmitarbeiter Ihrer Shopping-Website nach einer verspäteten Bestellung erkundigt. Der Interaktionsfluss durch die AgentCore Memory-APIs würde wie folgt aussehen:

Speicher AgentCore Speicher

Schritt 1: Erstellen Sie einen AgentCore Speicher

Zunächst erstellen Sie eine Speicherressource mit Funktionen für Kurzzeit- und Langzeitgedächtnis und konfigurieren die Strategien, welche Langzeitinformationen extrahiert werden sollen.

Beispiel
AgentCore CLI
  1. Erstellen Sie Speicher mit einer semantischen Strategie:

    agentcore add memory --name CustomerSupportSemantic --strategies SEMANTIC agentcore deploy
    Anmerkung

    Die AgentCore CLI ermöglicht die Verwaltung von Speicherressourcen. Verwenden Sie für Ereignisoperationen (Ereignisse erstellen, Ereignisse auflisten usw.) das AWS Python-SDK (Boto3) oder AWS das SDK.

Interactive
  1. Führen Sie den Befehl aus, agentcore um die Benutzeroberfläche zu öffnen, wählen Sie dann Hinzufügen und anschließend Speicher aus:

  2. Wählen Sie die semantische Strategie aus:

    Speicherassistent: Wählen Sie die SEMANTIC-Strategie
  3. Überprüfen Sie die Konfiguration und drücken Sie die Eingabetaste, um Folgendes zu bestätigen:

    Speicherassistent: Konfiguration überprüfen
AWS SDK
  1. import boto3 import time from datetime import datetime # Initialize the Boto3 clients for control plane and data plane operations control_client = boto3.client('bedrock-agentcore-control') data_client = boto3.client('bedrock-agentcore') print("Creating a new memory resource...") # Create the memory resource with defined strategies response = control_client.create_memory( name="ShoppingSupportAgentMemory", description="Memory for a customer support agent.", memoryStrategies=[ { 'summaryMemoryStrategy': { 'name': 'SessionSummarizer', 'namespaceTemplates': ['/summaries/{actorId}/{sessionId}/'] } }, { 'userPreferenceMemoryStrategy': { 'name': 'UserPreferenceExtractor', 'namespaceTemplates': ['/users/{actorId}/preferences/'] } } ] ) memory_id = response['memory']['id'] print(f"Memory resource created with ID: {memory_id}") # Poll the memory status until it becomes ACTIVE while True: mem_status_response = control_client.get_memory(memoryId=memory_id) status = mem_status_response.get('memory', {}).get('status') if status == 'ACTIVE': print("Memory resource is now ACTIVE.") break elif status == 'FAILED': raise Exception("Memory resource creation FAILED.") print("Waiting for memory to become active...") time.sleep(10)

Schritt 2: Starten Sie die Sitzung

Wenn Sarah die Konversation initiiert, erstellt der Agent eine neue und eindeutige Sitzungs-ID, um diese Interaktion separat zu verfolgen.

# 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}")

Schritt 3: Erfassen Sie den Konversationsverlauf

Während Sarah ihr Problem erklärt, zeichnet der Agent jede Runde der Konversation auf (sowohl ihre Fragen als auch die Antworten des Agenten). Dadurch wird die gesamte Konversation im Kurzzeitgedächtnis gespeichert und die Rohdaten für die Verarbeitung der Langzeitgedächtnisstrategien bereitgestellt.

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.")

Schritt 4: Generieren Sie das Langzeitgedächtnis

Im Hintergrund läuft der asynchrone Extraktionsprozess. Dieser Prozess analysiert die jüngsten Rohereignisse mithilfe Ihrer konfigurierten Speicherstrategien, um Langzeiterinnerungen wie Zusammenfassungen, semantische Fakten oder Benutzerpräferenzen zu extrahieren, die dann für die future Verwendung gespeichert werden.

Schritt 5: Rufen Sie vergangene Interaktionen aus dem Kurzzeitgedächtnis ab

Um kontextsensitive Unterstützung zu bieten, lädt der Agent den aktuellen Konversationsverlauf. Dies hilft dem Agenten zu verstehen, welche Probleme Sarah im laufenden Chat angesprochen hat.

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)

Schritt 6: Nutzen Sie Langzeiterinnerungen für persönliche Unterstützung

Der Agent führt eine semantische Suche in den extrahierten Langzeiterinnerungen durch, um relevante Erkenntnisse über Sarahs Vorlieben, Bestellhistorie oder frühere Anliegen zu finden. Auf diese Weise kann der Agent hochgradig personalisierte Unterstützung bieten, ohne Sarah bitten zu müssen, Informationen zu wiederholen, die sie bereits in früheren Chats geteilt hat.

# 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}")

Dieser integrierte Ansatz ermöglicht es dem Agenten, während der gesamten Sitzung einen umfassenden Kontext beizubehalten, wiederkehrende Kunden zu erkennen, sich an wichtige Details zu erinnern und personalisierte Erlebnisse nahtlos bereitzustellen, was zu einem schnelleren, natürlicheren und effektiveren Kundensupport führt.