Self-managed stratégie
Une stratégie autogérée dans Amazon Bedrock AgentCore Memory vous permet de contrôler totalement vos pipelines d'extraction et de consolidation de la mémoire. Grâce à une stratégie autogérée, vous pouvez créer des flux de travail de traitement de mémoire personnalisés tout en tirant parti d'Amazon Bedrock AgentCore pour le stockage et la récupération.
Une stratégie autogérée associée aux opérations par lots (BatchCreateMemoryRecords, BatchUpdateMemoryRecords, BatchDeleteMemoryRecords) vous permet d'ingérer directement ces enregistrements extraits dans la AgentCore mémoire d'Amazon Bedrock pour les fonctionnalités de recherche.
Grâce aux stratégies autogérées, vous pouvez :
-
Contrôlez l'invocation du pipeline via des déclencheurs configurables
-
Intégration à des systèmes de traitement externes
-
Implémenter des algorithmes d'extraction et de consolidation personnalisés
-
Invoquez n'importe quel modèle préféré pour l'extraction et la consolidation
-
Définissez des schémas d'enregistrement de mémoire personnalisés, des espaces de noms, etc.
-
Ingérez les enregistrements extraits dans la mémoire à AgentCore long terme d'Amazon Bedrock
Rubriques
Créez et utilisez une stratégie autogérée
Self-managed les stratégies suivent un processus en cinq étapes, de la configuration du déclencheur au stockage des enregistrements en mémoire.
-
Configuration des déclencheurs : définissez les conditions de déclenchement (nombre de messages, délai d'inactivité, nombre de jetons) qui appellent votre pipeline en fonction d'événements de mémoire à court terme
-
Recevez des notifications et envoi de la charge utile : Amazon Bedrock AgentCore publie des notifications sur votre sujet SNS et transmet les données de conversation à votre compartiment S3 lorsque les conditions de déclenchement sont remplies
-
Extraire les enregistrements de mémoire : votre pipeline personnalisé récupère la charge utile et applique une logique d'extraction pour identifier les souvenirs pertinents
-
Consolidation des enregistrements en mémoire : traitez les mémoires extraites pour supprimer les doublons et résoudre les conflits avec les enregistrements existants
-
Stockage des enregistrements en mémoire : utilisez des API par lots pour stocker les enregistrements de mémoire traités dans la mémoire à AgentCore long terme d'Amazon Bedrock
Conditions préalables
Avant de configurer des stratégies autogérées, vérifiez que vous disposez des éléments suivants :
-
Un AWS compte avec les autorisations appropriées
-
Accès à Amazon Bedrock AgentCore
-
Compréhension de base d' AWS IAM, d'Amazon S3 et d'Amazon SNS
Configuration de l'infrastructure
Créez les AWS ressources requises, notamment le compartiment S3, le sujet SNS et le rôle IAM, dont Amazon Bedrock AgentCore a besoin pour accéder à vos ressources.
Étape 1 : créer un compartiment S3
Créez un compartiment S3 dans votre compte dans lequel Amazon Bedrock AgentCore fournira des charges utiles d'événements par lots.
Important
Configurez une politique de cycle de vie pour supprimer automatiquement les objets après leur traitement afin de contrôler les coûts.
Étape 2 : créer une rubrique SNS
Créez une rubrique SNS pour les notifications d'offres d'emploi. Utilisez les rubriques FIFO si le traitement des commandes au cours des sessions est important pour votre cas d'utilisation.
Étape 3 : Création d'un rôle IAM
Créez un rôle IAM qu'Amazon Bedrock AgentCore peut assumer pour accéder à vos ressources.
Politique d’approbation
Utilisez la politique de confiance suivante :
{ "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/*" } } } ] }
Politique d’autorisations
Utilisez la politique d'autorisation suivante :
{ "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" } ] }
Autorisations KMS supplémentaires (si vous utilisez des ressources chiffrées)
Si vous utilisez des ressources chiffrées, ajoutez les autorisations KMS suivantes :
{ "Sid": "KMSPermissions", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/your-key-id" }
Créez une stratégie autogérée
Utilisez les API du plan de AgentCore contrôle Amazon Bedrock pour créer ou mettre à jour une AgentCore mémoire avec des stratégies autogérées.
Autorisations requises
Votre utilisateur ou rôle IAM a besoin de :
-
bedrock-agentcore : * autorisations
-
iam:PassRoleautorisation pour le rôle d'exécution
Créez une AgentCore mémoire avec une stratégie autogérée
Utilisez l'CreateMemoryopération du AWS SDK pour créer une AgentCore mémoire dotée d'une stratégie autogérée.
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" } } } } } ]'
Comprendre la livraison de la charge utile
Lorsque les conditions de déclenchement sont remplies, Amazon Bedrock AgentCore envoie des notifications et des charges utiles à l'aide de schémas spécifiques.
Message de notification SNS
{ "jobId": "unique-job-identifier", "s3PayloadLocation": "s3://bucket/path/to/payload.json", "memoryId": "your-memory-id", "strategyId": "your-strategy-id" }
Structure de charge utile 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": "{}", } ] }
Créez votre pipeline personnalisé
Cette section présente une approche permettant de créer un pipeline de traitement de mémoire autogéré à l'aide de AWS Lambda et SQS. Ce n'est qu'un exemple : vous pouvez implémenter votre pipeline à l'aide de n'importe quelle plate-forme informatique (EC2, ECS, Fargate), de toute logique et de tout cadre de traitement répondant à vos exigences.
Étape 1 : configurer le calcul
-
Créez une file d'attente SQS et abonnez-la à votre rubrique SNS
-
Création d'une fonction AWS Lambda pour traiter les notifications
-
Configurer les autorisations du rôle d'exécution Lambda
Étape 2 : Traiter le pipeline
L'exemple de pipeline suivant comprend quatre composants principaux :
-
Gestion des notifications - Traitement des notifications SNS et téléchargement des charges utiles S3
-
Extraction de mémoire - Utilisation de modèles de base pour extraire des informations pertinentes des conversations
-
Consolidation de la mémoire - Déduplication et fusion des mémoires extraites avec des enregistrements existants
-
Ingestion par lots - Stockage des souvenirs traités dans Amazon Bedrock à AgentCore l'aide d'API par lots
Testez votre implémentation
-
Création d'événements : utilisez les AgentCore API Amazon Bedrock pour créer des événements de conversation ()
CreateEvent -
Surveiller les notifications : vérifiez que votre rubrique SNS reçoit des notifications lorsque les déclencheurs sont atteints
-
Valider le traitement : vérifiez que votre fonction Lambda traite correctement les charges utiles et extrait les enregistrements de mémoire
-
Vérifier l'ingestion :
list-memory-recordsà utiliser pour confirmer que les souvenirs extraits sont stockés
Exemple : création d'événements de test
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" } }]'
Exemple : récupération d'enregistrements en mémoire
# 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
Bonnes pratiques
Suivez ces meilleures pratiques en matière de performances, de fiabilité, d'optimisation des coûts et de sécurité lors de la mise en œuvre de stratégies autogérées.
Performances et fiabilité
-
Partage de SLA : le SLA de génération d'enregistrements de Long-term mémoire est partagé entre Amazon Bedrock AgentCore et votre pipeline autogéré
-
Gestion des erreurs : implémentez une logique de nouvelle tentative appropriée et des files d'attente lettres mortes en cas d'échec du traitement
-
Surveillance : configurez CloudWatch des journaux, des métriques, des alarmes en cas de débogage et de traitement des défaillances et des temps de latence. Vérifiez également les journaux vendus par Amazon Bedrock AgentCore pour détecter les échecs de livraison de la charge utile
Optimisation des coûts
-
Politiques de cycle de vie S3 : configurez la suppression automatique des charges utiles traitées pour contrôler les coûts de stockage
-
Right-sizing: Choisissez les paramètres de mémoire de calcul et de délai d'expiration appropriés en fonction de vos besoins de traitement
Considérations relatives au traitement
-
Optimisation des déclencheurs : configurez les conditions de déclenchement en fonction des exigences de votre cas d'utilisation : équilibrez l'efficacité du traitement et la fraîcheur de la mémoire en tenant compte de la tolérance de votre application en matière de latence par rapport aux coûts de traitement.
-
Sujets FIFO : utilisez les sujets FIFO SNS lorsque l'ordre des sessions est essentiel (par exemple, pour les flux de travail de synthèse)
-
Consolidation de la mémoire : mettez en œuvre une logique de déduplication pour empêcher le stockage d'enregistrements mémoire redondants ou contradictoires, ce qui réduit les coûts de stockage et améliore la précision de récupération
-
Organisation des enregistrements en mémoire : incluez toujours des espaces de noms et des identifiants de stratégie significatifs lors de l'ingestion d'enregistrements afin de permettre une catégorisation, un filtrage et une récupération efficaces des enregistrements en mémoire
Sécurité
-
Privilège minimal : accordez les autorisations minimales requises à tous les rôles IAM
-
Chiffrement : utilisez le chiffrement KMS pour les compartiments S3 et les rubriques SNS contenant des données sensibles