View a markdown version of this page

Desenvolvimento de um assistente totalmente automatizado baseado em chat usando os agentes e as bases de conhecimento do 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á.

Desenvolvimento de um assistente totalmente automatizado baseado em chat usando os agentes e as bases de conhecimento do Amazon Bedrock

Jundong Qiao, Shuai Cao, Noah Hamilton, Kiowa Jackson, Praveen Kumar Jeyarajan e Kara Yang, Amazon Web Services

Resumo

Muitas organizações enfrentam desafios ao criar um assistente baseado em chat capaz de orquestrar diversas fontes de dados para fornecer respostas completas. Este padrão apresenta uma solução para o desenvolvimento de um assistente de chat capaz de responder a consultas tanto de documentação quanto de bancos de dados, com uma implantação simples.

Começando com o Amazon Bedrock, esse serviço de inteligência artificial generativa (IA) totalmente gerenciado fornece uma ampla variedade de modelos básicos avançados (FMs). Esse serviço permite a criação de aplicações de IA generativa de forma eficiente, mantendo grande atenção à privacidade e à segurança. No contexto da recuperação de documentação, o recurso de geração aumentada via recuperação (RAG) é fundamental. Ele emprega as bases de conhecimento para complementar os prompts dos FMs com informações contextualmente relevantes provenientes de fontes externas. Um índice Amazon OpenSearch Serverless serve como banco de dados vetorial por trás das bases de conhecimento do Amazon Bedrock. A integração é otimizada com o uso de uma engenharia de prompts precisa, a fim de minimizar imprecisões e garantir que as respostas estejam fundamentadas em documentação factual. Para consultas de banco FMs de dados, o Amazon Bedrock transforma consultas textuais em consultas SQL estruturadas, incorporando parâmetros específicos. Isso permite a recuperação precisa de dados de bancos de dados gerenciados por AWS Glue bancos de dados. O Amazon Athena é usado para executar essas consultas.

Quando se trata de consultas mais elaboradas, obter respostas completas requer informações provenientes tanto da documentação quanto de bancos de dados. Os Agentes para Amazon Bedrock são um recurso de IA generativa que auxilia na criação de agentes autônomos capazes de compreender tarefas complexas e dividí-las em tarefas mais simples para orquestração. A combinação dos insights obtidos a partir das tarefas simplificadas, facilitada pelos agentes autônomos do Amazon Bedrock, otimiza a síntese de informações, resultando em respostas mais completas e detalhadas. Este padrão demonstra como desenvolver um assistente baseado em chat usando o Amazon Bedrock e os serviços e recursos de IA generativa relacionados em uma solução automatizada.

Pré-requisitos e limitações

Pré-requisitos

Limitações

  • Essa solução é implantada em um único Conta da AWS.

  • Essa solução só pode ser implantada Regiões da AWS onde o Amazon Bedrock e o Amazon OpenSearch Serverless são suportados. Para obter mais informações, consulte a documentação do Amazon Bedrock e do Amazon OpenSearch Serverless.

Versões do produto

  • Llama-index, na versão 0.10.6 ou em versões posteriores

  • Sqlalchemy, na versão 2.0.23 ou em versões posteriores

  • OpenSearch-py, na versão 2.4.2 ou em versões posteriores

  • Requests_aws4auth, versão 1.2.3 ou em versões posteriores

  • AWS SDK para Python (Boto3) versão 1.34.57 ou posterior

Arquitetura

Pilha de tecnologias de destino

AWS Cloud Development Kit (AWS CDK)É uma estrutura de desenvolvimento de software de código aberto para definir a infraestrutura de nuvem em código e provisioná-la por meio dela. AWS CloudFormation A AWS CDK pilha usada nesse padrão implanta os seguintes recursos: AWS  

  • AWS Key Management Service (AWS KMS)

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Glue Data Catalog, para o componente de AWS Glue banco de dados

  • AWS Lambda

  • AWS Identity and Access Management (IAM)

  • Amazon sem OpenSearch servidor

  • Amazon Elastic Container Registry (Amazon ECR) 

  • Amazon Elastic Container Service (Amazon ECS)

  • AWS Fargate

  • Amazon Virtual Private Cloud (Amazon VPC)

  • Application Load Balancer

Arquitetura de destino

Diagrama da arquitetura usando uma base de conhecimento e um agente do Amazon Bedrock.

