Desenvolva assistentes avançados baseados em bate-papo com IA generativa usando e solicitando RAG ReAct - 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 assistentes avançados baseados em bate-papo com IA generativa usando e solicitando RAG ReAct

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

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

Ambiente: PoC ou piloto

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

AWSserviços: Amazon Bedrock; Amazon; Amazon ECS Kendra; Lambda AWS

Resumo

Uma empresa típica tem 70% de seus dados presos em sistemas isolados. Você pode usar assistentes generativos baseados em bate-papo com inteligência artificial para descobrir insights e relacionamentos entre esses silos de dados por meio de interações em linguagem natural. Para tirar o máximo proveito da IA generativa, os resultados devem ser confiáveis, precisos e incluir os dados corporativos disponíveis. Assistentes bem-sucedidos baseados em bate-papo dependem do seguinte:

  • Modelos generativos de IA (como Anthropic Claude 2)

  • Vetorização da fonte de dados

  • Técnicas avançadas de raciocínio, como a ReAct estrutura, para estimular o modelo

Esse padrão fornece abordagens de recuperação de dados de fontes de dados como buckets do Amazon Simple Storage Service (Amazon S3), Glue e AWS Amazon Relational Database Service (Amazon). RDS O valor é obtido a partir desses dados intercalando Retrieval Augmented Generation (RAG) com métodos. chain-of-thought Os resultados apoiam conversas complexas com assistentes baseadas em bate-papo que se baseiam na totalidade dos dados armazenados de sua empresa.

Esse padrão usa os SageMaker manuais da Amazon e as tabelas de dados de preços como exemplo para explorar os recursos de um assistente generativo baseado em bate-papo com IA. Você criará um assistente baseado em bate-papo que ajudará os clientes a avaliar o SageMaker serviço respondendo a perguntas sobre preços e recursos do serviço. A solução usa uma biblioteca Streamlit para criar o aplicativo de front-end e a LangChain estrutura para desenvolver o back-end do aplicativo alimentado por um grande modelo de linguagem (). LLM

As consultas ao assistente baseado em bate-papo são atendidas com uma classificação inicial de intenção para encaminhamento para um dos três fluxos de trabalho possíveis. O fluxo de trabalho mais sofisticado combina orientação consultiva geral com análises complexas de preços. Você pode adaptar o padrão para se adequar aos casos de uso corporativo, corporativo e industrial.

Pré-requisitos e limitações

Pré-requisitos

Limitações

  • LangChain não oferece suporte a todos LLM para streaming. Os modelos Anthropic Claude são suportados, mas os modelos do AI21 Labs não.

  • Essa solução é implantada em uma única AWS conta.

  • Essa solução pode ser implantada somente em AWS regiões onde o Amazon Bedrock e o Amazon Kendra estão disponíveis. Para obter informações sobre disponibilidade, consulte a documentação do Amazon Bedrock e do Amazon Kendra.

Versões do produto

  • Python versão 3.11 ou posterior

  • Streamlit versão 1.30.0 ou posterior

  • Streamlit-chat versão 0.1.1 ou posterior

  • LangChain versão 0.1.12 ou posterior

  • AWSCDKversão 2.132.1 ou posterior

Arquitetura

Pilha de tecnologias de destino

  • Amazon Athena

  • Amazon Bedrock

  • Amazon Elastic Container Service (AmazonECS)

  • AWS Glue

  • AWSLambda

  • Amazon S3

  • Amazon Kendra

  • Elastic Load Balancing

Arquitetura de destino

O AWS CDK código implantará todos os recursos necessários para configurar o aplicativo de assistente baseado em bate-papo em uma AWS conta. O aplicativo assistente baseado em bate-papo mostrado no diagrama a seguir foi projetado para responder às consultas SageMaker relacionadas dos usuários. Os usuários se conectam por meio de um Application Load Balancer a um VPC que contém um ECS cluster da Amazon que hospeda o aplicativo Streamlit. Uma função Lambda de orquestração se conecta ao aplicativo. As fontes de dados do bucket do S3 fornecem dados para a função Lambda por meio do Amazon Kendra e do Glue. AWS A função Lambda se conecta ao Amazon Bedrock para responder consultas (perguntas) de usuários assistentes baseados em bate-papo.

Diagrama de arquitetura.
  1. A função Lambda de orquestração envia a LLM solicitação imediata para o modelo Amazon Bedrock (Claude 2).

  2. O Amazon Bedrock envia a LLM resposta de volta para a função Lambda de orquestração.

Fluxo lógico dentro da função Lambda de orquestração

Quando os usuários fazem uma pergunta por meio do aplicativo Streamlit, ele invoca diretamente a função Lambda de orquestração. O diagrama a seguir mostra o fluxo lógico quando a função Lambda é invocada.

Diagrama de arquitetura.
  • Etapa 1 — A entrada query (pergunta) é classificada em uma das três intenções:

    • Perguntas gerais de SageMaker orientação

    • Perguntas gerais SageMaker sobre preços (treinamento/inferência)

    • Perguntas complexas relacionadas SageMaker a preços

  • Etapa 2 — A entrada query inicia um dos três serviços:

    • RAG Retrieval service, que recupera o contexto relevante do banco de dados vetoriais Amazon Kendra e LLM o chama por meio do Amazon Bedrock para resumir o contexto recuperado como resposta.

    • Database Query service, que usa os LLM metadados do banco de dados e linhas de amostra de tabelas relevantes para converter a query entrada em uma SQL consulta. O serviço Database Query executa a SQL consulta no banco de dados de SageMaker preços por meio do Amazon Athena e resume os resultados da consulta como resposta.

    • In-context ReACT Agent service, que divide a entrada query em várias etapas antes de fornecer uma resposta. O agente usa RAG Retrieval service e Database Query service como ferramentas para recuperar informações relevantes durante o processo de raciocínio. Depois que os processos de raciocínio e ações são concluídos, o agente gera a resposta final como resposta.

  • Etapa 3 — A resposta da função Lambda de orquestração é enviada ao aplicativo Streamlit como saída.

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.

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

  • O Amazon Kendra é um serviço de pesquisa inteligente que usa processamento de linguagem natural e algoritmos avançados de aprendizado de máquina para retornar respostas específicas às perguntas de pesquisa de seus dados.

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

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

