Configuration d'une stratégie personnalisée
Pour les cas d'utilisation avancés, les stratégies de remplacement intégrées vous permettent de contrôler avec précision le processus d'extraction de mémoire. Cela vous permet de contourner la logique par défaut d'une stratégie intégrée en fournissant vos propres instructions et en sélectionnant un modèle de base spécifique.
-
Exemple de cas d'utilisation : un robot d'agence de voyages doit extraire des informations très spécifiques sur les préférences de vol d'un utilisateur et consolider les nouvelles préférences avec les préférences existantes, par exemple en ajoutant une préférence de siège à une préférence de compagnie aérienne précédemment indiquée.
Rubriques
Conditions préalables
Pour annuler une stratégie de mémoire intégrée, vous devez remplir les conditions préalables suivantes :
-
Possède un rôle de service de AgentCore mémoire. Pour plus d'informations, consultez la section Création du rôle d'exécution de la mémoire.
-
Si vous envisagez de remplacer le modèle pour l'invite, vous devez avoir accès au modèle que vous choisissez de remplacer. Pour plus d'informations, consultez les modèles Access Amazon Bedrock foundation et Amazon Bedrock Capacity pour les stratégies intégrées aux dérogations.
Création du rôle d'exécution de la mémoire
Lorsque vous utilisez une stratégie intégrée avec des dérogations, AgentCore Memory invoque un modèle Amazon Bedrock dans votre compte en votre nom. Pour accorder au service l'autorisation de le faire, vous devez créer un rôle IAM (rôle d'exécution) et transmettre son ARN lors de la création de la mémoire dans le memoryExecutionRoleArn champ de l'create_memoryAPI.
Ce rôle nécessite deux politiques : une politique d'autorisation et une politique de confiance.
1. Politique d’autorisations
Commencez par vérifier que vous disposez d'un rôle IAM dans la stratégie gérée AmazonBedrockAgentCoreMemoryBedrockModelInferenceExecutionRolePolicy, ou créez une politique avec les autorisations suivantes :
{ "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. Politique d’approbation
Ce rôle est assumé par le Service pour appeler le modèle de votre AWS compte. Utilisez la politique de confiance ci-dessous lors de la création du rôle ou lors de l'utilisation de la politique gérée :
{ "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}}:*" } } } ] }
Pour plus d'informations sur la création d'un rôle IAM, consultez la section Création d'un rôle IAM.
Remplacer une stratégie intégrée par l'API
Pour annuler une stratégie intégrée, utilisez le customMemoryStrategy champ lors de l'envoi d'une UpdateMemorydemande CreateMemoryou. Dans l'CustomConfigurationInputobjet, vous pouvez spécifier une étape de la stratégie à annuler.
Dans la configuration de l'étape à remplacer (par exemple, UserPreferenceOverrideExtractionConfigurationInput), spécifiez ce qui suit :
-
appendToPrompt— L'invite par laquelle remplacer les instructions de l'invite système (le schéma de sortie reste le même). -
modelId— L'ID du modèle Amazon Bedrock à invoquer à l'invite.
Par exemple, vous pouvez envoyer le corps de requête suivant pour remplacer la stratégie de mémoire des préférences de l'utilisateur par vos propres invites d'extraction et de consolidation, en utilisant le modèle 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 } } } } } ] }
Pour des instructions personnalisées, voir Exemple de configuration.
Exemple de configuration
Cet exemple montre comment remplacer à la fois les étapes d'extraction et de consolidation en fonction des préférences de l'utilisateur.
# 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/'] } } ] )