Agence web » Actualités du digital » Comment utiliser AWS Lex pour créer des chatbots interactifs

Comment utiliser AWS Lex pour créer des chatbots interactifs

AWS Lex est le service d'Amazon pour créer vos propres chatbots. Construit à l'aide de la même technologie d'apprentissage automatique qu'Alexa, Lex peut reconnaître l'intention de l'utilisateur, rechercher des données supplémentaires, puis répondre aux demandes des utilisateurs à l'aide de Lambda pour l'exécution de code.

Qu'est-ce qu'AWS Lex?

AWS Lex est composé de nombreux services d'apprentissage automatique, dont la plupart sont disponibles en tant que service AWS autonome.

La première étape est la reconnaissance vocale, c'est-à-dire la conversion de mots parlés en texte qu'une machine peut comprendre plus facilement. Le service Transcribe d'AWS le fait très bien, bien qu'il soit mieux adapté aux applications non temps réel, telles que le sous-titrage de vidéos ou la transcription des journaux d'appels audio. Cette étape n'est pas nécessaire si vous créez un chatbot textuel, mais elle est cruciale pour des bots comme Alexa et Siri.

Cependant, les machines ne comprennent pas automatiquement le langage humain, donc extraire les bits utiles d'une phrase donnée est essentiel pour que le chatbot réponde couramment aux commandes. AWS Comprehend le fait avec une grande précision et est capable de sélectionner et d'identifier les mots-clés dans le texte d'entrée.

Combiné à une logique personnalisée pour dicter le déroulement d'une conversation, Lex est capable de répondre aux commandes de l'utilisateur et d'envoyer des tâches à Lambda pour un traitement ultérieur. Au cours d'une conversation, AWS Lex peut également interroger les utilisateurs pour obtenir des informations supplémentaires; par exemple, si un utilisateur tente de prendre rendez-vous, Lex peut lui demander une date et une heure qui lui conviennent.

La sortie texte de Lex peut également être convertie en parole à l'aide d'AWS Polly, ce qui permet une expérience de chatbot fluide.

Compte tenu de la mesure de tous les services de composants, le prix de Lex lui-même est étonnamment simple: vous êtes facturé 0,004 USD par demande vocale (4 USD par mille) et 0,001 USD par demande de texte (1 USD par mille).

Contrairement à la plupart des services AWS, Lex n'est actuellement disponible que dans trois régions:

  • us-east-1 (Virginie du Nord)
  • us-west-2 (Oregon)
  • eu-west-1 (Irlande)

Compte tenu de la façon dont un chatbot dépend généralement de la latence, il est surprenant de ne voir que quelques régions prises en charge, mais Lex ne prend également en charge que l'anglais, de sorte que les choix de région ont du sens.

Comment fonctionne Lex?

Pour commencer, rendez-vous sur la console Lex. Quelques exemples d'applications sont déjà créés que vous pouvez essayer par vous-même, mais nous allons continuer et créer un nouveau bot personnalisé afin que vous puissiez voir comment ils sont créés.

Tout commence par les intentions. Vous pouvez considérer les intentions comme certaines actions dont votre bot est capable, telles que la planification de rendez-vous, la commande d'éléments, etc. Chaque intention nécessite quelques mots déclencheurs, appelés énoncés, qui démarrent la conversation. Essayez de garder ces derniers assez brefs; par exemple, "prendre un rendez-vous" fonctionne mieux que "Je souhaite prendre un rendez-vous".

Votre bot peut avoir plusieurs intentions et plusieurs énoncés associés à chaque intention. Vous devriez essayer de capturer toutes les différentes façons dont un utilisateur peut déclarer son intention.

Une fois que le bot démarre un intent, il demande à l'utilisateur des données supplémentaires. Techniquement, vous n'avez besoin d'aucune donnée supplémentaire et vous pouvez demander à votre bot de terminer la conversation et d'exécuter son action immédiatement.

Les données supplémentaires se présentent sous la forme de slots. Vous pouvez les considérer comme des arguments pour une commande – le bot doit interroger l'utilisateur pour chaque argument avant d'envoyer son action finale. Les arguments sont sensibles au type. Par conséquent, si Lex demande à un utilisateur combien d'articles il souhaite commander, il n'acceptera pas «vert» comme réponse.

AWS dispose déjà de nombreux types prédéfinis, dont la plupart sont identifiés par AWS Comprehend. Si vous demandez une date à un utilisateur, utilisez AMAZON.DATE, et si vous demandez une adresse, utilisez AMAZON.StreedAddress.

Chaque emplacement est livré avec sa propre invite, qui est affichée ou lue à l'utilisateur. Par exemple, si vous demandez à l'utilisateur la date de son rendez-vous, vous pouvez écrire quelque chose du genre "Pour quel jour souhaitez-vous prendre rendez-vous?"

Vous pouvez également créer vos propres types de machines à sous. Par exemple, si vous proposez différents types de rendez-vous, vous pouvez les ajouter dans votre propre type. Lex élargit les valeurs de vos emplacements pour inclure des réponses similaires que vous pouvez obtenir des utilisateurs du monde réel. Vous pouvez également limiter votre type d'emplacement personnalisé aux seuls mots et synonymes exacts, si vous souhaitez qu'il soit plus strict. Une bonne règle de base, cependant, est d'inclure les types dans l'invite de l'emplacement afin que l'utilisateur connaisse les options. Sinon, certaines personnes peuvent rester bloquées.

De plus, vous pouvez intégrer des slots directement dans les énoncés. Si un utilisateur dit "Je souhaite prendre un rendez-vous demain,”Vous pouvez supprimer l'étape supplémentaire et considérer que la fente est remplie. Vous pouvez le faire en entourant le nom de l'emplacement entre crochets dans la définition de l'énoncé:

an appointment on {AppointmentDate}

C'est toute la configuration dont votre bot a besoin, mais la plupart des utilisateurs aiment voir une invite de confirmation avant que l'action ne soit entreprise, à la fois pour leur tranquillité d'esprit et pour s'assurer que le bot n'a pas foiré quelque chose. Lex prend en charge cela, sous les paramètres «Invite de confirmation». Vous pouvez inclure des variables d'emplacement dans l'invite, que Lex remplit avec ce que l'utilisateur a dit (au meilleur de sa connaissance, au moins).

De là, vous pouvez cliquer sur Build pour tester votre bot dans le panneau de test intégré. Il doit répondre à votre énoncé et vous demander chacun des créneaux que vous lui avez attribués. Il devrait bien répondre aux modifications de la structure des commandes, mais si ce n’est pas le cas, vous voudrez peut-être ajouter d’autres énoncés ou étendre vos définitions d’emplacement.

Par défaut, Lex s'exécute en mode débogage et renvoie simplement les valeurs des emplacements une fois que c'est fait. Vous pouvez modifier cela pour appeler une fonction Lambda, en transmettant les valeurs de l'emplacement en tant que paramètres à la fonction. C'est à vous de décider quoi faire à partir d'ici. Vous pouvez également prendre manuellement plus de contrôle sur Lex à l'aide d'un crochet de validation Lambda; cela vous permet d'exécuter une fonction Lambda chaque fois qu'un utilisateur répond, soit pour valider et activer l'entrée, soit pour inviter à nouveau l'utilisateur.

Une fois votre bot terminé, vous pouvez envoyer un message de réponse indiquant à l'utilisateur comment la fonction Lambda a géré ses entrées, ou simplement le remercier pour son service.

★★★★★