Self-managed estrategia
La estrategia autogestionada de Amazon Bedrock AgentCore Memory le proporciona un control total sobre los procesos de extracción y consolidación de memoria. Con una estrategia autogestionada, puede crear flujos de trabajo de procesamiento de memoria personalizados y, al mismo tiempo, aprovechar Amazon Bedrock AgentCore para el almacenamiento y la recuperación.
Una estrategia autogestionada, en combinación con las operaciones por lotes (BatchCreateMemoryRecords,, BatchDeleteMemoryRecords) BatchUpdateMemoryRecords, le permite ingerir directamente estos registros extraídos en la AgentCore memoria de Amazon Bedrock para realizar funciones de búsqueda.
Con las estrategias autogestionadas, puede:
-
Controle la invocación de la canalización mediante activadores configurables
-
Intégrelo con sistemas de procesamiento externos
-
Implemente algoritmos personalizados de extracción y consolidación
-
Invoque cualquier modelo preferido para la extracción y la consolidación
-
Defina esquemas de registros de memoria personalizados, espacios de nombres, etc.
-
Ingiera los registros extraídos en la memoria a AgentCore largo plazo de Amazon Bedrock
Temas
Cree y utilice una estrategia autogestionada
Self-managed las estrategias siguen un proceso de cinco pasos, desde la configuración del disparador hasta el almacenamiento de los registros de memoria.
-
Configure los activadores: defina las condiciones de activación (recuento de mensajes, tiempo de espera de inactividad, recuento de tokens) que invocan su canalización en función de los eventos de memoria a corto plazo
-
Reciba notificaciones y entrega de carga útil: Amazon Bedrock AgentCore publica las notificaciones sobre su tema de SNS y envía los datos de la conversación a su bucket de S3 cuando se cumplen las condiciones de activación
-
Extraiga los registros de memoria: su canalización personalizada recupera la carga útil y aplica la lógica de extracción para identificar las memorias relevantes
-
Consolide los registros de memoria: procese las memorias extraídas para eliminar los duplicados y resolver los conflictos con los registros existentes
-
Almacene registros de memoria: utilice las API por lotes para volver a almacenar los registros de memoria procesados en la memoria a AgentCore largo plazo de Amazon Bedrock
Requisitos previos
Antes de configurar estrategias autogestionadas, compruebe que cuenta con lo siguiente:
-
Una AWS cuenta con los permisos adecuados
-
Acceso a Amazon Bedrock AgentCore
-
Conocimientos básicos de AWS IAM, Amazon S3 y Amazon SNS
Configuración de la infraestructura
Cree los AWS recursos necesarios, incluidos el bucket de S3, el tema de SNS y la función de IAM, que Amazon Bedrock AgentCore necesita para acceder a sus recursos.
Paso 1: crear un bucket de S3
Cree un depósito de S3 en su cuenta en el que Amazon Bedrock entregue las AgentCore cargas útiles de los eventos por lotes.
importante
Configure una política de ciclo de vida para eliminar automáticamente los objetos después del procesamiento a fin de controlar los costos.
Paso 2: Crear un tema de SNS
Crea un tema de SNS para las notificaciones de trabajo. Utilice los temas de FIFO si el procesamiento del orden dentro de las sesiones es importante para su caso de uso.
Paso 3: Crear un rol de IAM
Cree una función de IAM que Amazon Bedrock AgentCore pueda asumir para acceder a sus recursos.
Política de confianza
Utilice la siguiente política de confianza:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:<region>:<account-id>:memory/*" } } } ] }
Política de permisos
Utilice la siguiente política de permisos:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3PayloadDelivery", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::your-agentcore-payloads-bucket", "arn:aws:s3:::your-agentcore-payloads-bucket/*" ] }, { "Sid": "SNSNotifications", "Effect": "Allow", "Action": [ "sns:GetTopicAttributes", "sns:Publish" ], "Resource": "arn:aws:sns:us-east-1:123456789012:agentcore-memory-jobs" } ] }
Permisos de KMS adicionales (si se utilizan recursos cifrados)
Si utiliza recursos cifrados, añada los siguientes permisos de KMS:
{ "Sid": "KMSPermissions", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/your-key-id" }
Cree una estrategia autogestionada
Utilice las API del plano de AgentCore control de Amazon Bedrock para crear o actualizar una AgentCore memoria con estrategias autogestionadas.
Permisos necesarios
Su usuario o rol de IAM necesita:
-
bedrock-agentcore: * permisos
-
iam:PassRolepermiso para el rol de ejecución
Crea una AgentCore memoria con una estrategia autogestionada
Utilice la CreateMemory operación del AWS SDK para crear una AgentCore memoria que tenga una estrategia autogestionada.
aws bedrock-agentcore-control create-memory \ --name "MyCustomMemory" \ --description "Memory with self-managed extraction strategy" \ --memory-execution-role-arn "arn:aws:iam::123456789012:role/AgentCoreMemoryRole" \ --event-expiry-duration 90 \ --memory-strategies '[ { "customMemoryStrategy": { "name": "SelfManagedExtraction", "description": "Custom extraction strategy", "configuration": { "selfManagedConfiguration": { "triggerConditions": [ { "messageBasedTrigger": { "messageCount": 6 } }, { "tokenBasedTrigger": { "tokenCount": 1000 } }, { "timeBasedTrigger": { "idleSessionTimeout": 30 } } ], "historicalContextWindowSize": 2, "invocationConfiguration": { "payloadDeliveryBucketName": "your-agentcore-payloads-bucket", "topicArn": "arn:aws:sns:us-east-1:123456789012:agentcore-memory-jobs" } } } } } ]'
Entender la entrega de cargas útiles
Cuando se cumplen las condiciones de activación, Amazon Bedrock AgentCore envía notificaciones y cargas útiles mediante esquemas específicos.
Mensaje de notificación de SNS
{ "jobId": "unique-job-identifier", "s3PayloadLocation": "s3://bucket/path/to/payload.json", "memoryId": "your-memory-id", "strategyId": "your-strategy-id" }
Estructura de carga útil de S3
{ "requestId": "request-identifier", "accountId": "123456789012", "memoryId": "your-memory-id", "actorId": "user-or-agent-id", "sessionId": "conversation-session-id", "strategyId": "your-strategy-id", "startingTimestamp": 1634567890, "endingTimestamp": 1634567920, "currentContext": [ { "role": "USER", "content": { "text": "User message content" } }, { "role": "ASSISTANT", "content": { "text": "Assistant response" } } ], "historicalContext": [ { "role": "USER", "content": { "text": "User message content" } }, { "role": "ASSISTANT", "content": { "text": "Previous assistant response" } }, { "blob": "{}", } ] }
Cree su canalización personalizada
En esta sección se muestra un enfoque para crear una canalización de procesamiento de memoria autogestionada mediante AWS Lambda y SQS. Este es solo un ejemplo: puede implementar su canalización mediante cualquier plataforma informática (EC2, ECS, Fargate), marco lógico y de procesamiento que cumpla con sus requisitos.
Paso 1: Configurar la computación
-
Cree una cola de SQS y suscríbala a su tema de SNS
-
Crear una función AWS Lambda para procesar las notificaciones
-
Configure los permisos del rol de ejecución de Lambda
Paso 2: procesar la canalización
El siguiente ejemplo de canalización consta de cuatro componentes principales:
-
Gestión de notificaciones: procesamiento de notificaciones de SNS y descarga de cargas útiles de S3
-
Extracción de memoria: uso de modelos básicos para extraer información relevante de las conversaciones
-
Consolidación de la memoria: deduplicación y fusión de las memorias extraídas con los registros existentes
-
Ingestión por lotes: almacenamiento de memorias procesadas de nuevo en Amazon Bedrock AgentCore mediante API por lotes
Pruebe su implementación
-
Crear eventos: utilice las AgentCore API de Amazon Bedrock para crear eventos de conversación ()
CreateEvent -
Supervise las notificaciones: compruebe que su tema de SNS reciba notificaciones cuando se cumplan los factores desencadenantes
-
Valide el procesamiento: compruebe que la función Lambda procese correctamente las cargas útiles y extraiga los registros de memoria
-
Verificar la ingesta: se utiliza
list-memory-recordspara confirmar que las memorias extraídas están almacenadas
Ejemplo: creación de eventos de prueba
aws bedrock-agentcore create-event \ --memory-id "your-memory-id" \ --actor-id "test-user" \ --session-id "test-session-1" \ --event-timestamp "2024-01-15T10:00:00Z" \ --payload '[{ "conversational": { "content": {"text": "I prefer Italian restaurants with outdoor seating"}, "role": "USER" } }]'
Ejemplo: recuperación de registros de memoria
# List records belonging to a specific namespace aws bedrock-agentcore list-memory-records \ --memory-id "your-memory-id" \ --namespace "/actor/Jane/" # lists all records present in the given namespace # List records belonging to a particular namespace hierarchy aws bedrock-agentcore list-memory-records \ --memory-id "your-memory-id" \ --namespace-path "/" # lists all records present under the namespace hierarchy
Prácticas recomendadas
Siga estas prácticas recomendadas para garantizar el rendimiento, la confiabilidad, la optimización de costos y la seguridad al implementar estrategias autogestionadas.
Rendimiento y fiabilidad
-
Uso compartido de SLA: el SLA de generación de registros de Long-term memoria se comparte entre Amazon Bedrock AgentCore y su canal autogestionado
-
Gestión de errores: Implemente una lógica de reintentos adecuada y colas de cartas muertas en caso de errores de procesamiento
-
Supervisión: configure CloudWatch registros, métricas y alarmas para depurar y procesar los errores y la latencia. Además, compruebe los registros vendidos de Amazon Bedrock AgentCore para ver si hay errores en la entrega de la carga útil
Optimización de costos
-
Políticas de ciclo de vida de S3: configure la eliminación automática de las cargas útiles procesadas para controlar los costos de almacenamiento
-
Right-sizing: Elija los ajustes de tiempo de espera y memoria de procesamiento adecuados en función de sus requisitos de procesamiento
Consideraciones de procesamiento
-
Optimización de los activadores: configure las condiciones de activación en función de los requisitos de su caso de uso: equilibre la eficiencia del procesamiento y la frescura de la memoria teniendo en cuenta la tolerancia de la aplicación a la latencia en comparación con los costos de procesamiento.
-
Temas de FIFO: utilice los temas de SNS de FIFO cuando el orden de las sesiones sea fundamental (por ejemplo, para los flujos de trabajo de resumen)
-
Consolidación de la memoria: implemente una lógica de deduplicación para evitar almacenar registros de memoria redundantes o conflictivos, lo que reduce los costos de almacenamiento y mejora la precisión de la recuperación
-
Organización de los registros de memoria: incluya siempre espacios de nombres e identificadores de estrategia significativos al ingerir registros para permitir la categorización, el filtrado y la recuperación eficientes de los registros de memoria
Seguridad
-
Privilegio mínimo: conceda los permisos mínimos necesarios a todas las funciones de IAM
-
Cifrado: utilice el cifrado KMS para los buckets de S3 y los temas de SNS que contengan datos confidenciales