QnABot sur AWS est une interface conversationnelle (chatbot) multicanal et multilingue qui répond aux questions, réponses et commentaires de vos clients. Il vous permet de déployer un chatbot entièrement fonctionnel sur plusieurs canaux, notamment le chat, la voix, les SMS et Amazon Alexa. L'environnement de gestion de contenu de la solution et l'assistant d'intégration du centre de contact vous permettent de configurer et de personnaliser un environnement qui offre les avantages suivants :
Améliorez l'expérience de vos clients en proposant des didacticiels personnalisés et une assistance aux questions et réponses avec une interaction intelligente en plusieurs parties
Réduisez les temps d’attente des centres d’appels en automatisant les flux de travail du support client
Mettez en œuvre la dernière technologie d'apprentissage automatique pour créer des interactions engageantes et semblables à celles des humains pour les chatbots.
Le déploiement de cette solution avec les paramètres par défaut déploie les composants suivants dans votre compte AWS (les composants bordés sont facultatifs).
Figure 1 : QnABot sur l'architecture AWS
Le flux de processus de haut niveau pour les composants de solution déployés avec le modèle AWS CloudFormation est le suivant :
L'administrateur déploie la solution sur son compte AWS, ouvre l'interface utilisateur de Content Designer ou le client Web Amazon Lex et utilise Amazon Cognito pour s'authentifier.
Après l'authentification, Amazon API Gateway et Amazon S3 fournissent le contenu de l'interface utilisateur de Content Designer.
L'administrateur configure les questions et réponses dans Content Designer et l'interface utilisateur envoie des requêtes à Amazon API Gateway pour enregistrer les questions et réponses.
La fonction Content Designer
AWS Lambda enregistre l'entrée dans Amazon OpenSearch Service dans un index de banque de questions. Si vous utilisez des intégrations de texte, ces requêtes passeront d'abord par un modèle LLM hébergé sur Amazon Bedrock ou Amazon SageMaker pour générer des intégrations avant d'être enregistrées dans la banque de questions sur OpenSearch. De plus, Content Designer
enregistre les paramètres de configuration par défaut et personnalisés dans AWS Systems Manager Parameter Store.
Les utilisateurs du chatbot interagissent avec Amazon Lex via l'interface utilisateur du client Web, Amazon Alexa ou Amazon Connect.
Amazon Lex transmet les demandes à la fonction Bot Fulfillment
AWS Lambda. Les utilisateurs peuvent également envoyer des requêtes à cette fonction Lambda via les appareils Amazon Alexa.
Les informations sur l'utilisateur et la discussion sont stockées dans Amazon DynamoDB pour lever l'ambiguïté des questions de suivi du contexte de questions et réponses précédent.
La fonction Bot Fulfillment
AWS Lambda prend en compte les entrées des utilisateurs et utilise Amazon Comprehend et Amazon Translate (si nécessaire) pour traduire les demandes en langue non native vers la langue maternelle sélectionnée par l'utilisateur lors du déploiement, puis recherche la réponse dans Amazon OpenSearch Service. . Si vous utilisez des fonctionnalités LLM telles que la génération de texte et l'intégration de texte, ces requêtes passeront d'abord par divers modèles LLM hébergés sur Amazon Bedrock ou Amazon SageMaker pour générer la requête de recherche et les intégrations à comparer avec celles enregistrées dans la banque de questions sur OpenSearch.
Si aucune correspondance n'est renvoyée par la banque de questions OpenSearch, la fonction Lambda de réalisation de robots transmet la demande comme suit :
un. Si un index Amazon Kendra est configuré pour le repli, la fonction Bot Fulfillment
AWS Lambda transmet la demande à Kendra si aucune correspondance n'est renvoyée par la banque de questions OpenSearch. Le LLM de génération de texte peut éventuellement être utilisé pour créer la requête de recherche et synthétiser une réponse à partir des extraits de documents renvoyés.
b. Si un ID de base de connaissances Bedrock est configuré, la fonction Bot Fulfillment
AWS Lambda transmet la demande à la base de connaissances Bedrock. La fonction Bot Fulfillment
AWS Lambda exploite l'API RetrieveAndGenerate pour récupérer les résultats pertinents pour une requête utilisateur, augmenter l'invite du modèle fondamental et renvoyer la réponse.
Les interactions des utilisateurs avec la fonction Bot Fulfillment
génèrent des données de journaux et de métriques, qui sont envoyées à Amazon Kinesis Data Firehose puis à Amazon S3 pour une analyse ultérieure des données. Les tableaux de bord OpenSearch peuvent être utilisés pour afficher l'historique d'utilisation, les déclarations enregistrées, les déclarations sans réponse, les commentaires positifs des utilisateurs et les commentaires négatifs des utilisateurs et offrent également la possibilité de créer des rapports personnalisés.
Les tableaux de bord OpenSearch peuvent être utilisés pour afficher l'historique d'utilisation, les déclarations enregistrées, les déclarations sans réponse, les commentaires positifs des utilisateurs et les commentaires négatifs des utilisateurs, et offrent également la possibilité de créer des rapports personnalisés.
Reportez-vous au guide de mise en œuvre pour obtenir des instructions détaillées sur le déploiement de QnABot dans votre compte AWS.
Alternativement, si vous souhaitez déployer QnABot personnalisé sur AWS, reportez-vous aux détails ci-dessous.
Accédez au répertoire racine de QnABot (le répertoire sera créé une fois que vous aurez cloné ce dépôt).
Commencez à partir du répertoire /source.
cd source
Installez virtualenv :
pip3 install virtualenv
Installez les modules node.js de QnABot :
npm install
Ensuite, configurez votre fichier de configuration :
npm run config
modifiez maintenant config.json
pour les paramètres suivants :
paramètre | description |
---|---|
région | la région AWS pour lancer des piles |
profil | le profil d'informations d'identification AWS à utiliser |
espace de noms | un espace de noms logique dans lequel exécuter vos modèles, tels que dev, test et/ou prod |
devEmail (obligatoire) | l'e-mail à utiliser lors de la création d'utilisateurs administrateurs lors des lancements automatisés de la pile |
Ensuite, utilisez la commande suivante pour lancer un modèle CloudFormation afin de créer le compartiment S3 à utiliser pour le code Lambda et les modèles CloudFormation. Attendez que ce modèle soit terminé (vous pouvez suivre la progression depuis la ligne de commande ou la console AWS CloudFormation)
npm run bootstrap
Enfin, utilisez la commande suivante pour lancer le modèle afin de déployer QnABot dans votre compte AWS. Une fois la pile terminée, vous pourrez vous connecter à l'interface utilisateur du concepteur (l'URL est une sortie du modèle). Un mot de passe temporaire pour l'e-mail dans votre config.json :
npm run up
Si vous disposez d'une pile existante, vous pouvez exécuter la commande suivante pour mettre à jour votre pile :
npm run update
Pour exécuter des tests unitaires, exécutez la commande suivante à partir du dossier racine :
npm test
Pour mettre à jour les instantanés de test lors de la modification du répertoire /website ou /templates, exécutez la commande suivante :
npm run test:update:snapshot
REMARQUE : L'exécution de tests de régression créera, modifiera et supprimera du contenu et des paramètres de Content Designer. Exécutez uniquement des tests de régression sur des robots hors production où la perte ou la modification du contenu et des paramètres est acceptable.
Cela exécute des tests d'intégration sur un déploiement QnABot déployé dans votre compte. Avant d'exécuter les tests, suivez les étapes ci-dessus pour créer et déployer une version ou déployer à l'aide du modèle de la page de destination de QnABot : Lancez 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
Définissez les variables d'environnement suivantes pour qu'elles pointent vers un déploiement QnA Bot en cours de test :
export CURRENT_STACK_REGION= ' <QNA BOT Region> '
export CURRENT_STACK_NAME= ' <QNA BOT Cloudformation Stack Name> '
export EMAIL= ' <admin user e-mail>
Fournissez éventuellement un nom d'utilisateur et un mot de passe avec lesquels un utilisateur administrateur pourra tester. Si ces variables d'environnement ne sont pas définies, un utilisateur « QnaAdmin » par défaut sera créé lors du test initial. Si vous souhaitez exécuter un test spécifique, fournissez un nom d'utilisateur car l'utilisateur par défaut ne sera créé que lors du test initial.
export USER= ' <QNA BOT existing admin user> '
export PASSWORD= ' <QNA BOT existing admin password> '
Fournissez éventuellement l'identifiant et la version de Bedrock Guardrails avec lesquels tester. Si ces variables d'environnement ne sont pas définies, les tests des garde-corps Bedrock dans test_knowledge_base.py et test_llm.py seront ignorés.
export BEDROCK_GUARDRAIL_IDENTIFIER= ' <Pre-configurated Guardrail Identifier in your AWS account> '
export BEDROCK_GUARDRAIL_VERSION= ' <Pre-configurated Guardrail Version in your AWS account> '
Si vous souhaitez lancer le navigateur pendant l'exécution de tests, définissez également la variable d'environnement ci-dessous :
export HEADLESS_BROWSER= ' false '
Si vous souhaitez connaître l'heure de début et de fin de chaque test :
export TIMESTAMPS= ' true '
Si vous souhaitez utiliser un profil AWS spécifique pour le test. S'il n'est pas défini, le test de régression utilisera la session AWS actuelle dans laquelle il s'exécute.
export TEST_ACCOUNT_PROFILE_NAMES= ' <AWS profile name> '
cd functional
pytest -v
Les utilisateurs expérimentés souhaitant publier un QnABot personnalisé peuvent utiliser les instructions suivantes pour publier les artefacts de déploiement disponibles pour les utilisateurs externes.
Créez un compartiment S3 pour héberger les modèles (voir $DIST_OUTPUT_BUCKET ci-dessous). Vous aurez également besoin de compartiments régionaux pour chaque région à partir de laquelle vos utilisateurs seront déployés. Les compartiments régionaux doivent être nommés $DIST_OUTPUT_BUCKET-$AWS_REGION. Vous devrez fournir les autorisations d'accès appropriées aux compartiments pour vos utilisateurs ciblés. Veuillez vous référer aux liens ci-dessous pour connaître les meilleures pratiques en matière de sécurité des buckets et de contrôle d'accès :
REMARQUE : La gestion des versions doit être activée pour tous les compartiments, sinon le déploiement de la pile échouera.
Définissez les variables d'environnement suivantes pour votre QnABot personnalisé :
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 " )
Les variables ci-dessus détermineront le chemin de l'URL du bucket à partir duquel votre bot sera hébergé. Le tableau AWS_REGIONS est une liste de toutes les régions prises en charge par QnABot. La liste peut être modifiée si nécessaire si la version de votre bot ne sera pas déployée dans certaines régions.
Exécutez les commandes suivantes pour importer la version locale actuelle dans le bucket spécifié :
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
Créez des compartiments S3 pour chaque région s'ils n'existent pas déjà. Ces compartiments devront être configurés pour un usage public :
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
Exécutez la commande ci-dessous pour chaque région :
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
Le modèle peut être déployé à partir de l'URL suivante pour toutes les régions :
echo https:// $DIST_OUTPUT_BUCKET .s3.amazonaws.com/ $SOLUTION_NAME / $VERSION /qnabot-on-aws-main.template
Afin d'exécuter Webpack en mode développement, assurez-vous d'avoir les éléments suivants
Accédez au répertoire racine de QnABot (le répertoire sera créé une fois que vous aurez cloné ce dépôt).
npm install
Ensuite, attribuez la variable d'environnement ASSET_BUCKET_NAME
située dans package.json dans le dev mode
du script npm. Il s'agit du nom du compartiment dans lequel QnABot charge les actifs ./website et est généralement nommé <stack-name>-bucket-<randomly-generated-chars>.
Une fois configuré correctement, exécutez
npm run dev-mode
Cela devrait définir Webpack en mode développement et télécharger les actifs dans ./website/build vers ASSET_BUCKET_NAME
. Cela surveillera également tout changement dans ./website et rechargera les actifs dans votre compartiment si les actifs changent.
Actuellement, les seuls navigateurs pris en charge sont :
Reportez-vous au fichier LICENSE.txt pour plus de détails.
Reportez-vous au fichier CHANGELOG.md pour plus de détails sur les nouvelles fonctionnalités de chaque version.
Un atelier est également disponible pour vous guider à travers les fonctionnalités de QnABot.
Au fur et à mesure que QnABot évolue au fil des années, il utilise divers services et fonctionnalités qui peuvent être pris en charge ou non. Cette section sert de référence aux versions de solution déployables ainsi que des liens vers leurs modèles Public et VPC CloudFormation.
Remarque : Les versions de solution déployables font référence à la possibilité de déployer la version de QnABot dans leurs comptes AWS. Les versions activement prises en charge pour QnABot ne sont disponibles que pour la dernière version de QnABot.
Nous ne recommandons pas d'utiliser cette version en raison d'un problème potentiel avec la fonctionnalité testall qui peut introduire un nombre élevé de versions stockées dans le compartiment testall S3 lorsque Content Designer n'a pas de questions-réponses. Veuillez utiliser la dernière version disponible.
Nous ne recommandons pas d'utiliser cette version en raison d'un problème potentiel avec la fonctionnalité testall qui peut introduire un nombre élevé de versions stockées dans le compartiment testall S3 lorsque Content Designer n'a pas de questions-réponses. Veuillez utiliser la dernière version disponible.
v5.5.0+
car Vue 2 atteint la fin de vie (EOL), ce qui affecte toutes les versions précédentes de QnABot. Pour plus d’informations, voir ci-dessous.v5.4.X
vers des versions ultérieures, si vous effectuez une mise à niveau à partir d'un déploiement avec LMApi défini sur SAGEMAKER, définissez cette valeur sur DÉSACTIVÉ avant la mise à niveau. Après la mise à niveau, renvoyez cette valeur à SAGEMAKER.Nous ne recommandons pas d'utiliser cette version en raison d'un problème potentiel avec la fonctionnalité testall qui peut introduire un nombre élevé de versions stockées dans le compartiment testall S3 lorsque Content Designer n'a pas de questions-réponses. Veuillez utiliser la dernière version disponible.
Nous ne recommandons pas d'utiliser cette version en raison d'un problème potentiel avec la fonctionnalité testall qui peut introduire un nombre élevé de versions stockées dans le compartiment testall S3 lorsque Content Designer n'a pas de questions-réponses. Veuillez utiliser la dernière version disponible.
Nous ne recommandons pas d'utiliser cette version en raison d'un problème potentiel avec la fonctionnalité testall qui peut introduire un nombre élevé de versions stockées dans le compartiment testall S3. Veuillez utiliser la dernière version disponible.
Nous ne recommandons pas d'utiliser cette version en raison d'un problème potentiel avec la fonctionnalité testall qui peut introduire un nombre élevé de versions stockées dans le compartiment testall S3. Veuillez utiliser la dernière version disponible.
v5.2.1
ne sont plus déployables en raison des dépréciations de Lambda Runtime. Ces informations sont fournies en l'état et vous êtes fortement encouragés à vérifier le calendrier de dépréciation et la fin de vie des frameworks utilisés dans la solution.Pour QnABot, la raison la plus courante est due au fait que les environnements d'exécution AWS Lambda sont obsolètes. Lorsqu'un environnement d'exécution Lambda a été marqué comme obsolète, les clients ne peuvent plus créer de nouvelles fonctions Lambda dans leur compte AWS. Cela signifie que les anciennes versions de nos solutions qui utilisent ces environnements d'exécution ne pourront pas être déployées. Il est donc difficile pour la communauté de fournir une assistance, car nous ne sommes pas en mesure de déployer un environnement similaire pour enquêter sur les problèmes et reproduire les rapports de bogues.
Si un déploiement existant fonctionne actuellement pour vous, rien ne vous oblige à le mettre à jour. Cependant, il est fortement recommandé d'élaborer un plan pour tester et migrer les déploiements de production vers une version prise en charge. Plus un déploiement s'éloigne du latest
plus il risque de connaître une instabilité (en particulier en ce qui concerne le déploiement).
Et pour ceux qui souhaitent démarrer avec la solution pour la première fois, il est toujours recommandé d’utiliser la dernière version. Il s'agit de la version la plus sécurisée, la plus stable et la plus riche en fonctionnalités de QnABot !
Dans la plupart des cas, une simple opération Mettre à jour la pile devrait vous permettre de migrer votre instance vers une version plus récente tout en conservant vos données sur le nouveau déploiement.
Remarque : Pour ceux qui effectuent une mise à niveau depuis
v5.4.X
vers des versions ultérieures, si vous effectuez une mise à niveau à partir d'un déploiement avec LMApi défini sur SAGEMAKER, définissez cette valeur sur DÉSACTIVÉ avant la mise à niveau. Après la mise à niveau, renvoyez cette valeur à SAGEMAKER.
L'équipe recommande fortement que toute mise à niveau (en particulier entre les versions mineures/majeures) soit d'abord testée sur une instance hors production pour vérifier toute régression. Ceci est essentiel si vous avez apporté des modifications personnalisées à votre déploiement, si vous l'intégrez à des services externes ou si vous passez d'une version à l'autre.
Voici quelques précautions supplémentaires que vous pouvez prendre :
Export Settings
en bas de la page des paramètres)Cette solution collecte des métriques opérationnelles anonymisées pour aider AWS à améliorer la qualité et les fonctionnalités de la solution. Pour plus d’informations, notamment sur la façon de désactiver cette fonctionnalité, veuillez consulter le guide de mise en œuvre.
Copyright Amazon.com, Inc. ou ses sociétés affiliées. Tous droits réservés.
Sous licence Apache, version 2.0 (la « Licence » ); vous ne pouvez pas utiliser ce fichier sauf en conformité avec la licence. Vous pouvez obtenir une copie de la licence à
http://www.apache.org/licenses/LICENSE-2.0
Sauf disposition contraire de la loi applicable ou accord écrit, le logiciel distribué sous la licence est distribué « EN L'ÉTAT », SANS GARANTIE OU CONDITION D'AUCUNE SORTE, expresse ou implicite. Consultez la licence pour connaître la langue spécifique régissant les autorisations et les limitations en vertu de la licence.