View a markdown version of this page

Skenario: Agen AI dukungan pelanggan menggunakan AgentCore Memori - Batuan Dasar Amazon AgentCore

Skenario: Agen AI dukungan pelanggan menggunakan AgentCore Memori

Di bagian ini Anda mempelajari cara membangun agen AI dukungan pelanggan yang menggunakan AgentCore Memori untuk memberikan bantuan yang dipersonalisasi dengan mempertahankan riwayat percakapan dan mengekstraksi wawasan jangka panjang tentang preferensi pengguna. Topik ini mencakup contoh kode untuk AgentCore CLI dan SDK AWS .

Pertimbangkan pelanggan, Sarah, yang terlibat dengan agen AI dukungan situs web belanja Anda untuk menanyakan tentang pesanan yang tertunda. Aliran interaksi melalui API AgentCore Memori akan terlihat seperti ini:

Memori AgentCore Memori

Langkah 1: Buat AgentCore Memori

Pertama, Anda membuat sumber daya memori dengan kemampuan memori jangka pendek dan jangka panjang, mengonfigurasi strategi untuk informasi jangka panjang apa yang akan diekstrak.

contoh
AgentCore CLI
  1. Buat memori dengan strategi semantik:

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

    AgentCore CLI menyediakan manajemen sumber daya memori. Untuk operasi acara (membuat acara, mencantumkan acara, dll.), Gunakan AWS Python SDK (Boto3) atau SDK. AWS

Interactive
  1. Jalankan agentcore untuk membuka TUI, lalu pilih tambah dan pilih Memori:

  2. Pilih strategi Semantik:

    Panduan memori: pilih strategi SEMANTIK
  3. Tinjau konfigurasi dan tekan Enter untuk mengonfirmasi:

    Panduan memori: tinjau konfigurasi
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)

Langkah 2: Mulai sesi

Ketika Sarah memulai percakapan, agen membuat ID sesi baru dan unik untuk melacak interaksi ini secara terpisah.

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

Langkah 3: Tangkap riwayat percakapan

Saat Sarah menjelaskan masalahnya, agen menangkap setiap giliran percakapan (baik pertanyaannya maupun tanggapan agen). Ini mengisi percakapan penuh dalam memori jangka pendek dan menyediakan data mentah untuk strategi memori jangka panjang untuk diproses.

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

Langkah 4: Hasilkan memori jangka panjang

Di latar belakang, proses ekstraksi asinkron berjalan. Proses ini menganalisis peristiwa mentah terbaru menggunakan strategi memori yang dikonfigurasi untuk mengekstrak memori jangka panjang seperti ringkasan, fakta semantik, atau preferensi pengguna, yang kemudian disimpan untuk penggunaan masa depan.

Langkah 5: Ambil interaksi masa lalu dari memori jangka pendek

Untuk memberikan bantuan sadar konteks, agen memuat riwayat percakapan saat ini. Ini membantu agen memahami masalah apa yang diangkat Sarah dalam obrolan yang sedang berlangsung.

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)

Langkah 6: Gunakan memori jangka panjang untuk bantuan yang dipersonalisasi

Agen melakukan pencarian semantik di seluruh ingatan jangka panjang yang diekstraksi untuk menemukan wawasan yang relevan tentang preferensi Sarah, riwayat pesanan, atau masalah masa lalu. Ini memungkinkan agen memberikan bantuan yang sangat personal tanpa perlu meminta Sarah untuk mengulangi informasi yang telah dia bagikan di obrolan sebelumnya.

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

Pendekatan terintegrasi ini memungkinkan agen mempertahankan konteks yang kaya di seluruh sesi, mengenali pelanggan yang kembali, mengingat detail penting, dan memberikan pengalaman yang dipersonalisasi dengan mulus, menghasilkan dukungan pelanggan yang lebih cepat, lebih alami, dan efektif.