Desenvolva um assistente baseado em bate-papo totalmente automatizado usando agentes e 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á.

Desenvolva um assistente baseado em bate-papo totalmente automatizado usando agentes e bases de conhecimento do Amazon Bedrock

Criado por Jundong Qiao (AWS), Kara Yang (), Kiowa Jackson (AWS), Noah Hamilton (AWS), Praveen Kumar Jeyarajan (AWS) e Shuai Cao () AWS AWS

Repositório de códigos: genai-bedrock-agent-chatbot

Ambiente: PoC ou piloto

Tecnologias: aprendizado de máquina e IA; sem servidor

AWSserviços: Amazon Bedrock AWSCDK; AWS Lambda

Resumo

Muitas organizações enfrentam desafios ao criar um assistente baseado em bate-papo capaz de orquestrar diversas fontes de dados para oferecer respostas abrangentes. Esse padrão apresenta uma solução para o desenvolvimento de um assistente baseado em bate-papo capaz de responder consultas de documentação e 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). Isso facilita a criação eficiente de aplicativos generativos de IA com um forte foco em privacidade e segurança. No contexto da recuperação de documentação, a Retrieval Augmented Generation (RAG) é um recurso fundamental. Ele usa bases de conhecimento para aumentar as solicitações de FM com informações contextualmente relevantes de fontes externas. Um índice Amazon OpenSearch Serverless serve como banco de dados vetorial por trás das bases de conhecimento do Amazon Bedrock. Essa integração é aprimorada por meio de uma engenharia rápida e cuidadosa para minimizar imprecisões e garantir que as respostas estejam ancoradas na documentação factual. Para consultas de banco FMs de dados, o Amazon Bedrock transforma consultas textuais em SQL consultas estruturadas, incorporando parâmetros específicos. Isso permite a recuperação precisa de dados de bancos de dados gerenciados pelos bancos de dados AWSGlue. O Amazon Athena é usado para essas consultas.

Para lidar com consultas mais complexas, obter respostas abrangentes exige informações provenientes de documentação e bancos de dados. Agents for Amazon Bedrock é um recurso generativo de IA que ajuda você a criar agentes autônomos capazes de entender tarefas complexas e dividi-las em tarefas mais simples para orquestração. A combinação de insights recuperados das tarefas simplificadas, facilitada pelos agentes autônomos do Amazon Bedrock, aprimora a síntese das informações, levando a respostas mais completas e exaustivas. Esse padrão demonstra como criar um assistente baseado em bate-papo 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 uma única AWS conta.

  • Essa solução pode ser implantada somente em AWS regiões nas quais o Amazon Bedrock e o Amazon OpenSearch Serverless são compatíveis. Para obter mais informações, consulte a documentação do Amazon Bedrock e do Amazon OpenSearch Serverless.

Versões do produto

  • Índice LLAMA versão 0.10.6 ou posterior

  • Sqlalchemy versão 2.0.23 ou posterior

  • OpenSearch-py versão 2.4.2 ou posterior

  • requests_aws4auth versão 1.2.3 ou posterior

  • AWSSDKpara Python (Boto3) versão 1.34.57 ou posterior

Arquitetura

Pilha de tecnologias de destino

O AWSCloud Development Kit (AWSCDK) é 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 

  • AWSServiço de gerenciamento de chaves (AWSKMS)

  • Amazon Simple Storage Service (Amazon S3)

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

  • AWSLambda

  • AWSIdentity and Access Management (IAM)

  • Amazon sem OpenSearch servidor

  • Amazon Elastic Container Registry (AmazonECR) 

  • Amazon Elastic Container Service (AmazonECS)

  • AWS Fargate

  • Amazon Virtual Private Cloud (AmazonVPC)

  • Application Load Balancer

Arquitetura de destino

Diagrama de 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 AWS região, usando vários AWS serviços. A interface principal do assistente baseado em bate-papo é um aplicativo Streamlit hospedado em um cluster da Amazon. ECS Um Application Load Balancer gerencia a acessibilidade. As consultas feitas por meio dessa interface ativam a função Invocation Lambda, que então interage com os agentes do Amazon Bedrock. Esse agente responde às perguntas dos usuários consultando as bases de conhecimento do Amazon Bedrock ou invocando uma Agent executor função Lambda. Essa função aciona um conjunto de ações associadas ao agente, seguindo um esquema API predefinido. 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 SQL consultas que são executadas no banco de dados AWS Glue por meio do Amazon Athena.

Ferramentas

