View a markdown version of this page

Self-managed strategia - Amazon Bedrock AgentCore

Self-managed strategia

Una strategia autogestita in Amazon Bedrock AgentCore Memory ti offre il controllo completo sulle pipeline di estrazione e consolidamento della memoria. Con una strategia autogestita, puoi creare flussi di lavoro di elaborazione della memoria personalizzati sfruttando Amazon AgentCore Bedrock per l'archiviazione e il recupero.

Una strategia autogestita in combinazione con le operazioni in batch (BatchCreateMemoryRecords,, BatchDeleteMemoryRecords) BatchUpdateMemoryRecords, ti consente di importare direttamente questi record estratti nella AgentCore memoria Amazon Bedrock per funzionalità di ricerca.

Con strategie autogestite, puoi:

  • Controlla l'invocazione della pipeline tramite trigger configurabili

  • Integrazione con sistemi di elaborazione esterni

  • Implementa algoritmi di estrazione e consolidamento personalizzati

  • Richiama qualsiasi modello preferito per l'estrazione e il consolidamento

  • Definisci schemi di record di memoria personalizzati, namespace e così via.

  • Inserisci i record estratti nella memoria a lungo termine di Amazon Bedrock AgentCore

Crea e utilizza una strategia autogestita

Self-managed le strategie seguono un processo in cinque fasi, dalla configurazione del trigger all'archiviazione dei record di memoria.

  1. Configura i trigger: definisci le condizioni di attivazione (numero di messaggi, timeout di inattività, numero di token) che richiamano la pipeline in base a eventi di memoria a breve termine

  2. Ricevi notifiche e consegna del payload: Amazon Bedrock AgentCore pubblica notifiche sul tuo argomento SNS e fornisce i dati di conversazione al tuo bucket S3 quando vengono soddisfatte le condizioni di attivazione

  3. Estrai i record di memoria: la tua pipeline personalizzata recupera il payload e applica la logica di estrazione per identificare le memorie pertinenti

  4. Consolida i record di memoria: elabora le memorie estratte per rimuovere i duplicati e risolvere i conflitti con i record esistenti

  5. Archivia i record di memoria: utilizza le API batch per archiviare i record di memoria elaborati nella memoria a lungo termine di Amazon Bedrock AgentCore

Prerequisiti

Prima di configurare strategie autogestite, verifica di avere:

  • Un AWS account con le autorizzazioni appropriate

  • Accesso ad Amazon Bedrock AgentCore

  • Conoscenze di base di AWS IAM, Amazon S3 e Amazon SNS

Configura l'infrastruttura

Crea le AWS risorse necessarie, tra cui il bucket S3, l'argomento SNS e il ruolo IAM, di cui Amazon Bedrock AgentCore ha bisogno per accedere alle tue risorse.

Fase 1: Creazione di un bucket S3

Crea un bucket S3 nel tuo account in cui Amazon Bedrock AgentCore distribuirà payload di eventi in batch.

Importante

Configura una politica del ciclo di vita per eliminare automaticamente gli oggetti dopo l'elaborazione per controllare i costi.

Fase 2: Creare un argomento SNS

Crea un argomento SNS per le notifiche di lavoro. Utilizza gli argomenti FIFO se l'ordine di elaborazione all'interno delle sessioni è importante per il tuo caso d'uso.

Fase 3: Creare un ruolo IAM

Crea un ruolo IAM che Amazon Bedrock AgentCore possa assumere per accedere alle tue risorse.

Policy di trust

Utilizza la seguente politica di fiducia:

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

Policy delle autorizzazioni

Utilizza la seguente politica di autorizzazioni:

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

Autorizzazioni KMS aggiuntive (se si utilizzano risorse crittografate)

Se utilizzi risorse crittografate, aggiungi le seguenti autorizzazioni KMS:

