Introdução
Pré-requisitos
Pilha de tecnologia alvo
Implantação
Comandos úteis do CDK
Estrutura de código
Personalize o chatbot com seus próprios dados
Este aplicativo GenAI ChatBot foi desenvolvido com Amazon Bedrock, que inclui KnowledgeBase, Agent e soluções adicionais de GenAI sem servidor da AWS. A solução fornecida apresenta um Chatbot que utiliza seu conhecimento das instâncias EC2 e os preços das instâncias EC2. Este chatbot funciona como uma ilustração dos recursos do Amazon Bedrock para converter linguagem natural em consultas do Amazon Athena e para processar e utilizar conjuntos de dados complexos. Ferramentas de código aberto, como o LLamaIndex, são utilizadas para aumentar as capacidades do sistema para processamento e recuperação de dados. A integração de diversos recursos AWS também é enfatizada na solução. Esses recursos consistem em Amazon S3 para armazenamento, Amazon Bedrock KnowledgeBase para facilitar a geração aumentada de recuperação (RAG), agente Amazon Bedrock para executar tarefas de várias etapas em fontes de dados, AWS Glue para preparar dados, Amazon Athena para executar consultas eficientes, Amazon Lambda para gerenciar contêineres e Amazon ECS para supervisionar contêineres. A utilização combinada desses recursos permite que o Chatbot recupere e administre com eficiência conteúdo de bancos de dados e documentos, demonstrando assim os recursos do Amazon Bedrock no desenvolvimento de aplicações avançadas de Chatbot.
Docker
AWS CDK Toolkit 2.114.1+, instalado, instalado e configurado. Para obter mais informações, consulte Conceitos básicos do AWS CDK na documentação do AWS CDK.
Python 3.11+, instalado e configurado. Para obter mais informações, consulte Guia/Download para iniciantes na documentação do Python.
Uma conta AWS ativa
Uma conta da AWS inicializada usando o AWS CDK em us-east-1 ou us-west-2. Habilite o acesso ao modelo Claude e ao modelo Titan Embedding no serviço Bedrock.
Base Amazônica
Amazon OpenSearch sem servidor
Amazon ECS
Cola AWS
AWS Lambda
Amazon S3
Amazon Atenas
Balanceador de carga elástico
Para executar o aplicativo localmente, primeiro adicione um arquivo .env à pasta 'code/streamlit-app' contendo o seguinte
ACCOUNT_ID = <ID da sua conta>AWS_REGION = <Sua região>LAMBDA_FUNCTION_NAME =vocationAgentLambda # Define o nome de escolha para a função lambda chamada pelo streamlit para uma resposta. Atualmente invoca um agente.
O arquivo cdk.json
informa ao CDK Toolkit como executar seu aplicativo.
Este projeto é configurado como um projeto Python padrão. O processo de inicialização também cria um virtualenv dentro deste projeto, armazenado no diretório .venv
. Para criar o virtualenv ele assume que existe um executável python3
(ou python
para Windows) em seu caminho com acesso ao pacote venv
. Se por algum motivo a criação automática do virtualenv falhar, você poderá criar o virtualenv manualmente.
Para criar manualmente um virtualenv no MacOS e Linux:
$ python3 -m venv.venv
Após a conclusão do processo init e a criação do virtualenv, você pode usar a etapa a seguir para ativar seu virtualenv.
$ fonte .venv/bin/ativar
Se você for uma plataforma Windows, você ativaria o virtualenv assim:
% .venvScriptsactivate.bat
Depois que o virtualenv for ativado, você poderá instalar as dependências necessárias.
$ pip install -r requisitos.txt
Para adicionar dependências adicionais, por exemplo, outras bibliotecas CDK, basta adicioná-las ao arquivo setup.py
e executar novamente o comando pip install -r requirements.txt
.
Neste ponto, você pode sintetizar o modelo CloudFormation para este código.
$ sintetizador cdk
Para adicionar dependências adicionais, por exemplo, outras bibliotecas CDK, basta adicioná-las ao arquivo setup.py
e executar novamente o comando pip install -r requirements.txt
.
Você precisará inicializá-lo se esta for a primeira vez que executa o cdk em uma conta e região específicas.
$ cdk inicialização
Depois de inicializado, você pode prosseguir com a implantação do cdk.
$ cdk implantar
Se esta for a primeira vez que você o implanta, o processo pode levar aproximadamente de 30 a 45 minutos para criar várias imagens Docker no ECS (Amazon Elastic Container Service). Por favor, seja paciente até que seja concluído. Depois disso, a implantação da pilha do chatbot começará, o que normalmente leva de 5 a 8 minutos.
Assim que o processo de implantação for concluído, você verá a saída do cdk no terminal e também poderá verificar o status no console do CloudFormation.
Você pode testar o agente no console AWS ou por meio do URL do aplicativo streamlit listado nas saídas do chatbot-stack no CloudFormation.
Para excluir o cdk depois de terminar de usá-lo para evitar custos futuros, você pode excluí-lo através do console ou executar o seguinte comando no terminal.
$ cdk destruir
Também pode ser necessário excluir manualmente o bucket S3 gerado pelo cdk. Certifique-se de excluir todos os recursos gerados para evitar incorrer em custos.
cdk ls
lista todas as pilhas no aplicativo
cdk synth
emite o modelo CloudFormation sintetizado
cdk deploy
implanta esta pilha em sua conta/região padrão da AWS
cdk diff
compara a pilha implantada com o estado atual
cdk docs
abre documentação do CDK
cdk destroy
dstroys uma ou mais pilhas especificadas
code # Root folder for code for this solution ├── lambdas # Root folder for all lambda functions │ ├── action-lambda # Lambda function that acts as an action for the Amazon Bedrock Agent │ ├── create-index-lambda # Lambda function that create Amazon Opensearch serverless index as Amazon Bedrock Knowlege base's vector database │ ├── invoke-lambda # Lambda function that invokes Amazon Bedrock Agent, which is called diretly from the streamlit app │ └── update-lambda # Lambda function that update/delete resources after AWS resources deployed via AWS CDK. ├── layers # Root folder for all lambda layers │ ├── boto3_layer # Boto3 layer that is shared across all lambdas │ └── opensearch_layer # opensearh layer that installs all dependencies for create Amazon Opensearch serverless index. ├── streamlit-app # Steamlit app that interacts with the Amazon Bedrock Agent └── code_stack.py # Amazon CDK stack that deploys all AWS resources
Para integrar seus dados personalizados para implantar a solução, siga estas diretrizes estruturadas adaptadas às suas necessidades:
Localize o diretório assets/knowledgebase_data_source/
.
Coloque seu conjunto de dados nesta pasta.
Acesse o arquivo cdk.json
.
Navegue até o campo context/configure/paths/knowledgebase_file_name
e atualize-o adequadamente.
Além disso, modifique o campo bedrock_instructions/knowledgebase_instruction
no arquivo cdk.json
para refletir com precisão as nuances e o contexto do seu novo conjunto de dados.
Dentro do diretório assets/data_query_data_source/
, crie um subdiretório, por exemplo, tabular_data.
Deposite seu conjunto de dados estruturado (os formatos aceitáveis incluem CSV , JSON , ORC e Parquet ) nesta subpasta recém-criada.
Se você estiver se conectando ao seu banco de dados existente , atualize a função create_sql_engine()
em code/lambda/action-lambda/build_query_engine.py
para se conectar ao seu banco de dados.
Atualize o campo context/configure/paths/athena_table_data_prefix
do arquivo cdk.json
para alinhar com o novo caminho de dados.
Revise code/lambda/action-lambda/dynamic_examples.csv
incorporando novo texto aos exemplos SQL que correspondem ao seu conjunto de dados.
Revise code/lambda/action-lambda/prompt_templates.py
para espelhar os atributos de seus novos dados tabulares.
Modifique o campo context/configure/bedrock_instructions/action_group_description
do arquivo cdk.json
para elucidar o propósito e a funcionalidade da ação lambda personalizada para seu conjunto de dados.
Reflita as novas funcionalidades de sua ação lambda no arquivo assets/agent_api_schema/artifacts_schema.json
.
No arquivo cdk.json
, na context/configure/bedrock_instructions/agent_instruction section
, forneça uma descrição abrangente da funcionalidade pretendida e da finalidade de design do Amazon Bedrock Agent, levando em consideração os dados recém-integrados.
Essas etapas foram projetadas para garantir um processo de integração contínuo e eficiente, permitindo que você implante a solução de maneira eficaz com seus dados personalizados.