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
Um ativo Conta da AWS
Docker, instalado
AWS Cloud Development Kit (AWS CDK), instalado e inicializado no ou
us-east-1us-west-2Regiões da AWSAWS CDK Kit de ferramentas versão 2.114.1 ou posterior, instalado
AWS Command Line Interface (AWS CLI), instalado e configurado
Python, versão 3.11 ou versões posteriores, instalado
No Amazon Bedrock, habilite o acesso a Claude 2, Claude 2.1, Claude Instant e Titan Embeddings G1 – Text
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)
Arquitetura de destino

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 StreamlitInvocation, 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-chatbot
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. OpenSearchPasta
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 CDKcode/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. AWSrequirements.txt— A lista de todas as dependências do Python que devem ser instaladas para o. AWS CDKcdk.json: o arquivo de entrada que fornece os valores necessários para criar recursos. Além disso, nos campos decontext/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
O exemplo de código fornecido aqui é apenas para fins proof-of-concept (PoC) ou piloto. Se você pretende implantar o código para produção, certifique-se de seguir as seguintes práticas recomendadas:
Habilitar o registro em log de acesso do Amazon S3
Habilitar os logs de fluxo da VPC
Configure o monitoramento e a geração de alertas para as funções do Lambda. Para obter mais informações, consulte Monitorar e solucionar problemas de funções do Lambda. Para ver as melhores práticas, consulte as Melhores práticas para trabalhar com AWS Lambda funções.
Épicos
| Tarefa | Description | Habilidades 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.
| 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 |
| Tarefa | Description | Habilidades 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.
| DevOps engenheiro, AWS DevOps |
Configure o ambiente virtual do Python. | Para ativar o ambiente virtual do Python, execute os comandos a seguir.
Para configurar as dependências necessárias, execute o comando a seguir.
| DevOps engenheiro, AWS DevOps |
Configure o AWS CDK ambiente. | Para converter o código em um AWS CloudFormation modelo, execute o comando | AWS DevOps, DevOps engenheiro |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Implante recursos na conta. | Para implantar recursos no Conta da AWS usando o AWS CDK, faça o seguinte:
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 |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Remova os AWS recursos. | Após testar a solução, para limpar os recursos, execute o comando | AWS DevOps, DevOps engenheiro |
Recursos relacionados
AWS documentação
Recursos do Amazon Bedrock:
AWS CDK recursos:
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
Localize o diretório
assets/knowledgebase_data_source/.Coloque seu conjunto de dados dentro desta pasta.
Ajustes de configuração
Abra o arquivo
cdk.json.Acesse o campo
context/configure/paths/knowledgebase_file_namee, em seguida, atualize-o conforme necessário.Acesse o campo
bedrock_instructions/knowledgebase_instructione, 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
No diretório
assets/data_query_data_source/, crie uma subpasta, comotabular_data.Coloque seu conjunto de dados estruturado (em um dos formatos aceitos, incluindo CSV, JSON, ORC e Parquet) nesta subpasta recém-criada.
Se você estiver estabelecendo conexão com um banco de dados existente, atualize a função
create_sql_engine()no arquivocode/lambda/action-lambda/build_query_engine.pypara se conectar ao banco de dados.
Atualizações de configuração e de código
No arquivo
cdk.json, atualize o campocontext/configure/paths/athena_table_data_prefixpara alinhar com o novo caminho dos dados.Revise
code/lambda/action-lambda/dynamic_examples.csvincorporando novos text-to-SQL exemplos que correspondam ao seu conjunto de dados.Analise o arquivo
code/lambda/action-lambda/prompt_templates.pypara refletir os atributos do seu conjunto de dados estruturado.No arquivo
cdk.json, atualize o campocontext/configure/bedrock_instructions/action_group_descriptionpara explicar o propósito e a funcionalidade da função do LambdaAction group.No arquivo
assets/agent_api_schema/artifacts_schema.json, explique as novas funcionalidades da função do LambdaAction 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.