{ "Sid": "KMSPermissions", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/your-key-id" }

Crea una strategia autogestita

Usa le API del piano di AgentCore controllo di Amazon Bedrock per creare o aggiornare una AgentCore memoria con strategie autogestite.

Autorizzazioni richieste

Il tuo utente o ruolo IAM ha bisogno di:

  • bedrock-agentcore: * permessi

  • iam:PassRoleautorizzazione per il ruolo di esecuzione

Crea una AgentCore memoria con una strategia autogestita

Utilizza l'CreateMemoryoperazione AWS SDK per creare una AgentCore memoria con una strategia autogestita.

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" } } } } } ]'

Comprendere la distribuzione del payload

Quando vengono soddisfatte le condizioni di attivazione, Amazon Bedrock AgentCore invia notifiche e payload utilizzando schemi specifici.

Messaggio di notifica SNS

{ "jobId": "unique-job-identifier", "s3PayloadLocation": "s3://bucket/path/to/payload.json", "memoryId": "your-memory-id", "strategyId": "your-strategy-id" }

Struttura del payload 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": "{}", } ] }

Crea la tua pipeline personalizzata

Questa sezione illustra un approccio alla creazione di una pipeline di elaborazione della memoria autogestita utilizzando Lambda AWS e SQS. Questo è solo un esempio: puoi implementare la tua pipeline utilizzando qualsiasi piattaforma di calcolo (EC2, ECS, Fargate), logica e framework di elaborazione che soddisfi i tuoi requisiti.

Fase 1: Configurare l'elaborazione

  1. Crea una coda SQS e iscrivila al tuo argomento SNS

  2. Crea una funzione AWS Lambda per elaborare le notifiche

  3. Configurare le autorizzazioni del ruolo di esecuzione Lambda

Fase 2: Elaborazione della pipeline

La pipeline di esempio seguente è composta da quattro componenti principali:

  1. Gestione delle notifiche: elaborazione delle notifiche SNS e download dei payload S3

  2. Estrazione della memoria: utilizzo di modelli basici per estrarre informazioni pertinenti dalle conversazioni

  3. Consolidamento della memoria: deduplicazione e unione delle memorie estratte con i record esistenti

  4. Inserimento in batch: archiviazione delle memorie elaborate in Amazon Bedrock AgentCore utilizzando API batch

Testa la tua implementazione

  1. Crea eventi: usa le AgentCore API Amazon Bedrock per creare eventi di conversazione () CreateEvent

  2. Monitora le notifiche: verifica che il tuo argomento SNS riceva notifiche quando vengono soddisfatti i trigger

  3. Convalida l'elaborazione: verifica che la funzione Lambda elabda elabori correttamente i payload ed estragga i record di memoria

  4. Verifica l'ingestione: da utilizzare list-memory-records per confermare che le memorie estratte siano archiviate

Esempio: creazione di eventi di 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" } }]'

Esempio: recupero dei record di 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

Best practice

Segui queste best practice per prestazioni, affidabilità, ottimizzazione dei costi e sicurezza quando implementi strategie autogestite.

Prestazioni e affidabilità

  • Condivisione SLA: lo SLA per la generazione di record di Long-term memoria è condiviso tra Amazon Bedrock AgentCore e la tua pipeline autogestita

  • Gestione degli errori: implementa la logica di riprova e le code di lettere morte appropriate per l'elaborazione non riuscita

  • Monitoraggio: imposta CloudWatch registri, metriche, allarmi per il debug e gli errori di elaborazione e la latenza. Inoltre, controlla i log forniti da Amazon Bedrock AgentCore per eventuali errori di consegna del payload

Ottimizzazione dei costi

  • Politiche del ciclo di vita di S3: configura l'eliminazione automatica dei payload elaborati per controllare i costi di storage

  • Right-sizing: Scegliete le impostazioni di memoria di elaborazione e timeout appropriate in base ai requisiti di elaborazione

Considerazioni sull'elaborazione

  • Ottimizzazione dei trigger: configura le condizioni di attivazione in base ai requisiti del tuo caso d'uso: bilancia tra efficienza di elaborazione e freschezza della memoria considerando la tolleranza dell'applicazione per la latenza rispetto ai costi di elaborazione.

  • Argomenti FIFO: utilizza gli argomenti FIFO SNS quando l'ordine delle sessioni è fondamentale (ad esempio, per i flussi di lavoro di riepilogo)

  • Consolidamento della memoria: implementa la logica di deduplicazione per impedire l'archiviazione di record di memoria ridondanti o in conflitto, riducendo i costi di archiviazione e migliorando la precisione del recupero

  • Organizzazione dei record di memoria: includi sempre namespace e ID strategici significativi durante l'acquisizione dei record per consentire la categorizzazione, il filtraggio e il recupero efficienti dei record di memoria

Sicurezza

  • Privilegio minimo: concedi le autorizzazioni minime richieste a tutti i ruoli IAM

  • Crittografia: utilizza la crittografia KMS per i bucket S3 e gli argomenti SNS contenenti dati sensibili