Solucione problemas de estados AWS Step Functions usando o Amazon Bedrock - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solucione problemas de estados AWS Step Functions usando o Amazon Bedrock

Aniket Kurzadkar e Sangam Kushwaha, Amazon Web Services

Resumo

AWS Step Functions os recursos de tratamento de erros podem ajudar você a ver um erro que ocorre durante um estado em um fluxo de trabalho, mas ainda pode ser um desafio encontrar a causa raiz de um erro e depurá-lo. Este padrão aborda esse desafio e mostra como o Amazon Bedrock pode ajudar você a solucionar erros que ocorrem durante estados no Step Functions.

O Step Functions disponibiliza orquestração de fluxos de trabalho, o que ajuda os desenvolvedores a automatizar processos com mais facilidade. Além disso, o Step Functions fornece funcionalidades de tratamento de erros que proporcionam os seguintes benefícios:

  • Os desenvolvedores podem criar aplicações mais resilientes, que não falham completamente quando ocorre algum problema.

  • Os fluxos de trabalho podem usar lógica condicional para lidar com cada tipo de erro de forma diferenciada.

  • O sistema é capaz de tentar executar novamente operações que falharam automaticamente, possivelmente adotando um mecanismo de recuo exponencial.

  • Caminhos de execução alternativos podem ser definidos para cenários de erro, permitindo que o fluxo de trabalho se adapte e continue o processamento.

Quando ocorre um erro em um fluxo de trabalho do Step Functions, este padrão mostra como a mensagem de erro e o contexto podem ser enviados para um modelo de base (FM), como o Claude 3, que é compatível com o Step Functions. O FM pode analisar o erro, categorizá-lo e sugerir possíveis etapas de correção.

Pré-requisitos e limitações

Pré-requisitos

Limitações

  • Você pode usar a abordagem deste padrão para vários Serviços da AWS. No entanto, os resultados podem variar de acordo com a solicitação criada por, AWS Lambda que é posteriormente avaliada pelo Amazon Bedrock.

  • Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.

Arquitetura

O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

Fluxo de trabalho para tratamento de erros e envio de notificações usando o Step Functions, o Amazon Bedrock e o Amazon SNS.

O diagrama apresenta o fluxo de trabalho automatizado para tratamento de erros e envio de notificações em uma máquina de estado do Step Functions:

  1. O desenvolvedor inicia a execução de uma máquina de estado.

  2. A máquina de estado do Step Functions começa a processar os estados. Existem dois resultados possíveis:

    • (a) Se todos os estados forem executados com êxito, o fluxo de trabalho segue diretamente para o Amazon SNS para envio de uma notificação de sucesso por e-mail.

    • (b) Se algum estado falhar, o fluxo de trabalho é direcionado para a função do Lambda responsável pelo tratamento de erros.

  3. Em caso de erros, o seguinte processo é executado:

    • (a) A função do Lambda (responsável pelo tratamento de erros) é acionada. A função do Lambda extrai a mensagem de erro contida nos dados do evento transmitidos pela máquina de estado do Step Functions. Posteriormente, a função do Lambda prepara um prompt fundamentado na mensagem de erro e o encaminha ao Amazon Bedrock. O prompt solicita soluções e sugestões relacionadas ao erro específico identificado.

    • (b) O Amazon Bedrock, que hospeda o modelo de IA generativa, realiza o processamento do prompt de entrada. (Esse padrão usa o modelo básico Anthropic Claude 3 (FM), que é um dos muitos que o FMs Amazon Bedrock suporta.) O modelo de IA analisa o contexto do erro. Em seguida, o modelo gera uma resposta que pode incluir explicações sobre a razão pela qual o erro ocorreu, soluções potenciais para resolvê-lo e sugestões para evitar a recorrência do mesmo erro no futuro.

      O Amazon Bedrock retorna a resposta gerada por IA para a função do Lambda. A função do Lambda realiza o processamento da resposta, com potencial formatação ou extração de informações importantes. Posteriormente, a função do Lambda envia a resposta para a saída da máquina de estado.

  4. Após o tratamento de erros ou a execução com êxito, o fluxo de trabalho é concluído acionando o Amazon SNS para enviar uma notificação por e-mail.

Ferramentas

Serviços da AWS

  • O Amazon Bedrock é um serviço totalmente gerenciado que disponibiliza modelos básicos de alto desempenho (FMs) das principais startups de IA e da Amazon para seu uso por meio de uma API unificada.

  • O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

  • O Amazon Simple Notification Service (Amazon SNS) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

  • AWS Step Functionsé um serviço de orquestração sem servidor que ajuda você a combinar AWS Lambda funções e outras Serviços da AWS para criar aplicativos essenciais para os negócios.

