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
AWSInterface de linha de comando (AWSCLI) instalada e configurada
AWSKit de ferramentas do Cloud Development Kit (AWSCDK) 2.114.1 ou posterior instalado e configurado
Familiaridade básica com Python e AWS CDK
Git
instalado Python 3.11 ou posterior
instalado e configurado (para obter mais informações, consulte a seção Ferramentas) Uma AWSconta ativa inicializada usando AWSCDK
Acesso aos modelos Amazon Titan e Anthropic Claude ativado no serviço Amazon Bedrock
AWScredenciais de segurança, inclusive
AWS_ACCESS_KEY_ID
, configuradas corretamente em seu ambiente de terminal
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.
A função Lambda de orquestração envia a LLM solicitação imediata para o modelo Amazon Bedrock (Claude 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.
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 Kendrae 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 aquery
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 Athenae resume os resultados da consulta como resposta. In-context ReACT Agent service
, que divide a entradaquery
em várias etapas antes de fornecer uma resposta. O agente usaRAG Retrieval service
eDatabase 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-chatbot
O repositório de código contém os seguintes arquivos e pastas:
assets
pasta — Os ativos estáticos, o diagrama de arquitetura e o conjunto de dados públicocode/lambda-container
pasta — O código Python que é executado na função Lambdacode/streamlit-app
pasta — O código Python que é executado como imagem de contêiner na Amazon ECStests
folder — Os arquivos Python que são executados para testar a unidade das construções AWS CDKcode/code_stack.py
— A AWS CDK construção de arquivos Python usados para criar recursos AWSapp.py
— A AWS CDK pilha de arquivos Python usados para AWS implantar recursos na conta de destino AWSrequirements.txt
— A lista de todas as dependências do Python que devem ser instaladas para AWS CDKrequirements-dev.txt
— A lista de todas as dependências do Python que devem ser instaladas AWS CDK para executar o conjunto de testes unitárioscdk.json
: o arquivo de entrada para fornecer os valores necessários para gerar recursos
Nota: O AWS CDK código usa construções L3 (camada 3) e políticas de AWS Identity and Access Management (IAM) gerenciadas pela AWS para implantar a solução. |
Práticas recomendadas
O exemplo de código fornecido aqui é somente para uma demonstração proof-of-concept (PoC) ou piloto. Se você quiser levar o código para a produção, certifique-se de usar as seguintes práticas recomendadas:
Configure o monitoramento e o alerta para a função do Lambda. Para obter mais informações, consulte Monitorar e solucionar problemas de funções do Lambda. Para obter as melhores práticas gerais ao trabalhar com funções do Lambda, consulte a AWS documentação.
Épicos
Tarefa | Descrição | Habilidades 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.
| 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 |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Clone o repositório na sua máquina local. | Para clonar o repositório, execute o comando a seguir no seu terminal.
| 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.
Para configurar as dependências necessárias, execute o comando a seguir.
| DevOps engenheiro, AWS DevOps |
Configure o AWS CDK ambiente e sintetize o AWS CDK código. |
| DevOps engenheiro, AWS DevOps |
Tarefa | Descrição | Habilidades 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:
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:
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:
| AWS DevOps, DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Remova os AWS recursos. | Depois de testar a solução, limpe os recursos:
| DevOps engenheiro, AWS DevOps |
Solução de problemas
Problema | Soluçã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