Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme

Bonjour Habr! Aujourd’hui, nous allons vous montrer comment utiliser Azure pour résoudre des problèmes qui nécessitent généralement une intervention humaine. Les agents passent beaucoup de temps à répondre aux mêmes questions, à gérer les appels téléphoniques et les SMS. Les chatbots automatisent la communication et la reconnaissance et réduisent la charge qui pèse sur les personnes. Les robots sont également utilisés dans Azure DevOps, où ils permettent, par exemple, d'approuver les versions, de gérer les builds - afficher, démarrer et arrêter - directement depuis Slack ou Microsoft Teams. En substance, un chatbot rappelle un peu une CLI, uniquement interactive, et permet au développeur de rester dans le contexte de la discussion par chat.

Dans cet article, nous parlerons des outils de création de chatbots, montrerons comment ils peuvent être améliorés avec les services cognitifs et décrirons comment accélérer le développement avec des services prêts à l'emploi dans Azure.

Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme

Chatbots et services cognitifs : quelles sont les similitudes et quelles sont les différences ?

Pour créer des robots dans Microsoft Azure, vous utilisez Azure Bot Service et Bot Framework. Ensemble, ils représentent un ensemble de logiciels permettant de créer, tester, déployer et administrer des robots, qui vous permettent de créer à partir de modules prêts à l'emploi des systèmes de communication simples et avancés avec prise en charge vocale, reconnaissance du langage naturel et d'autres fonctionnalités.

Supposons que vous deviez implémenter un bot simple basé sur un service de questions-réponses d'entreprise ou, à l'inverse, créer un bot fonctionnel avec un système de communication complexe et ramifié. Pour ce faire, vous pouvez utiliser un certain nombre d'outils, répartis en trois groupes : 

  1. Services de développement rapide d'interfaces de dialogue (bots).
  2. Services d'IA cognitive prêts à l'emploi pour différents cas d'utilisation (reconnaissance de formes, reconnaissance vocale, base de connaissances et recherche).
  3. Services de création et de formation de modèles d'IA.

En règle générale, les gens confondent intuitivement « robots » et « services cognitifs », car les deux concepts sont basés sur le principe de communication et le cas d’utilisation des robots et des services implique des dialogues. Mais les chatbots fonctionnent avec des mots-clés et des déclencheurs, et les services cognitifs fonctionnent avec des requêtes arbitraires qui sont généralement traitées par des humains : 

Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme

Les services cognitifs sont un autre moyen de communiquer avec l'utilisateur, en aidant à convertir une requête arbitraire en une commande claire et à la transmettre au bot. 

Ainsi, les chatbots sont des applications permettant de travailler sur des requêtes, et les services cognitifs sont des outils d'analyse intelligente de requêtes lancées séparément, mais auxquelles le chatbot peut accéder, devenant ainsi « intelligent ». 

Création de chatbots

Le schéma de conception recommandé pour un bot dans Azure est le suivant : 

Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme

Pour concevoir et développer des bots dans Azure, utilisez Cadre de bot. Disponible sur GitHub exemples de robots, les capacités du framework changent, il est donc nécessaire de prendre en compte la version du SDK utilisée dans les bots.

Le framework propose plusieurs options pour créer des bots : en utilisant du code classique, des outils de ligne de commande ou des organigrammes. La dernière option visualise les boîtes de dialogue ; pour cela, vous pouvez utiliser le gestionnaire Compositeur de Bot Framework. Il a été construit sur le SDK Bot Framework en tant qu'outil de développement visuel que les équipes interdisciplinaires pouvaient utiliser pour créer des robots.

Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme

Bot Framework Composer vous permet d'utiliser des blocs pour créer une structure de dialogue avec laquelle le bot travaillera. De plus, vous pouvez créer des déclencheurs, c'est-à-dire des mots-clés auxquels le bot réagira pendant le dialogue. Par exemple, les mots « opérateur », « vol » ou « stop » et « assez ».

Dans Bot Framework Composer, vous pouvez créer des systèmes de dialogue complexes à l'aide de Boîtes de dialogue adaptatives. Les dialogues peuvent utiliser à la fois des services cognitifs et des cartes d'événements (Adaptive Cards) :

Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme

Après la création, vous pouvez déployer le chatbot dans un abonnement, et un script préparé automatiquement créera toutes les ressources nécessaires : services cognitifs, plan d'application, Application Insights, base de données, etc.