Práticas recomendadas

  • Considerando que o Amazon Bedrock é um modelo de IA generativa que aprende com base em dados treinados, ele também utiliza esses dados para treinamento e geração de contexto. Como uma prática recomendada, oculte qualquer informação privada que possa causar problemas de vazamento de dados.

  • Embora a IA generativa possa fornecer insights valiosos, decisões críticas de tratamento de erros ainda devem contar com supervisão humana, especialmente em ambientes de produção.

Épicos

TarefaDescriptionHabilidades necessárias

Criar uma máquina de estado do .

Para criar uma máquina de estado adequada ao seu fluxo de trabalho, realize as seguintes etapas:

  1. Faça login no Console de gerenciamento da AWS e abra o AWS Step Functions console.

  2. No painel de navegação à esquerda, selecione Máquinas de estado.

  3. Escolha Criar uma máquina de estado.

  4. Escolha um modelo de acordo com seu caso de uso ou selecione Em branco para criar um modelo conforme suas necessidades.

AWS DevOps
TarefaDescriptionHabilidades necessárias

Crie uma função do Lambda.

Para criar uma função do Lambda, realize as seguintes etapas:

  1. No Console de gerenciamento da AWS, navegue até o AWS Lambda console.

  2. No painel de navegação à esquerda, selecione Funções e selecione Criar função.

  3. Na página Criar função, selecione uma das alternativas disponíveis para criar a função. Em seguida, digite um nome em Nome da função e escolha a linguagem adequada na lista suspensa em Runtime.

  4. Escolha a opção Criar função.

AWS DevOps

Configure a lógica necessária no código do Lambda.

  • Para se conectar à API do Amazon Bedrock usando o AWS SDK para Python (Boto3), utilize o código apresentado a seguir.

    Este código configura um cliente para o Amazon Bedrock, prepara os parâmetros necessários e, em seguida, envia uma solicitação para o modelo Claude 3 com um prompt específico.

    Este padrão invoca o modelo Claude 3. Para obter mais informações sobre todos os modelos de fundação suportados, incluindo o modelo relacionado IDs, consulte Modelos de fundação suportados no Amazon Bedrock na documentação do Amazon Bedrock.

client = boto3.client( service_name="bedrock-runtime", region_name="selected-region" ) # Invoke Claude 3 with the text prompt model_id = "your-model-id" # Select your Model ID, Based on the Model Id, Change the body format try: response = client.invoke_model( modelId=model_id, body=json.dumps( { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ { "role": "user", "content": [{"type": "text", "text": prompt}], } ], } ), )
  • (Opcional) Substitua a por uma conta Conta da AWS IDs IDs de espaço reservado. Por questões de segurança, essa abordagem pode ser útil para a remoção de dados sensíveis de logs, mensagens de erro ou outras saídas que possam conter informações sensíveis da conta.

    O código a seguir localizará qualquer ocorrência de um número de 12 dígitos entre dois pontos (que é o formato dos Conta da AWS IDs Amazon Resource Names (ARNs) e de alguns outros AWS identificadores) e a substituirá pelo ID da conta do espaço reservado. ":123456789012:"

    def replace_account_id(input_string): # Use a regular expression to find the AWS account ID pattern account_id_pattern = r'(:\d{12}:)' # Replace the matched pattern with ":123456789012:" modified_string = re.sub(account_id_pattern, ":123456789012:", input_string) return modified_string
AWS DevOps
TarefaDescriptionHabilidades necessárias

Configure o Lambda para tratar erros no Step Functions.

Para configurar o Step Functions de forma a tratar erros sem interromper o fluxo de trabalho, realize as seguintes etapas:

  1. Acesse o console do Step Functions e navegue até a máquina de estado que foi criada anteriormente.

  2. Escolha Editar e, em seguida, selecione o serviço para o qual deseja configurar o tratamento de erros ao clicar em Tratamento de erros.

  3. Escolha Adicionar novo agente de captura e, no campo Estado de fallback, opte por Lambda e, em seguida, escolha a função do Lambda que você criou anteriormente. Para obter mais informações, consulte Catch errors na documentação do Step Functions.

AWS DevOps

Solução de problemas

ProblemaSolução

O Lambda não tem permissão para acessar a API do Amazon Bedrock (ação não autorizada)

Este erro ocorre quando o perfil do Lambda não tem permissão para acessar a API do Amazon Bedrock. Para resolver esse problema, adicione a política AmazonBedrockFullAccess ao perfil do Lambda. Para obter mais informações, consulte AmazonBedrockFullAccesso Guia de referência de políticas AWS gerenciadas.

Erro de tempo limite do Lambda

Em alguns casos, a geração e o envio da resposta podem demorar mais de 30 segundos, dependendo do prompt. Para resolver esse problema, aumente o tempo de configuração. Para obter mais informações, consulte Configurar tempo limite da função do Lambda no Guia do desenvolvedor do AWS Lambda .

Recursos relacionados