AWSserviços

  • O Amazon Athena é um serviço de consulta interativo que ajuda você a analisar dados diretamente no Amazon Simple Storage Service (Amazon S3) usando o padrão. SQL

  • 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 um sistema unificado. API

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

  • AWSA Interface de Linha de Comando (AWSCLI) é uma ferramenta de código aberto que ajuda você a interagir com AWS serviços por meio de comandos em seu shell de linha de comando.

  • O Amazon Elastic Container Service (AmazonECS) é um serviço de gerenciamento de contêineres rápido e escalável que ajuda você a executar, parar e gerenciar 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, você pode distribuir o tráfego entre instâncias, contêineres e endereços IP do Amazon Elastic Compute Cloud (AmazonEC2) em uma ou mais zonas de disponibilidade.

  • AWSO 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 rastreador AWS Glue e uma tabela do AWS Glue Data Catalog.

  • AWSO Lambda é um serviço de computação que ajuda você a executar código sem precisar provisionar ou gerenciar 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

  • Streamlit é uma estrutura Python de código aberto para criar aplicativos 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:

  • assetspasta — Os ativos estáticos, como o diagrama de arquitetura e o conjunto de dados público.

  • code/lambdas/action-lambdapasta — O código Python para a função Lambda que atua como uma ação para o agente Amazon Bedrock.

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

  • code/lambdas/invoke-lambdapasta — O código Python para a função Lambda que invoca o agente Amazon Bedrock, que é chamado diretamente do aplicativo 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 doAWS. 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 de contêiner na 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 para fornecer os valores necessários para criar recursos. Além disso, nos context/config campos, você pode personalizar a solução adequadamente. Para obter mais informações sobre personalização, consulte a seção Informações adicionais.

Práticas recomendadas

Épicos

TarefaDescriçãoHabilidades necessárias

Exporte variáveis para a conta e 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
TarefaDescriçãoHabilidades necessárias

Clone o repositório em 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 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
TarefaDescriçãoHabilidades necessárias

Implante recursos na conta.

Para implantar recursos na AWS conta usando o AWSCDK, faça o seguinte:

  1. Na raiz do repositório clonado, no cdk.json arquivo, forneça entradas para os parâmetros de registro. Os valores de exemplo são INFO DEBUGWARN,, ERROR e.

    Esses valores definem mensagens em nível de log para as funções Lambda e o aplicativo 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 Amazon Bedrock éChatbotBedrockAgent, e o alias padrão do agente Amazon Bedrock é. Chatbot_Agent

  3. Para implantar recursos, execute o comando cdk deploy.

    O cdk deploy comando usa construções de camada 3 para criar várias funções do Lambda para copiar documentos e arquivos de CSV conjuntos de dados para buckets do S3. Ele também implanta o agente Amazon Bedrock, as bases de conhecimento e a função Action group Lambda para o agente Amazon Bedrock.

  4. Faça login no AWS Management Console e, em seguida, abra o CloudFormation console em https://console.aws.amazon.com/cloudformation/.

  5. Confirme se a pilha foi implantada com sucesso. 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 o URL fornecido na guia Saídas no console. CloudFormation

DevOps engenheiro, AWS DevOps
TarefaDescriçãoHabilidades necessárias

Remova os AWS recursos.

Depois de testar a solução, para limpar os recursos, execute o comandocdk destroy.

AWS DevOps, DevOps engenheiro

Recursos relacionados

AWSdocumentação

Outros AWS recursos

Outros recursos

Mais informações

Personalize o assistente baseado em bate-papo com seus próprios dados

Para integrar seus dados personalizados para implantar a solução, siga estas diretrizes estruturadas. Essas etapas foram projetadas 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 assets/knowledgebase_data_source/ diretório.

  2. Coloque seu conjunto de dados nessa pasta.

Ajustes de configuração

  1. Abra o arquivo cdk.json.

  2. Navegue até o context/configure/paths/knowledgebase_file_name campo e, em seguida, atualize-o adequadamente.

  3. Navegue até o bedrock_instructions/knowledgebase_instruction campo e atualize-o para refletir com precisão as nuances e o contexto do seu novo conjunto de dados.

Para integração de dados estruturais

Organização de dados

  1. Dentro do assets/data_query_data_source/ diretório, crie um subdiretório, comotabular_data.

  2. Coloque seu conjunto de dados estruturado (formatos aceitáveis incluem CSVJSON,ORC, e Parquet) nessa subpasta recém-criada.

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

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

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

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

  3. Revise code/lambda/action-lambda/prompt_templates.py para espelhar os atributos do seu conjunto de dados estruturado.

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

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

Atualização geral

No cdk.json arquivo, na context/configure/bedrock_instructions/agent_instruction seção, forneça uma descrição abrangente da funcionalidade pretendida e da finalidade do design do agente Amazon Bedrock, levando em consideração os dados recém-integrados.