QnABot na AWS é uma interface conversacional multicanal e multilíngue (chatbot) que responde às perguntas, respostas e feedback do seu cliente. Ele permite que você implante um chatbot totalmente funcional em vários canais, incluindo chat, voz, SMS e Amazon Alexa. O ambiente de gerenciamento de conteúdo da solução e o assistente de integração do contact center permitem configurar e personalizar um ambiente que oferece os seguintes benefícios:
Melhore a experiência do seu cliente fornecendo tutoriais personalizados e suporte para perguntas e respostas com interação inteligente de várias partes
Reduza os tempos de espera do call center automatizando os fluxos de trabalho de suporte ao cliente
Implemente a mais recente tecnologia de aprendizado de máquina para criar interações envolventes e humanas para chatbots
A implantação desta solução com os parâmetros padrão implanta os seguintes componentes em sua conta AWS (componentes com borda são opcionais).
Figura 1: QnABot na arquitetura AWS
O fluxo do processo de alto nível para os componentes da solução implantados com o modelo AWS CloudFormation é o seguinte:
O administrador implanta a solução em sua conta da AWS, abre a UI do Content Designer ou o cliente web do Amazon Lex e usa o Amazon Cognito para autenticar.
Após a autenticação, o Amazon API Gateway e o Amazon S3 entregam o conteúdo da IU do Content Designer.
O administrador configura perguntas e respostas no Content Designer e a IU envia solicitações ao Amazon API Gateway para salvar as perguntas e respostas.
A função AWS Lambda Content Designer
salva a entrada no Amazon OpenSearch Service em um índice de banco de perguntas. Se usar embeddings de texto, essas solicitações passarão primeiro por um modelo LLM hospedado no Amazon Bedrock ou Amazon SageMaker para gerar embeddings antes de serem salvas no banco de perguntas no OpenSearch. Além disso, o Content Designer
salva configurações padrão e personalizadas no AWS Systems Manager Parameter Store.
Os usuários do chatbot interagem com o Amazon Lex por meio da interface do cliente web, Amazon Alexa ou Amazon Connect.
O Amazon Lex encaminha solicitações para a função Bot Fulfillment
do AWS Lambda. Os usuários também podem enviar solicitações para esta função Lambda por meio de dispositivos Amazon Alexa.
As informações do usuário e do chat são armazenadas no Amazon DynamoDB para eliminar a ambiguidade das perguntas de acompanhamento do contexto de perguntas e respostas anteriores.
A função Bot Fulfillment
AWS Lambda recebe a entrada dos usuários e usa o Amazon Comprehend e o Amazon Translate (se necessário) para traduzir solicitações de idioma não nativo para o idioma nativo selecionado pelo usuário durante a implantação e, em seguida, procura a resposta no Amazon OpenSearch Service . Se estiver usando recursos LLM, como geração de texto e incorporações de texto, essas solicitações passarão primeiro por vários modelos LLM hospedados no Amazon Bedrock ou Amazon SageMaker para gerar a consulta de pesquisa e embeddings para comparar com aqueles salvos no banco de perguntas no OpenSearch.
Se nenhuma correspondência for retornada do banco de perguntas do OpenSearch, a função Lambda de atendimento do bot encaminhará a solicitação da seguinte maneira:
um. Se um índice do Amazon Kendra estiver configurado para fallback, a função Bot Fulfillment
do AWS Lambda encaminhará a solicitação para Kendra se nenhuma correspondência for retornada do banco de perguntas do OpenSearch. O LLM de geração de texto pode ser usado opcionalmente para criar a consulta de pesquisa e sintetizar uma resposta a partir dos trechos do documento retornado.
b. Se um ID da base de conhecimento Bedrock estiver configurado, a função Bot Fulfillment
AWS Lambda encaminhará a solicitação para a base de conhecimento Bedrock. A função Bot Fulfillment
do AWS Lambda aproveita a API RetrieveAndGenerate para buscar os resultados relevantes para uma consulta do usuário, aumentar o prompt do modelo fundamental e retornar a resposta.
As interações do usuário com a função Bot Fulfillment
geram dados de logs e métricas, que são enviados ao Amazon Kinesis Data Firehose e depois ao Amazon S3 para análise de dados posterior. Os painéis OpenSearch podem ser usados para visualizar o histórico de uso, declarações registradas, declarações sem ocorrências, feedback positivo e negativo do usuário e também fornece a capacidade de criar relatórios personalizados.
Os painéis do OpenSearch podem ser usados para visualizar o histórico de uso, declarações registradas, declarações sem ocorrências, feedback positivo e negativo do usuário, além de fornecer a capacidade de criar relatórios personalizados.
Consulte o guia de implementação para obter instruções detalhadas sobre a implantação do QnABot em sua conta AWS.
Alternativamente, se você deseja implantar QnABot de forma personalizada na AWS, consulte os detalhes abaixo.
Navegue até o diretório raiz do QnABot (o diretório será criado assim que você clonar este repositório).
Comece no diretório /source.
cd source
Instale o virtualenv:
pip3 install virtualenv
Instale os módulos node.js do QnABot:
npm install
Em seguida, configure seu arquivo de configuração:
npm run config
agora edite config.json
para os seguintes parâmetros:
parâmetro | descrição |
---|---|
região | a região da AWS para lançar pilhas em |
perfil | o perfil de credencial da AWS a ser usado |
espaço para nome | um espaço de nome lógico para executar seus modelos, como dev, test e/ou prod |
devEmail(obrigatório) | o e-mail a ser usado ao criar usuários administradores em lançamentos automatizados de pilha |
Em seguida, use o comando a seguir para iniciar um modelo CloudFormation para criar o bucket S3 a ser usado para código Lambda e modelos CloudFormation. Aguarde a conclusão deste modelo (você pode observar o progresso na linha de comando ou no console do AWS CloudFormation)
npm run bootstrap
Por fim, use o seguinte comando para iniciar o modelo para implantar o QnABot em sua conta AWS. Quando a pilha for concluída, você poderá fazer login na UI do Designer (o URL é uma saída do modelo). Uma senha temporária para o e-mail em seu config.json:
npm run up
Se você tiver uma pilha existente, poderá executar o seguinte para atualizá-la:
npm run update
Para executar testes de unidade, execute o seguinte comando na pasta raiz:
npm test
Para atualizar os instantâneos de teste ao modificar o diretório /website ou /templates, execute o seguinte comando:
npm run test:update:snapshot
NOTA: A execução de testes de regressão criará, modificará e excluirá conteúdo e configurações do Designer de conteúdo. Execute testes de regressão apenas em bots que não sejam de produção, onde a perda ou modificação de conteúdo e configurações for aceitável.
Isso executa testes de integração em uma implantação QnABot implantada em sua conta. Antes de executar os testes, siga as etapas acima para construir e implementar uma versão ou implementar usando o modelo da página inicial do QnABot: Inicie o QnABot.
cd .nightswatch
brew install python@3
brew install geckodriver
brew install --cask chromedriver
pip3 install virtualenv
python3 -m virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt
Defina as seguintes variáveis de ambiente para apontar para uma implantação do QnA Bot em teste:
export CURRENT_STACK_REGION= ' <QNA BOT Region> '
export CURRENT_STACK_NAME= ' <QNA BOT Cloudformation Stack Name> '
export EMAIL= ' <admin user e-mail>
Opcionalmente, forneça um nome de usuário e uma senha para um usuário administrador testar. Se estas variáveis de ambiente não forem definidas, será criado um utilizador 'QnaAdmin' predefinido durante o teste inicial. Se você deseja executar um teste específico, forneça um nome de usuário, pois o usuário padrão só será criado no teste inicial.
export USER= ' <QNA BOT existing admin user> '
export PASSWORD= ' <QNA BOT existing admin password> '
Opcionalmente, forneça o identificador e a versão do Bedrock Guardrails para testar. Se essas variáveis de ambiente não forem definidas, o teste para Bedrock Guardrails em test_knowledge_base.py e test_llm.py será ignorado.
export BEDROCK_GUARDRAIL_IDENTIFIER= ' <Pre-configurated Guardrail Identifier in your AWS account> '
export BEDROCK_GUARDRAIL_VERSION= ' <Pre-configurated Guardrail Version in your AWS account> '
Se você deseja iniciar o navegador durante a execução de testes, defina também a variável env abaixo:
export HEADLESS_BROWSER= ' false '
Se você quiser ver o horário de início e término de cada teste:
export TIMESTAMPS= ' true '
Se você quiser usar um perfil específico da AWS para o teste. Se não for definido, o teste de regressão usará a sessão atual da AWS em que está sendo executado.
export TEST_ACCOUNT_PROFILE_NAMES= ' <AWS profile name> '
cd functional
pytest -v
Os usuários avançados interessados em lançar um QnABot personalizado podem usar as instruções a seguir para publicar os artefatos de implantação disponíveis para usuários externos.
Crie um bucket S3 para hospedar os modelos (consulte $DIST_OUTPUT_BUCKET abaixo). Você também precisará de buckets regionais para cada região a partir da qual seus usuários irão implantar. Os buckets regionais devem ser nomeados $DIST_OUTPUT_BUCKET-$AWS_REGION. Você precisará fornecer permissões de acesso apropriadas aos buckets para seus usuários-alvo. Consulte os links abaixo para conhecer as práticas recomendadas de segurança de buckets e controle de acesso:
NOTA: Todos os buckets devem ter o controle de versão habilitado, caso contrário, a implantação da pilha falhará.
Defina as seguintes variáveis de ambiente para seu QnABot customizado:
export DIST_OUTPUT_BUCKET= ' <name of the bucket to upload artifacts to> '
export SOLUTION_NAME= ' <name of your custom bot> '
export VERSION= ' <bot version> '
export AWS_REGIONS=( " us-east-1 " " us-west-2 " " ap-southeast-1 " " ap-southeast-2 " " ca-central-1 " " eu-west-1 " " ap-northeast-1 " " eu-central-1 " " eu-west-2 " " ap-northeast-2 " )
As variáveis acima determinarão o caminho do URL do bucket onde seu bot será hospedado. A matriz AWS_REGIONS é uma lista de todas as regiões suportadas pelo QnABot. A lista pode ser modificada conforme necessário se a versão do seu bot não for implantada em determinadas regiões.
Execute os seguintes comandos para fazer upload da versão local atual para o bucket especificado:
cd deployment
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION
aws s3 cp global-s3-assets/ s3:// $DIST_OUTPUT_BUCKET / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
Crie buckets S3 para cada região, caso eles ainda não existam. Esses buckets precisarão ser configurados para uso público:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
echo " Bucket exists: s3:// $DIST_OUTPUT_BUCKET - $region "
else
aws s3api create-bucket --bucket " $DIST_OUTPUT_BUCKET - $region "
echo " Created bucket: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
Execute o comando abaixo para cada região:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
aws s3 cp regional-s3-assets/ s3:// $DIST_OUTPUT_BUCKET - $region / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
else
echo " Bucket not found: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
O modelo pode ser implantado a partir do seguinte URL para todas as regiões:
echo https:// $DIST_OUTPUT_BUCKET .s3.amazonaws.com/ $SOLUTION_NAME / $VERSION /qnabot-on-aws-main.template
Para executar o Webpack no modo de desenvolvimento, certifique-se de ter o seguinte
Navegue até o diretório raiz do QnABot (o diretório será criado assim que você clonar este repositório).
npm install
Em seguida, atribua a variável de ambiente ASSET_BUCKET_NAME
localizada em package.json no script npm dev mode
. Este é o nome do bucket que o QnABot carrega ./website assets e geralmente é denominado <stack-name>-bucket-<randomly-generated-chars>.
Depois de configurado corretamente, execute
npm run dev-mode
Isso deve definir o Webpack para o modo de desenvolvimento e fazer upload de ativos em ./website/build para ASSET_BUCKET_NAME
. Isso também observará quaisquer alterações em ./website e recarregará os ativos em seu bucket se os ativos mudarem.
Atualmente os únicos navegadores suportados são:
Consulte o arquivo LICENSE.txt para obter detalhes.
Consulte o arquivo CHANGELOG.md para obter detalhes dos novos recursos em cada versão.
Também está disponível um workshop que orienta você nos recursos do QnABot.
À medida que o QnABot evolui ao longo dos anos, ele utiliza vários serviços e funcionalidades que podem entrar e sair do suporte. Esta seção serve como referência para as versões da solução implantável, juntamente com links para seus modelos públicos e VPC CloudFormation.
Observação: versões de solução implantáveis referem-se à capacidade de implantar a versão do QnABot em suas contas da AWS. As versões com suporte ativo do QnABot estão disponíveis apenas para a versão mais recente do QnABot.
Não recomendamos o uso desta versão devido a um possível problema com a funcionalidade testall, que pode introduzir um grande número de versões armazenadas no bucket testall S3 quando o Content Designer não tem perguntas e respostas. Utilize a versão mais recente disponível.
Não recomendamos o uso desta versão devido a um possível problema com a funcionalidade testall, que pode introduzir um grande número de versões armazenadas no bucket testall S3 quando o Content Designer não tem perguntas e respostas. Utilize a versão mais recente disponível.
v5.5.0+
devido ao Vue 2 atingir o fim da vida útil (EOL), o que afeta todas as versões anteriores do QnABot. Para mais informações, veja abaixo.v5.4.X
para versões posteriores, se você estiver atualizando de uma implementação com LLMApi definido como SAGEMAKER, defina esse valor como DISABLED antes de atualizar. Após a atualização, retorne este valor ao SAGEMAKER.Não recomendamos o uso desta versão devido a um possível problema com a funcionalidade testall, que pode introduzir um grande número de versões armazenadas no bucket testall S3 quando o Content Designer não tem perguntas e respostas. Utilize a versão mais recente disponível.
Não recomendamos o uso desta versão devido a um possível problema com a funcionalidade testall, que pode introduzir um grande número de versões armazenadas no bucket testall S3 quando o Content Designer não tem perguntas e respostas. Utilize a versão mais recente disponível.
Não recomendamos o uso desta versão devido a um possível problema com a funcionalidade testall que pode introduzir um grande número de versões armazenadas no bucket testall S3. Utilize a versão mais recente disponível.
Não recomendamos o uso desta versão devido a um possível problema com a funcionalidade testall que pode introduzir um grande número de versões armazenadas no bucket testall S3. Utilize a versão mais recente disponível.
v5.2.1
não podem mais ser implantadas devido à descontinuação do Lambda Runtime. Essas informações são fornecidas como estão e recomendamos fortemente que você verifique o calendário de descontinuação e o fim da vida útil das estruturas usadas na solução.Para QnABot, o motivo mais comum é devido à obsolescência dos tempos de execução do AWS Lambda. Quando um tempo de execução do Lambda for marcado como obsoleto, os clientes não poderão mais criar novas funções do Lambda em suas contas da AWS. Isso significa que versões mais antigas de nossas soluções que utilizam esses tempos de execução não serão implantadas. Isso torna difícil para a comunidade fornecer suporte, pois não podemos implantar um ambiente semelhante para investigar problemas e reproduzir relatórios de bugs.
Se você já tem uma implantação funcionando para você, não há nada que exija que você atualize. No entanto, é altamente recomendável que você crie um plano para testar e migrar implantações de produção para uma versão compatível. Quanto mais longe uma implantação fica do latest
maior o risco de sofrer instabilidade (especialmente no que diz respeito à implantação).
E para quem quer começar a usar a solução pela primeira vez, é sempre recomendável usar a versão mais recente. É a versão mais segura, estável e rica em recursos do QnABot!
Na maioria dos casos, uma operação simples de atualização da pilha deve permitir que você migre sua instância para uma versão mais recente, mantendo seus dados na nova implantação.
Nota: Para aqueles que estão atualizando da
v5.4.X
para versões posteriores, se você estiver atualizando de uma implementação com LLMApi definido como SAGEMAKER, defina esse valor como DISABLED antes de atualizar. Após a atualização, retorne este valor ao SAGEMAKER.
A equipe recomenda fortemente que quaisquer atualizações (especialmente entre versões secundárias/principais) sejam primeiro testadas em uma instância que não seja de produção para verificar quaisquer regressões. Isso é fundamental se você tiver feito modificações personalizadas em sua implantação, integrado com serviços externos ou estiver alternando entre diversas versões.
Algumas precauções adicionais que você pode tomar são:
Export Settings
na parte inferior da página de configurações)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.