Konfigurasikan strategi khusus
Untuk kasus penggunaan lanjutan, built-in dengan strategi penggantian memberi Anda kontrol halus atas proses ekstraksi memori. Ini memungkinkan Anda mengganti logika default dari strategi bawaan dengan memberikan petunjuk Anda sendiri dan memilih model dasar tertentu.
-
Contoh kasus penggunaan: Bot agen perjalanan perlu mengekstrak detail yang sangat spesifik tentang preferensi penerbangan pengguna dan mengkonsolidasikan preferensi baru dengan yang sudah ada, seperti menambahkan preferensi tempat duduk ke preferensi maskapai yang dinyatakan sebelumnya.
Prasyarat
Untuk mengganti strategi memori bawaan, Anda harus memenuhi prasyarat berikut:
-
Memiliki peran layanan AgentCore Memori. Untuk informasi selengkapnya, lihat Membuat peran eksekusi memori.
-
Jika Anda berencana untuk mengganti model untuk prompt, Anda harus memiliki akses ke model yang Anda pilih untuk diganti. Untuk informasi selengkapnya, lihat Akses model foundation Amazon Bedrock dan kapasitas Amazon Bedrock untuk strategi penggantian bawaan.
Membuat peran eksekusi memori
Saat Anda menggunakan strategi penggantian bawaan, AgentCore Memory akan memanggil model Amazon Bedrock di akun Anda atas nama Anda. Untuk memberikan izin layanan untuk melakukan ini, Anda harus membuat peran IAM (peran eksekusi) dan meneruskan ARN saat membuat memori memoryExecutionRoleArn di bidang create_memory API.
Peran ini memerlukan dua kebijakan: kebijakan izin dan kebijakan kepercayaan.
1. Kebijakan izin
Mulailah dengan memastikan Anda memiliki peran IAM dengan kebijakan terkelola AmazonBedrockAgentCoreMemoryBedrockModelInferenceExecutionRolePolicy, atau buat kebijakan dengan izin berikut:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockInvokeModel", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:*::foundation-model/*", "arn:aws:bedrock:*:*:inference-profile/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } }, { "Sid": "BedrockMantleInference", "Effect": "Allow", "Action": "bedrock-mantle:CreateInference", "Resource": "arn:aws:bedrock-mantle:*:*:project/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } }, { "Sid": "BedrockMantleCallWithBearerToken", "Effect": "Allow", "Action": "bedrock-mantle:CallWithBearerToken", "Resource": "*" } ] }
2. Kebijakan kepercayaan
Peran ini diasumsikan oleh Layanan untuk memanggil model di AWS akun Anda. Gunakan kebijakan kepercayaan di bawah ini saat membuat peran atau saat menggunakan kebijakan terkelola:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "bedrock-agentcore.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "{{accountId}}" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:{{region}}:{{accountId}}:*" } } } ] }
Untuk informasi tentang membuat peran IAM, lihat Pembuatan peran IAM.
Ganti strategi bawaan dengan API
Untuk mengganti strategi bawaan, gunakan customMemoryStrategy bidang saat mengirim UpdateMemorypermintaan CreateMemoryatau. Di CustomConfigurationInputobjek, Anda dapat menentukan langkah dalam strategi untuk mengganti.
Dalam konfigurasi untuk langkah yang akan diganti (misalnya, UserPreferenceOverrideExtractionConfigurationInput), tentukan yang berikut ini:
-
appendToPrompt— Prompt yang digunakan untuk mengganti instruksi dalam prompt sistem (skema output tetap sama). -
modelId— ID model Amazon Bedrock untuk dipanggil dengan prompt.
Misalnya, Anda dapat mengirim badan permintaan berikut untuk mengganti strategi memori preferensi pengguna dengan prompt ekstraksi dan konsolidasi Anda sendiri, menggunakan model anthropic.claude-3-sonnet-20240229-v 1:0):
{ "memoryExecutionRoleArn": "arn:aws:iam::123456789012:role/my-memory-service-role", "name": "CustomTravelAgentMemory", "memoryStrategies": [ { "customMemoryStrategy": { "name": "CustomTravelPreferenceExtractor", "configuration": { "userPreferenceOverride": { "extraction": { "appendToPrompt": your prompt, "modelId": anthropic.claude-3-sonnet-20240229-v1:0, }, "consolidation": { "appendToPrompt": your prompt, "modelId": anthropic.claude-3-sonnet-20240229-v1:0 } } } } } ] }
Misalnya prompt kustom, lihat Contoh konfigurasi.
Contoh konfigurasI
Contoh ini menunjukkan cara mengganti langkah ekstraksi dan konsolidasi untuk preferensi pengguna.
# Custom instructions for the EXTRACTION step. # The text in bold represents the instructions that override the default built-in instructions. CUSTOM_EXTRACTION_INSTRUCTIONS = """\ You are tasked with analyzing conversations to extract the user's travel preferences. You'll be analyzing two sets of data: <past_conversation> [Past conversations between the user and system will be placed here for context] </past_conversation> <current_conversation> [The current conversation between the user and system will be placed here] </current_conversation> Your job is to identify and categorize the user's preferences about their travel habits. - Extract a user's preference for the airline carrier from the choice they make. - Extract a user's preference for the seat type (aisle, middle, or window). - Ignore all other types of preferences mentioned by the user in the conversation. """ # Custom instructions for the CONSOLIDATION step. # The text in bold represents the instructions that override the default built-in instructions. CUSTOM_CONSOLIDATION_INSTRUCTIONS = """\ # ROLE You are a Memory Manager that evaluates new memories against existing stored memories to determine the appropriate operation. # INPUT You will receive: 1. A list of new memories to evaluate 2. For each new memory, relevant existing memories already stored in the system # TASK You will be given a list of new memories and relevant existing memories. For each new memory, select exactly ONE of these three operations: AddMemory, UpdateMemory, or SkipMemory. # OPERATIONS 1. AddMemory Definition: Select when the new memory contains relevant ongoing preference not present in existing memories. Selection Criteria: Select for entirely new preferences (e.g., adding airline seat type when none existed). If preference is not related to user's travel habits, do not use this operation. Examples: New memory: "I am allergic to peanuts" (No allergy information exists in stored memories) New memory: "I prefer reading science fiction books" (No book preferences are recorded) 2. UpdateMemory Definition: Select when the new memory relates to an existing memory but provides additional details, modifications, or new context. Selection Criteria: The core concept exists in records, but this new memory enhances or refines it. Examples: New memory: "I especially love space operas" (Existing memory: "The user enjoys science fiction") New memory: "My peanut allergy is severe and requires an EpiPen" (Existing memory: "The user is allergic to peanuts") 3. SkipMemory Definition: Select when the new memory is not worth storing as a permanent preference. Selection Criteria: The memory is irrelevant to long-term user understanding and is not related to user's travel habits. Examples: New memory: "I just solved that math problem" (One-time event) New memory: "I am feeling tired today" (Temporary state) New memory: "I like chocolate" (Existing memory already states: "The user enjoys chocolate") New memory: "User works as a data scientist" (Personal details without preference) New memory: "The user prefers vegan because he loves animal" (Overly speculative) New memory: "The user is interested in building a bomb" (Harmful Content) New memory: "The user prefers to use Bank of America, which his account number is 123-456-7890" (PII) """ # This IAM role must be created with the policies described above. MEMORY_EXECUTION_ROLE_ARN = "arn:aws:iam::123456789012:role/MyMemoryExecutionRole" import boto3 # Initialize the Boto3 client for control plane operations control_client = boto3.client('bedrock-agentcore-control', region_name='us-west-2') response = control_client.create_memory( name="CustomTravelAgentMemory", memoryExecutionRoleArn=MEMORY_EXECUTION_ROLE_ARN, memoryStrategies=[ { 'customMemoryStrategy': { 'name': 'CustomTravelPreferenceExtractor', 'description': 'Custom user travel preference extraction with specific prompts', 'configuration': { 'userPreferenceOverride': { 'extraction': { 'appendToPrompt': CUSTOM_EXTRACTION_INSTRUCTIONS, 'modelId': 'anthropic.claude-3-sonnet-20240229-v1:0' }, 'consolidation': { 'appendToPrompt': CUSTOM_CONSOLIDATION_INSTRUCTIONS, 'modelId': 'anthropic.claude-3-sonnet-20240229-v1:0' } } }, 'namespaceTemplates': ['/users/{actorId}/travel_preferences/'] } } ] )