QnA Maker

Pour créer des robots simples basés sur des bases de données de questions-réponses d'entreprise, vous pouvez utiliser le service cognitif QnA Maker. Implémenté comme un simple assistant web, il permet de saisir un lien vers une base de connaissances d'entreprise (Urls FAQ) ou d'utiliser comme base une base documentaire au format *.doc ou *.pdf. Après avoir créé l’index, le bot sélectionnera automatiquement les réponses les plus appropriées aux questions de l’utilisateur.

Grâce à QnAMaker, vous pouvez également créer des chaînes de questions de clarification avec création automatique de boutons, compléter la base de connaissances avec des métadonnées et former davantage le service pendant son utilisation.

Le service peut être utilisé comme un chatbot qui implémente uniquement cette seule fonction, ou comme partie d'un chatbot complexe qui utilise, selon la demande, d'autres services d'IA ou des éléments du Bot Framework.

Travailler avec d'autres services cognitifs

Il existe de nombreux services cognitifs différents sur la plateforme Azure. Techniquement, ce sont des services Web indépendants qui peuvent être appelés depuis le code. En réponse, le service envoie du json d'un certain format, qui peut être utilisé dans le chatbot.

Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme
Les utilisations les plus courantes des chatbots sont :

  1. Reconnaissance de texte.
  2. Reconnaissance des catégories d'images du Custom Vision Service définies par le développeur (cas de production : reconnaissance du port d'un casque, de lunettes ou d'un masque par un employé).
  3. Reconnaissance faciale (un excellent cas d'utilisation consiste à vérifier si la personne interrogée a posté son propre visage ou, par exemple, une photo d'un chien ou une photo d'une personne d'un sexe différent).
  4. Reconnaissance de la parole.
  5. L'analyse d'image.
  6. Traduction (nous nous souvenons tous du bruit provoqué par la traduction simultanée dans Skype).
  7. Vérification orthographique et suggestions pour corriger les erreurs.

LUIS

De plus, pour créer des robots, vous aurez peut-être besoin LUIS (Service intelligent de compréhension du langage). Objectifs des prestations :

  • Déterminez si la déclaration de l'utilisateur a du sens et si la réponse du bot est nécessaire.
  • Réduisez les efforts pour transcrire le discours (texte) de l’utilisateur en commandes compréhensibles pour le bot.
  • Prédisez les véritables objectifs/intentions des utilisateurs et extrayez des informations clés à partir des phrases du dialogue.
  • Permettez au développeur de lancer le bot en utilisant seulement quelques exemples de reconnaissance de signification et de formation supplémentaire ultérieure du bot pendant le fonctionnement.
  • Permettez au développeur d’utiliser la visualisation pour évaluer la qualité de la transcription des commandes.
  • Contribuer à des améliorations progressives de la véritable reconnaissance des cibles.

En fait, l'objectif principal de LUIS est de comprendre avec une certaine probabilité ce que l'utilisateur voulait dire et de convertir une requête naturelle en une commande harmonieuse. Pour reconnaître les valeurs de requête, LUIS utilise un ensemble d'intentions (significations, intentions) et d'entités (soit préconfigurées par les développeurs, soit des « domaines » pris et préformés - des bibliothèques prêtes à l'emploi d'expressions standard préparées par Microsoft). 

Un exemple simple : vous disposez d’un bot qui vous donne une prévision météo. Pour lui, l'intention sera la traduction d'une demande naturelle en une « action » - une demande de prévision météorologique, et les entités seront le temps et le lieu. Voici un schéma du fonctionnement de l'intention CheckWeather pour un tel bot.

Intention
Essence
Exemple de requête naturelle

Vérifier la météo
{"type": "location", "entity": "moscou"}
{"type": "builtin.datetimeV2.date", "entity": "future","resolution":"2020-05-30"}
Quel temps fera-t-il demain à Moscou ?

Vérifier la météo
{ "type": "date_range", "entity": "ce week-end" }
Montre-moi les prévisions pour ce week-end

Pour combiner QnA Maker et LUIS, vous pouvez utiliser Dispatcher

Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme

Lorsque vous travaillez avec QnA Maker et recevez une demande d'un utilisateur, le système détermine quel pourcentage de probabilité que la réponse de QnA corresponde à la demande. Si la probabilité est élevée, l'utilisateur reçoit simplement une réponse de la base de connaissances de l'entreprise ; si elle est faible, la demande peut être envoyée au LUIS pour clarification. Utiliser Dispatcher permet non pas de programmer cette logique, mais de déterminer automatiquement ce bord de séparation des requêtes et de les répartir rapidement.

Tester et publier le bot

Une autre application locale est utilisée pour les tests, Émulateur de framework de robots. À l'aide de l'émulateur, vous pouvez communiquer avec le bot et vérifier les messages qu'il envoie et reçoit. L'émulateur affiche les messages tels qu'ils apparaîtraient dans une interface de discussion Web et enregistre les requêtes et les réponses JSON lors de la messagerie du bot.

Un exemple d'utilisation de l'émulateur est présenté dans cette démo, qui montre la création d'un assistant virtuel pour BMW. La vidéo parle également de nouveaux accélérateurs pour créer des chatbots - des modèles :

Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme
https://youtu.be/u7Gql-ClcVA?t=564

Vous pouvez également utiliser des modèles lors de la création de vos chatbots. 
Les modèles vous permettent de ne pas réécrire les fonctions standard du bot, mais d'ajouter du code prêt à l'emploi en tant que « compétence ». Un exemple pourrait être de travailler avec un calendrier, de prendre des rendez-vous, etc. Code de compétences prêtes à l'emploi publié sur github.

Les tests ont réussi, le bot est prêt et il faut maintenant le publier et connecter les canaux. La publication s'effectue à l'aide d'Azure, et des messageries ou des réseaux sociaux peuvent être utilisés comme canaux. Si vous ne disposez pas du canal requis pour saisir des données, vous pouvez le rechercher dans la communauté correspondante sur GitHab. 

De plus, pour créer un chatbot à part entière comme interface de communication avec l'utilisateur et les services cognitifs, vous aurez bien entendu besoin de services Azure supplémentaires, tels que des bases de données, sans serveur (Azure Functions), ainsi que des services LogicApp et, éventuellement , Grille d'événements.

Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme

Évaluation et analyse

Pour évaluer l’interaction des utilisateurs, vous pouvez utiliser à la fois les analyses intégrées d’Azure Bot Service et le service spécial Application Insights.

De ce fait, vous pouvez collecter des informations en fonction des critères suivants :

  • Combien d'utilisateurs ont accédé au bot à partir de différents canaux pendant la période sélectionnée.
  • Combien d'utilisateurs qui ont envoyé un message sont revenus plus tard et en ont envoyé un autre.
  • Combien d'actions ont été envoyées et reçues en utilisant chaque canal pendant l'intervalle de temps spécifié.

Grâce à Application Insights, vous pouvez surveiller n'importe quelle application dans Azure et, en particulier, les chatbots, en obtenant des données supplémentaires sur le comportement des utilisateurs, les charges et les réactions des chatbots. A noter que le service Application Insights possède sa propre interface dans le portail Azure.

Vous pouvez également utiliser les données collectées via ce service pour créer des visualisations et des rapports analytiques supplémentaires dans PowerBI. Un exemple d'un tel rapport et d'un tel modèle pour PowerBI peut être pris ici.

Nous accélérons le développement grâce aux services Azure : nous créons des chatbots et des services cognitifs à l'aide de la plateforme

Merci à tous pour votre attention ! Dans cet article, nous avons utilisé matériau Extrait du webinaire de l'architecte Microsoft Azure Anna Fenyushina « Quand les gens n'ont pas le temps. Comment utiliser à 100 % les chatbots et les services cognitifs pour automatiser les processus de routine », où nous avons clairement montré ce que sont les chatbots dans Azure et quels sont les scénarios de leur utilisation, et avons également démontré comment créer un bot dans QnA Maker en 15 minutes et comment le la structure des requêtes est déchiffrée dans LUIS. 

Nous avons réalisé ce webinaire dans le cadre du marathon en ligne destiné aux développeurs Dev Bootcamp. Il s'agissait de produits qui accélèrent le développement et soulagent une partie de la charge de travail courante des employés de l'entreprise grâce à des outils d'automatisation et des modules Azure préconfigurés prêts à l'emploi. Les enregistrements des autres webinaires inclus dans le marathon sont disponibles aux liens suivants :

Source: habr.com

Ajouter un commentaire