Au Spot Bouygues, j'ai eu à travailler avec des étudiants de l'EPITECH/l'EPITA à la réalisation de différents chatbots. Comme le sujet est à la mode et qu'il véhicule un grand nombre de fantasmes puisqu'il touche à "l'Intelligence Artificielle", je me suis dit qu'il était temps de faire une petite explication de texte.
Un chatbot ou agent conversationnel est un outil permettant d'interagir avec un utilisateur pour répondre à ses questions. L'interaction peut se faire soit de manière écrite soit de manière orale. Elle se fait soit à travers un site web ou une application (Facebook Messenger, Skype, Slack, …), soit à travers un assistant vocal (Google Assistant, Cortana, Amazon Echo, …).
Il existe des chatbots pour répondre à de nombreux besoins: réserver des billets de train, connaître la météo, savoir où sortir pour la soirée, piloter des appareils domotiques, … et la liste ne cesse de s'allonger car tout le monde veut proposer cette nouvelle forme d'interaction avec l'utilisateur.
Les technologies de chatbot les plus connues s'appuient sur les outils de Google (Dialog Flow), Amazon (Alexa Skill Kit) ou Microsoft (LUIS).
Evidemment un chatbot reste un programme informatique, il ne saurait donc répondre à toutes les questions. Avec ces technologies, la première chose à définir pour un chatbot est la liste des "intentions" qu'il est susceptible de reconnaître.
Une intention est une question ou un problème que peut comprendre un chatbot. Par exemple un chatbot recevant la question "Quand aura lieu mon prochain rendez-vous ?" comprendra que l'intention de l'utilisateur est d'avoir des informations sur son agenda. S'il reçoit "Il fait trop chaud dans cette salle", il pourra comprendre que l'intention de l'utilisateur est de régler la température.
Les intentions doivent être définies à la création du chatbot. Dans les outils que nous avons cités elles se définissent en listant des phrases types que pourrait utiliser l'utilisateur pour discuter avec le chatbot.
Par exemple pour l'agenda:
"Quels sont mes rendez-vous de la journée ?"
"Qu'est-ce que j'ai la semaine prochaine ?"
"Quelle est ma réunion de 10h ?"
Ou pour le problème de température:
"J'ai trop chaud"
"Il y a un problème de température"
"Peux-tu baisser la climatisation ?"
L'intelligence apportée par les plateformes est de gérer automatiquement la reconnaissance de ces phrases types sans qu'il soit nécessaire d'être exhaustif sur les tournures de phrases à employer. Cela se fait la plupart du temps via du machine learning (un réseau de neurone pré-entrainé) mais cela peut être aussi de l'analyse sémantique (comme dans l'outil proposé par Golem.ai).
La définition des intentions n'est pas un travail de développeur ou d'expert en intelligence artificielle. C'est plutôt un travail de consultant qui va s'approprier le domaine fonctionnel auquel doit répondre le chatbot. Généralement, la liste des phrases types s'enrichie au fur et à mesure de l'usage en réinjectant les phrases non reconnues par le chatbot. La compréhension du chatbot va donc s'améliorer au fil de l'eau.
L'intention est généralement associée à des paramètres et un contexte pour la caractériser.
Par exemple pour répondre à la question "Quels sont mes rendez-vous de la journée ?", il faut comprendre qu'il s'agit de la date du jour et savoir le nom de l'utilisateur qui pose la question. On parle de paramètres associés aux intentions. Les plates-formes de chatbot facilitent aussi la découverte automatique de ces paramètres en s'appuyant sur des types prédéfinis (date/heure, nombre, …) ou des listes de valeur possibles à renseigner par le développeur.
Quoi qu'il en soit, à la sortie de l'étape de reconnaissance de la phrase, on dispose d'une intention et de ses caractéristiques. On retombe alors dans le monde plus traditionnel d'un programme informatique: il faut déclencher un traitement.
Ce traitement consiste généralement à l'appel d'une API: interroger Office 365 par exemple pour accéder au calendrier ou se connecter à un système domotique pour régler la température.
Il est intéressant de noter que, sauf dans des cas très spécifiques, il n'y a plus d'intelligence à ce moment là mais simplement la nécessité de lancer des traitements et des algorithmes en utilisant les paramètres reconnus.
Même si on simplifie un peu, nous pouvons dire qu'un chatbot est donc constitué:
Voilà, il n'y donc pas de magie et finalement peu d'intelligence !
On me pose souvent la question de savoir dans quel cas utiliser un chatbot. La réponse est simple: un chatbot est une interface supplémentaire au dessus de votre application. Au même titre que vous développez une interface web et une interface mobile, vous pouvez développer pour votre application une interface conversationnelle sous forme de chatbot.
A vous ensuite de déterminer si l'application est adaptée à une utilisation sous forme de chatbot: est-ce que cela sera plus pratique ou plus simple pour un utilisateur de disposer d'un chatbot plutôt que de naviguer et remplir des formulaires ?
Pourquoi ne pas venir essayer au Spot ?