View a markdown version of this page

Configurar una estrategia personalizada - Base amazónica AgentCore

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar una estrategia personalizada

Para los casos de uso avanzados, las estrategias de anulación integradas le brindan un control detallado sobre el proceso de extracción de memoria. Esto le permite anular la lógica predeterminada de una estrategia integrada al proporcionar sus propias instrucciones y seleccionar un modelo básico específico.

  • Ejemplo de caso práctico: un robot de una agencia de viajes debe extraer detalles muy específicos sobre las preferencias de vuelo de un usuario y consolidar las nuevas preferencias con las existentes, como añadir una preferencia de asiento a una preferencia de aerolínea previamente establecida.

Requisitos previos

Para anular una estrategia de memoria integrada, debes cumplir los siguientes requisitos previos:

Creación de la función de ejecución de memoria

Cuando utiliza una estrategia integrada con anulaciones, AgentCore Memory invoca un modelo de Amazon Bedrock en su cuenta en su nombre. Para conceder al servicio permiso para hacerlo, debe crear un rol de IAM (un rol de ejecución) y pasar su ARN al crear la memoria en memoryExecutionRoleArn el campo de la API. create_memory

Este rol requiere dos políticas: una política de permisos y una política de confianza.

1. Política de permisos

Empieza por asegurarte de que tienes una función de IAM en la política AmazonBedrockAgentCoreMemoryBedrockModelInferenceExecutionRolePolicy gestionada o crea una política con los siguientes permisos:

{ "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. Política de confianza

El Servicio asume esta función para llamar al modelo de tu AWS cuenta. Use la política de confianza que se indica a continuación al crear el rol o al usar la política administrada:

{ "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}}:*" } } } ] }

Para obtener información sobre la creación de un rol de IAM, consulte Creación de roles de IAM.

Anule una estrategia integrada con la API

Para anular una estrategia integrada, usa el customMemoryStrategy campo al enviar una solicitud CreateMemory o UpdateMemory. En el CustomConfigurationInput objeto, puedes especificar el paso de la estrategia que deseas anular.

En la configuración del paso que se va a anular (por ejemplo, UserPreferenceOverrideExtractionConfigurationInput), especifique lo siguiente:

  • appendToPrompt— La línea de comandos por la que se van a reemplazar las instrucciones de la línea de comandos del sistema (el esquema de salida sigue siendo el mismo).

  • modelId— El ID del modelo de Amazon Bedrock que se va a invocar con la solicitud.

Por ejemplo, puede enviar el siguiente cuerpo de la solicitud para anular la estrategia de memoria de preferencias del usuario con sus propias instrucciones de extracción y consolidación (utilizando el modelo antropic.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 } } } } } ] }

Para ver ejemplos de solicitudes personalizadas, consulte Ejemplo de configuración.

Ejemplo de configuración

En este ejemplo se muestra cómo anular los pasos de extracción y consolidación en función de las preferencias del usuario.

# 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/'] } } ] )