Repositório de código

O código desse padrão está disponível no GitHub genai-bedrock-chatbotrepositório.

O repositório de código contém os seguintes arquivos e pastas:

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

  • code/lambda-containerpasta — O código Python que é executado na função Lambda

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

  • testsfolder — Os arquivos Python que são executados para testar a unidade das construções AWS CDK

  • code/code_stack.py— A AWS CDK construção de arquivos Python usados para criar recursos AWS

  • app.py— A AWS CDK pilha de arquivos Python usados para AWS implantar recursos na conta de destino AWS

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

  • requirements-dev.txt— A lista de todas as dependências do Python que devem ser instaladas AWS CDK para executar o conjunto de testes unitários

  • cdk.json: o arquivo de entrada para fornecer os valores necessários para gerar recursos

Práticas recomendadas

Épicos

TarefaDescriçãoHabilidades necessárias

Exporte variáveis para a conta e a AWS região em que a pilha será implantada.

Para fornecer AWS credenciais 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>
DevOps engenheiro, AWS DevOps

Configure o AWS CLI perfil.

Para configurar o AWS CLI perfil da conta, siga as instruções na AWSdocumentação.

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

Clone o repositório na sua máquina local.

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

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

Configurar o ambiente virtual Python e instalar as dependências necessárias.

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

cd genai-bedrock-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 e sintetize o AWS CDK código.

  1. Para configurar o AWS CDK ambiente em sua AWS conta, execute o comando a seguir.

    cdk bootstrap aws://ACCOUNT-NUMBER/REGION
  2. Para converter o código em uma configuração de AWS CloudFormation pilha, execute o comandocdk synth.

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

Provisione o acesso ao modelo Claude.

Para habilitar o acesso ao modelo Anthropic Claude para sua AWS conta, siga as instruções na documentação do Amazon Bedrock.

AWS DevOps

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. logging Os valores de exemplo são INFO DEBUGWARN,, ERROR e.

    Esses valores definem mensagens em nível de log para a função Lambda e o aplicativo Streamlit.

  2. O app.py 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.

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

    O cdk deploy comando usa construções L3 para criar várias funções do Lambda para copiar documentos e arquivos de CSV conjuntos de dados para buckets do S3.

  4. Depois que o comando for concluído, entre no AWS Management Console, abra o CloudFormation console e verifique se a pilha foi implantada com êxito.

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

AWS DevOps, DevOps engenheiro

Execute o rastreador AWS Glue e crie a tabela do Catálogo de Dados.

Um rastreador AWS Glue é usado para manter o esquema de dados dinâmico. A solução cria e atualiza partições na tabela do AWS Glue Data Catalog executando o rastreador sob demanda. Depois que os arquivos do CSV conjunto de dados forem copiados para o bucket do S3, execute o rastreador AWS Glue e crie o esquema da tabela do catálogo de dados para teste:

  1. Navegue até o console AWS Glue.

  2. No painel de navegação, em Catálogo de dados, escolha Crawlers.

  3. Selecione o rastreador com o sufixo. sagemaker-pricing-crawler

  4. Execute o crawler.

  5. Depois que o rastreador é executado com sucesso, ele cria uma tabela do AWS Glue Data Catalog.

Observação: o AWS CDK código configura o rastreador AWS Glue para ser executado sob demanda, mas você também pode programá-lo para ser executado periodicamente.

DevOps engenheiro, AWS DevOps

Inicie a indexação de documentos.

Depois que os arquivos forem copiados no bucket do S3, use o Amazon Kendra para rastreá-los e indexá-los:

  1. Navegue até o console do Amazon Kendra.

  2. Selecione o índice com o sufixochatbot-index.

  3. No painel de navegação, escolha Fontes de dados e selecione o conector da fonte de dados com o sufixochatbot-index.

  4. Escolha Sincronizar agora para iniciar o processo de indexação.

Nota: O AWS CDK código configura a sincronização do índice Amazon Kendra para ser executada sob demanda, mas você também pode executá-la periodicamente usando o parâmetro Schedule.

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

Remova os AWS recursos.

Depois de testar a solução, limpe os recursos:

  1. Para remover AWS os recursos implantados pela solução, execute o comandocdk destroy.

  2. Exclua todos os objetos dos dois buckets do S3 e, em seguida, remova os buckets.

    Para obter mais informações, consulte Excluir um bucket.

DevOps engenheiro, AWS DevOps

Solução de problemas

ProblemaSolução

AWSCDKretorna erros.

Para obter ajuda com AWS CDK problemas, consulte Solução de AWS CDK problemas comuns.

Recursos relacionados

Mais informações

AWSCDKcomandos

Ao trabalhar com AWSCDK, lembre-se dos seguintes comandos úteis:

  • Lista todas as pilhas no aplicativo

    cdk ls
  • Emite o modelo AWS CloudFormation sintetizado

    cdk synth
  • Implanta a pilha em sua AWS conta e região padrão

    cdk deploy
  • Compara a pilha implantada com o estado atual

    cdk diff
  • Abre a AWS CDK documentação

    cdk docs
  • Exclui a CloudFormation pilha e remove AWS os recursos implantados

    cdk destroy