O diagrama mostra uma configuração abrangente AWS nativa da nuvem em uma única Região da AWS, usando várias. Serviços da AWS A interface primária do assistente baseado em chat é uma aplicação Streamlit hospedada em um cluster do Amazon ECS. Um Application Load Balancer gerencia a acessibilidade. As consultas realizadas por meio desta interface acionam a função do Lambda Invocation, que posteriormente interage com os agentes para Amazon Bedrock. Este agente responde às consultas dos usuários consultando as bases de conhecimento para Amazon Bedrock ou invocando uma função do Lambda Agent executor. A função aciona um conjunto de ações associadas ao agente, de acordo com um esquema de API previamente definido. As bases de conhecimento do Amazon Bedrock usam um índice OpenSearch Serverless como base de banco de dados vetorial. Além disso, a Agent executor função gera consultas SQL que são executadas no AWS Glue banco de dados por meio do Amazon Athena.

Ferramentas

Serviços da AWS

  • O Amazon Athena é um serviço de consultas interativas que ajuda a análise de dados diretamente no Amazon Simple Storage Service (Amazon S3) usando SQL padrão.

  • 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.

  • AWS Cloud Development Kit (AWS CDK)é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura de AWS nuvem em código.

  • AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.

  • O Amazon Elastic Container Service (Amazon ECS) é um serviço de gerenciamento de contêineres escalável e rápido que facilita a execução, a interrupção e o gerenciamento de contêineres em um cluster.

  • O Elastic Load Balancing (ELB) distribui o tráfego de entrada de aplicativos ou de rede em vários destinos. Por exemplo, é possível distribuir o tráfego entre instâncias, contêineres e endereços IP do Amazon Elastic Compute Cloud (Amazon EC2) em uma ou mais Zonas de disponibilidade.

  • O AWS Glue é um serviço totalmente gerenciado de extração, transformação e carregamento (ETL). Ele ajuda você a categorizar de forma confiável, limpar, enriquecer e mover dados de forma confiável entre armazenamento de dados e fluxos de dados. Esse padrão usa um AWS Glue rastreador e uma AWS Glue Data Catalog tabela.

  • 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 OpenSearch Serverless é uma configuração sem servidor sob demanda para o Amazon Service. OpenSearch Nesse padrão, um índice OpenSearch sem servidor serve como um banco de dados vetorial para as bases de conhecimento do Amazon Bedrock.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

Outras ferramentas

  • O Streamlit é uma estrutura de código aberto do Python para desenvolvimento de aplicações de dados.

Repositório de código

O código desse padrão está disponível no GitHub genai-bedrock-agent-chatbotrepositório. O repositório de código contém os seguintes arquivos e pastas:

  • Pasta assets: os recursos estáticos, como o diagrama da arquitetura e o conjunto de dados público.

  • Pasta code/lambdas/action-lambda: o código Python da função do Lambda que atua como uma ação para o agente do Amazon Bedrock.

  • code/lambdas/create-index-lambdapasta — O código Python para a função Lambda que cria o índice Serverless. OpenSearch

  • Pasta code/lambdas/invoke-lambda: o código Python da função do Lambda que invoca o agente do Amazon Bedrock, chamado diretamente pela aplicação Streamlit.

  • code/lambdas/update-lambdapasta — O código Python para a função Lambda que atualiza ou exclui recursos depois que os recursos são implantados por meio do AWS . AWS CDK

  • code/layers/boto3_layerpasta — A AWS CDK pilha que cria uma camada de Boto3 que é compartilhada entre todas as funções do Lambda.

  • code/layers/opensearch_layerpasta — A AWS CDK pilha que cria uma camada OpenSearch sem servidor que instala todas as dependências para criar o índice.

  • code/streamlit-apppasta — O código Python que é executado como imagem do contêiner no Amazon ECS.

  • code/code_stack.py— A AWS CDK construção de arquivos Python que criam AWS recursos.

  • app.py— A AWS CDK pilha de arquivos Python que AWS implantam recursos na conta de destino. AWS

  • requirements.txt— A lista de todas as dependências do Python que devem ser instaladas para o. AWS CDK

  • cdk.json: o arquivo de entrada que fornece os valores necessários para criar recursos. Além disso, nos campos de context/config, você pode personalizar a solução conforme necessário. Para obter mais informações sobre a personalização, consulte a seção Informações adicionais.

Práticas recomendadas

Épicos

TarefaDescriptionHabilidades necessárias

Exporte variáveis para a conta e para a região.

Para fornecer AWS credenciais para o AWS CDK usando variáveis de ambiente, execute os comandos a seguir.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number> export CDK_DEFAULT_REGION=<Region>
AWS DevOps, DevOps engenheiro

Configure o perfil AWS CLI nomeado.

Para configurar o perfil AWS CLI nomeado para a conta, siga as instruções em Configuração e configurações do arquivo de credenciais.

AWS DevOps, DevOps engenheiro
TarefaDescriptionHabilidades necessárias

Clone o repositório na sua estação de trabalho local.

Para clonar o repositório, execute o comando a seguir no seu terminal.

git clone https://github.com/awslabs/genai-bedrock-agent-chatbot.git
DevOps engenheiro, AWS DevOps

Configure o ambiente virtual do Python.

