View a markdown version of this page

Self-managed estratégia - Amazon Bedrock AgentCore

Self-managed estratégia

Uma estratégia autogerenciada na Amazon Bedrock AgentCore Memory oferece controle total sobre seus pipelines de extração e consolidação de memória. Com uma estratégia autogerenciada, você pode criar fluxos de trabalho personalizados de processamento de memória enquanto aproveita o Amazon AgentCore Bedrock para armazenamento e recuperação.

Uma estratégia autogerenciada, combinada com as operações em lote (BatchCreateMemoryRecords,, BatchDeleteMemoryRecords) BatchUpdateMemoryRecords, permite que você ingira diretamente esses registros extraídos na AgentCore memória do Amazon Bedrock para recursos de pesquisa.

Com estratégias autogerenciadas, você pode:

  • Controle a invocação do pipeline por meio de acionadores configuráveis

  • Integre com sistemas de processamento externos

  • Implemente algoritmos personalizados de extração e consolidação

  • Invoque qualquer modelo preferido para extração e consolidação

  • Defina esquemas de registro de memória personalizados, namespaces e assim por diante.

  • Ingira registros extraídos na memória de longo prazo do Amazon Bedrock AgentCore

Crie e use uma estratégia autogerenciada

Self-managed as estratégias seguem um processo de cinco etapas, desde a configuração do gatilho até o armazenamento de registros de memória.

  1. Configure gatilhos: defina condições de gatilho (contagem de mensagens, tempo limite de inatividade, contagem de tokens) que invocam seu pipeline com base em eventos de memória de curto prazo

  2. Receba notificações e entrega de carga útil: o Amazon Bedrock AgentCore publica notificações para seu tópico do SNS e entrega dados de conversas para seu bucket do S3 quando as condições de gatilho são atendidas

  3. Extraia registros de memória: seu pipeline personalizado recupera a carga útil e aplica a lógica de extração para identificar memórias relevantes

  4. Consolide registros de memória: processe as memórias extraídas para remover duplicatas e resolver conflitos com registros existentes

  5. Armazene registros de memória: use APIs em lote para armazenar registros de memória processados na memória de longo prazo do Amazon Bedrock AgentCore

Pré-requisitos

Antes de configurar estratégias autogerenciadas, verifique se você tem:

  • Uma AWS conta com as permissões apropriadas

  • Acesso ao Amazon Bedrock AgentCore

  • Compreensão básica do AWS IAM, Amazon S3 e Amazon SNS

Configurar a infraestrutura

Crie os AWS recursos necessários, incluindo bucket do S3, tópico do SNS e função do IAM, que o Amazon Bedrock AgentCore precisa para acessar seus recursos.

Etapa 1: criar um bucket do S3

Crie um bucket S3 em sua conta onde o Amazon Bedrock AgentCore entregará cargas de eventos em lote.

Importante

Configure uma política de ciclo de vida para excluir objetos automaticamente após o processamento para controlar os custos.

Etapa 2: criar um tópico do SNS

Crie um tópico do SNS para notificações de trabalho. Use tópicos do FIFO se o processamento do pedido dentro das sessões for importante para seu caso de uso.

Etapa 3: criar um perfil do IAM

Crie uma função do IAM que o Amazon Bedrock AgentCore possa assumir para acessar seus recursos.

Política de confiança

Use a seguinte política de confiança:

{ "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 permissões

Use a seguinte política de permissões:

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

Permissões adicionais do KMS (se estiver usando recursos criptografados)

Se você usa recursos criptografados, adicione as seguintes permissões do KMS:

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

Crie uma estratégia autogerenciada

Use as APIs do plano AgentCore de controle do Amazon Bedrock para criar ou atualizar uma AgentCore memória com estratégias autogerenciadas.

Permissões obrigatórias

Seu usuário ou função do IAM precisa:

  • bedrock-agentcore: * permissões

  • iam:PassRolepermissão para a função de execução

Crie uma AgentCore memória com uma estratégia autogerenciada

Use a CreateMemory operação do AWS SDK para criar uma AgentCore memória que tenha uma estratégia autogerenciada.

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

Entendendo a entrega de carga útil

Quando as condições de gatilho são atendidas, o Amazon Bedrock AgentCore envia notificações e cargas usando esquemas específicos.

Mensagem de notificação do SNS

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

Estrutura de carga útil 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": "{}", } ] }

Crie seu funil personalizado

Esta seção demonstra uma abordagem para criar um pipeline de processamento de memória autogerenciado usando AWS Lambda e SQS. Esse é apenas um exemplo: você pode implementar seu pipeline usando qualquer plataforma de computação (EC2, ECS, Fargate), lógica e estrutura de processamento que atenda às suas necessidades.

Etapa 1: configurar a computação

  1. Crie uma fila SQS e inscreva-a em seu tópico do SNS

  2. Crie uma função AWS Lambda para processar notificações

  3. Configurar as permissões do perfil de execução do Lambda

Etapa 2: Processar o pipeline

O exemplo de pipeline a seguir consiste em quatro componentes principais:

  1. Manipulação de notificações - Processamento de notificações do SNS e download de cargas do S3

  2. Extração de memória - Usando modelos básicos para extrair informações relevantes das conversas

  3. Consolidação de memória - desduplicação e fusão de memórias extraídas com registros existentes

  4. Ingestão em lote - Armazenando memórias processadas de volta no Amazon Bedrock AgentCore usando APIs em lote

Teste sua implementação

  1. Crie eventos: use as AgentCore APIs do Amazon Bedrock para criar eventos de conversação () CreateEvent

  2. Monitore notificações: verifique se o tópico do SNS recebe notificações quando os gatilhos são atendidos

  3. Valide o processamento: verifique se sua função Lambda processa cargas corretamente e extrai registros de memória

  4. Verifique a ingestão: use list-memory-records para confirmar se as memórias extraídas estão armazenadas

Exemplo: criação de eventos de teste

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

Exemplo: Recuperação de registros de memória

# 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áticas recomendadas

Siga essas melhores práticas para desempenho, confiabilidade, otimização de custos e segurança ao implementar estratégias autogerenciadas.

Desempenho e confiabilidade

  • Compartilhamento de SLA: o SLA de geração de registros de Long-term memória é compartilhado entre o Amazon Bedrock AgentCore e seu pipeline autogerenciado

  • Tratamento de erros: implemente a lógica de repetição adequada e as filas de letras mortas para falhas no processamento

  • Monitoramento: configure CloudWatch registros, métricas, alarmes para falhas e latência de depuração e processamento. Além disso, verifique os registros vendidos do Amazon Bedrock em AgentCore busca de falhas na entrega da carga útil

Otimização de custos

  • Políticas de ciclo de vida do S3: configure a exclusão automática de cargas processadas para controlar os custos de armazenamento

  • Right-sizing: escolha as configurações apropriadas de memória e tempo limite de computação com base em seus requisitos de processamento

Considerações sobre o processamento

  • Otimização do gatilho: configure as condições do gatilho com base nos requisitos do seu caso de uso - equilibre a eficiência do processamento e a atualização da memória considerando a tolerância do seu aplicativo à latência versus os custos de processamento.

  • Tópicos do FIFO: use tópicos do FIFO SNS quando a ordenação da sessão for essencial (por exemplo, para fluxos de trabalho de resumo)

  • Consolidação de memória: implemente a lógica de desduplicação para evitar o armazenamento de registros de memória redundantes ou conflitantes, o que reduz os custos de armazenamento e melhora a precisão da recuperação

  • Organização do registro de memória: sempre inclua namespaces e IDs de estratégia significativos ao ingerir registros para permitir a categorização, filtragem e recuperação eficientes dos registros de memória

Segurança

  • Privilégio mínimo: conceda permissões mínimas necessárias para todas as funções do IAM

  • Criptografia: use a criptografia KMS para buckets do S3 e tópicos do SNS contendo dados confidenciais