| Construtor de aplicativos de IA generativa na AWS | ? Solicitação de recurso | ? Relatório de erros | Guia de implementação |
OBSERVAÇÃO:
A solução Generative AI Application Builder na AWS (GAAB) fornece um painel de gerenciamento baseado na web para implantar casos de uso personalizáveis de Generative AI (Gen AI). Este painel de implantação permite que os clientes implantem, experimentem e comparem diferentes combinações de casos de uso de Large Language Model (LLM). Depois que os clientes configurarem e otimizarem com sucesso seu caso de uso, eles poderão levar sua implantação para produção e integrá-la em seus aplicativos.
O Generative AI Application Builder é publicado sob uma licença Apache 2.0 e é direcionado a usuários iniciantes e experientes que desejam experimentar e produzir diferentes casos de uso de Gen AI. A solução usa software de código aberto (OSS) LangChain para configurar conexões com sua escolha de Large Language Models (LLMs) para diferentes casos de uso. A primeira versão do GAAB permite que os usuários implantem casos de uso de chat que permitem consultar os dados corporativos dos usuários em uma interface de usuário (IU) estilo chatbot, juntamente com uma API para suportar implementações personalizadas do usuário final.
Algumas das características do GAAB são:
Para obter um guia detalhado de implementação da solução, consulte The Generative AI Application Builder na AWS
Existem três personas de usuário exclusivas mencionadas no passo a passo da solução abaixo:
OBSERVAÇÃO:
Quando o usuário do DevOps implanta o Deployment Dashboard, os seguintes componentes são implantados na conta da AWS:
Note: Although the Deployment dashboard can be launched in most AWS regions, the deployed use cases have some restrictions based on service availability. See Supported AWS Regions in the Implementation Guide for more details.
Depois que o Painel de Implantação for implantado, o usuário administrador poderá implantar diversas pilhas de casos de uso. Quando uma pilha de casos de uso é implantada pelo usuário administrador, os seguintes componentes são implantados na conta da AWS:
OBSERVAÇÃO:
Existem duas opções de implantação em sua conta AWS:
cdk deploy
A seguir estão os pré-requisitos para construir e implantar localmente:
ensurepip
e pip
; entretanto, se estiver executando em um ambiente sem esses pacotes, você precisará instalá-los manualmente (por exemplo, uma imagem mínima do docker). Consulte o guia de instalação do pip para obter detalhes. Observação: configure a AWS CLI com suas credenciais da AWS ou exporte-as no ambiente do terminal CLI. Caso as credenciais sejam inválidas ou expiradas, a execução de cdk deploy
produz um erro.
Além disso, se você não executou cdk bootstrap
nesta conta e região, siga as instruções aqui para executar o cdk bootstrap como um processo único antes de prosseguir com as etapas abaixo.
Após clonar o repositório do GitHub, conclua as seguintes etapas:
OBSERVAÇÃO:
cdk-asset-bucket
em source/infrastructure/cdk.json
. O valor desta propriedade deve ser o nome do bucket criado pelo processo cdk bootstrap
. A menos que um nome de bucket seja configurado, o processo cdk bootstrap
cria um bucket no seguinte formato: cdk-hnb659fds-assets--
(onde é o ID da conta da AWS onde a solução está sendo implantada o específico). O repositório atualmente tem o valor definido como a seguir: "cdk-asset-bucket": "cdk-hnb659fds-assets-123456789012-us-east-1"
cd /source/infrastructure
npm install
npm run build
cdk synth
cdk deploy DeploymentPlatformStack --parameters AdminUserEmail=
Observação: como cdk deploy
é executado com um nome de pilha, ele não sintetiza as outras pilhas do CloudFormation na pasta de infraestrutura. Para garantir que todas as pilhas sejam sintetizadas com base nas alterações do código de infraestrutura, certifique-se de usar cdk synth
. Para obter uma lista completa de comandos cdk que podem ser executados, consulte Comandos do Toolkit
Para que o painel de implantação implante casos de uso de bate-papo LLM, você também precisaria preparar ativos CDK sintetizados (como lambdas, modelos CloudFormation sintetizados, etc.) do diretório source/infrastructure/cdk.out
para um bucket S3 configurado em sua conta de onde esses recursos serão retirados no momento da implantação. Para facilitar a preparação desses ativos, você pode usar o script source/stage-assets.sh
. Este script deve ser executado no diretório source
.
cd /source
./stage-assets.sh
Quando executado, o script fica assim:
>>> ./stage-assets.sh
This script should be run from the 'source' folder
The region to upload CDK artifacts to (default:us-east-1)?
>>> us-west-2
>>> All assets will be uploaded to cdk-hnb659fds-assets-123456789-us-west-2
>>> Do you want to proceed? (y/n) y
Você deve fornecer o nome completo da região como a primeira entrada do script, conforme mostrado no exemplo acima.
Observação: os ativos devem ser testados sempre que houver uma alteração na base de código para ter os ativos testados mais atualizados. Também é recomendado executar cdk synth
antes da preparação.
Consulte a seção Criando uma compilação personalizada
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Config
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── buildspec.yml
├── deployment
│ ├── build-open-source-dist.sh
│ ├── build-s3-dist.sh
│ ├── cdk-solution-helper
│ ├── clean-for-scan.sh
│ ├── get-cdk-version.js
│ └── manifest.yaml
| ├── run-unit-tests.sh [shell script that can run unit tests for the entire project]
├── pyproject.toml
├── pytest.ini
├── sonar-project.properties
└── source
├── images
├── infrastructure [CDK infrastructure]
├── lambda [Lambda functions for the application]
├── pre-build-lambda-layers.sh [pre-builds lambda layers for the project]
├── scripts [standalone utility scripts]
├── stage-assets.sh
├── test
├── ui-chat [Web App project for chat UI]
└── ui-deployment [Web App project for deployment dashboard UI]
└── docs
O projeto fornece uma pasta de documentos que dá acesso a exemplos de entradas do SageMaker. Como os modelos do SageMaker podem receber e gerar uma variedade de esquemas de entrada e saída, respectivamente, a solução solicita esses valores dos usuários para permitir a invocação correta do modelo. Isso permite que a solução suporte um amplo conjunto de modelos SageMaker.
Os esquemas de entrada são essencialmente a carga útil do seu modelo, com espaços reservados para os valores reais. Os espaços reservados permitem a substituição dos valores reais do modelo em tempo de execução e são representados por uma palavra-chave entre colchetes angulares como: <
. Observe que <
e <
são espaços reservados para o prompt do modelo e temperaturas, respectivamente.
A saída JSONPath do modelo fornece à solução um caminho para recuperar a resposta textual do LLM a partir da resposta do modelo.
Consulte sempre a documentação do modelo e os exemplos de notebook Jupyter do SageMaker JumpStart para ver as cargas úteis do modelo mais atualizadas e os parâmetros suportados.
Execute o seguinte comando:
git clone https://github.com/aws-solutions/
cd /source/infrastructure
npm install
Observação: para executar os testes de unidade, o docker deve estar instalado e em execução e credenciais válidas da AWS devem ser configuradas.
cd /deployment
chmod +x ./run-unit-tests.sh
./run-unit-tests.sh
export DIST_OUTPUT_BUCKET=my-bucket-name
export VERSION=my-version
cd /deployment
chmod +x ./build-s3-dist.sh
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION $CF_TEMPLATE_BUCKET_NAME
Detalhes do parâmetro:
$DIST_OUTPUT_BUCKET - This is the global name of the distribution. For the bucket name, the AWS Region is added to the global name (example: 'my-bucket-name-us-east-1') to create a regional bucket. The lambda
artifacts should be uploaded to the regional buckets for the CloudFormation template to pick it up for deployment.
$SOLUTION_NAME - The name of This solution (example: generative-ai-application-builder-on-aws)
$VERSION - The version number of the change
$CF_TEMPLATE_BUCKET_NAME - The name of the S3 bucket where the CloudFormation templates should be uploaded
Ao criar e usar buckets, recomendamos que você:
Observação: você deve ter a AWS CLI instalada.
aws s3 cp ./global-s3-assets/ s3://my-bucket-name-/generative-ai-application-builder-on-aws// --recursive --acl bucket-owner-full-control --profile aws-cred-profile-name
aws s3 cp ./regional-s3-assets/ s3://my-bucket-name-/generative-ai-application-builder-on-aws// --recursive --acl bucket-owner-full-control --profile aws-cred-profile-name
A solução inclui dois aplicativos da web separados baseados em React: a UI do Deployment Dashboard e a UI do Chat. Ambas as interfaces de usuário são construídas usando Vite, uma ferramenta de construção moderna e rápida para projetos web modernos.
Abra um terminal
Navegue até o diretório de origem
source
na raiz do projeto: cd /source
Buscar e atualizar configuração de tempo de execução
Execute o script setup_local_dev_server.py
fornecido com os argumentos apropriados:
python setup_local_dev_server.py --ui-project-type --website
por ui-chat
ou ui-deployment
dependendo de qual projeto de UI você deseja configurar.
pela URL do site onde a solução está implementada (por exemplo, https://example.com
).O script buscará a configuração de tempo de execução usada para configurar o AWS Amplify, que o projeto usa. Ele também atualizará o cliente do aplicativo Cognito adicionando o endereço localhost à lista callbackurls e logouturls, para que funcione com o domínio hospedado pelo Cognito.
Por exemplo, para atualizar o projeto UI Chat:
python setup_local_dev_server.py --ui-project-type ui-chat --website https://example.com
ou
python setup_local_dev_server.py -t ui-chat -w https://example.com
Para atualizar o projeto de implantação da UI:
python setup_local_dev_server.py --ui-project-type ui-deployment --website https://example.com
ou
python setup_local_dev_server.py -t ui-deployment -w https://example.com
Navegue até o diretório do projeto de UI
Mude para o diretório do projeto de UI com o qual deseja trabalhar:
cd ui-chat
ou
cd ui-deployment
Instalar dependências
Instale as dependências necessárias do Node.js executando o seguinte comando no diretório do projeto:
npm install
Inicie o servidor de desenvolvimento local
No diretório do projeto, execute o seguinte comando para iniciar o servidor de desenvolvimento Vite local:
npm start
O servidor de desenvolvimento da UI do Deployment Dashboard iniciará em http://localhost:5177
e o servidor de desenvolvimento da UI do Chat iniciará em http://localhost:5178
.
Se essas portas já estiverem em uso em sua máquina, você poderá customizar o script setup_local_dev_server.py
para usar portas diferentes.
Com o ambiente de desenvolvimento local configurado, agora você pode personalizar os componentes React e a funcionalidade dos projetos de UI de acordo com seus requisitos. O código-fonte da UI do Deployment Dashboard está localizado no diretório source/ui-deployment
e o código-fonte da UI do Chat está localizado no diretório source/ui-chat
.
Siga o fluxo de trabalho de desenvolvimento padrão do React para fazer alterações no código e use o servidor de desenvolvimento Vite local para visualizar suas alterações em tempo real.
Quando estiver pronto para implantar seus projetos de UI personalizados, siga as instruções no arquivo README principal para criar e implantar a solução usando o AWS CDK.
Esta solução coleta métricas operacionais anônimas para ajudar a AWS a melhorar a qualidade e os recursos da solução. Para obter mais informações, incluindo como desabilitar esse recurso, consulte o guia de implementação.
Direitos autorais Amazon.com, Inc. ou suas afiliadas. Todos os direitos reservados.
Licenciado sob a Licença Apache, Versão 2.0 (a "Licença"); você não pode usar este arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em
http://www.apache.org/licenses/LICENSE-2.0
A menos que exigido pela lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído "COMO ESTÁ", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a Licença para saber o idioma específico que rege as permissões e limitações da Licença.
Um script está incluído para migrar casos de uso criados pela v1.X para uma implantação v2.X atualizada. Veja a documentação