Para ativar o ambiente virtual do Python, execute os comandos a seguir.

cd genai-bedrock-agent-chatbot python3 -m venv .venv source .venv/bin/activate

Para configurar as dependências necessárias, execute o comando a seguir.

pip3 install -r requirements.txt
DevOps engenheiro, AWS DevOps

Configure o AWS CDK ambiente.

Para converter o código em um AWS CloudFormation modelo, execute o comandocdk synth.

AWS DevOps, DevOps engenheiro
TarefaDescriptionHabilidades necessárias

Implante recursos na conta.

Para implantar recursos no Conta da AWS usando o AWS CDK, faça o seguinte:

  1. Na raiz do repositório clonado, no arquivo cdk.json, forneça os valores necessários para os parâmetros de registro em log. Os valores de exemplo são INFO, DEBUG, WARN e ERROR.

    Esses valores definem o nível de log das mensagens para as funções do Lambda e para a aplicação Streamlit.

  2. O cdk.json arquivo na raiz do repositório clonado contém o nome da AWS CloudFormation pilha usado para implantação. O nome padrão da pilha é chatbot-stack. O nome padrão do agente do Amazon Bedrock é ChatbotBedrockAgent e o alias padrão do agente do Amazon Bedrock é Chatbot_Agent.

  3. Para implantar recursos, execute o comando cdk deploy. O comando cdk deploy usa constructos de nível 3 para criar diversas funções do Lambda com a finalidade de copiar documentos e arquivos CSV de conjuntos de dados para buckets do S3. O padrão também implanta o agente do Amazon Bedrock, as bases de conhecimento e a função do Lambda Action group para o agente do Amazon Bedrock.

  4. Faça login no e Console de gerenciamento da AWS, em seguida, abra o CloudFormation console.

  5. Confirme se a pilha foi implantada com êxito. Para obter instruções, consulte Revisando sua pilha no AWS CloudFormation console.

Após a implantação bem-sucedida, você pode acessar o aplicativo assistente baseado em bate-papo usando a URL fornecida na guia Saídas no console. CloudFormation

DevOps engenheiro, AWS DevOps
TarefaDescriptionHabilidades necessárias

Remova os AWS recursos.

Após testar a solução, para limpar os recursos, execute o comando cdk destroy.

AWS DevOps, DevOps engenheiro

Recursos relacionados

AWS documentação

Outros AWS recursos

Outros recursos

Mais informações

Personalização do assistente baseado em chat com seus próprios dados

Para integrar dados personalizados na implantação da solução, siga estas diretrizes estruturadas. Estas etapas foram elaboradas para garantir um processo de integração contínuo e eficiente, permitindo que você implante a solução de forma eficaz com seus dados personalizados.

Para integração de dados da base de conhecimento

Preparação de dados

  1. Localize o diretório assets/knowledgebase_data_source/.

  2. Coloque seu conjunto de dados dentro desta pasta.

Ajustes de configuração

  1. Abra o arquivo cdk.json.

  2. Acesse o campo context/configure/paths/knowledgebase_file_name e, em seguida, atualize-o conforme necessário.

  3. Acesse o campo bedrock_instructions/knowledgebase_instruction e, em seguida, atualize-o para refletir com precisão as particularidades e o contexto do seu novo conjunto de dados.

Para integração de dados estruturados

Organização dos dados

  1. No diretório assets/data_query_data_source/, crie uma subpasta, como tabular_data.

  2. Coloque seu conjunto de dados estruturado (em um dos formatos aceitos, incluindo CSV, JSON, ORC e Parquet) nesta subpasta recém-criada.

  3. Se você estiver estabelecendo conexão com um banco de dados existente, atualize a função create_sql_engine() no arquivo code/lambda/action-lambda/build_query_engine.py para se conectar ao banco de dados.

Atualizações de configuração e de código

  1. No arquivo cdk.json, atualize o campo context/configure/paths/athena_table_data_prefix para alinhar com o novo caminho dos dados.

  2. Revise code/lambda/action-lambda/dynamic_examples.csv incorporando novos text-to-SQL exemplos que correspondam ao seu conjunto de dados.

  3. Analise o arquivo code/lambda/action-lambda/prompt_templates.py para refletir os atributos do seu conjunto de dados estruturado.

  4. No arquivo cdk.json, atualize o campo context/configure/bedrock_instructions/action_group_description para explicar o propósito e a funcionalidade da função do Lambda Action group.

  5. No arquivo assets/agent_api_schema/artifacts_schema.json, explique as novas funcionalidades da função do Lambda Action group.

Atualização geral

No arquivo cdk.json, na seção context/configure/bedrock_instructions/agent_instruction, forneça uma descrição detalhada da funcionalidade pretendida e do propósito de design do agente do Amazon Bedrock, considerando os novos dados integrados.