Développez vos premiers chatbots !

Piston, le chatbot emploi créé par The Chatbot Factory pour LesEchos Start.
Application la plus évidente de l’Intelligence artificielle, le chatbot est la technologie à la mode, outre le volet IA indispensable dans la compréhension du langage, un bot, c’est avant tout une application à développer. Selon une enquête Humanis, 38 % des entreprises françaises interrogées en 2017 sont en train de mettre en place au moins un chatbot. Elles seraient 52 % à réfléchir sérieusement à la question. Beaucoup se tournent vers des start-up spécialisées, mais certaines directions générales qui considèrent l’IA comme stratégique pour le futur vont solliciter leur DSI. Mettre en ligne un chatbot n’est pas si complexe qu’il n’y paraît. L’accès à l’IA est désormais extrêmement facile via le Cloud et le marché des API. Google, Microsoft, Facebook, Recast.AI proposent des API simples d’emploi, si bien qu’un développeur Node.js ou ASP. NET débutant va rapidement pouvoir mettre en ligne un bot. Rendre ce bot efficace, et surtout utile aux clients, est une autre histoire, mais à l’heure de la généralisation des assistants numériques, il est grand temps de monter en compétence sur la question.

Une architecture commune à toutes les plates-formes

La première règle de conception d’une plate-forme de chatbot, c’est de la rendre indépendante de l’outil de communication. Aujourd’hui, Facebook Messenger est l’application la plus utilisée par les chatbots, mais outre Facebook, un même bot doit être capable de communiquer via Slack, Skype, la fenêtre de chat d’un site web. L’essor des assistants numérique, Microsoft Cortana, Amazon Alexa ou Google Assistant, ne va faire qu’amplifier ce besoin d’indépendance vis-à-vis des canaux d’échange. « Le moteur de chatbot est centralisé et doit être capable de gérer toutes les interfaces », résume Thomas Guenoux, cofondateur de KRDS/OhMyBot, concepteur de chatbots pour Sephora, la SNCF, BNP Paribas, Mercedes. « C’est dans cette optique qu’il faut architecturer un moteur de chatbot qu’il est ensuite possible de déployer sur différentes plates-formes. » Dans ce but, l’architecture du chatbot se décompose en un moteur qui prend en entrée des questions et qui génère des réponses en retour. Ce moteur vient se connecter aux platesformes qui vont lui servir d’interface utilisateur. « Un autre point important dans le développement d’une infrastructure de chatbot, c’est le serverless, c’est-à-dire de mettre en ligne une API de manière transparente vis-à-vis des serveurs. Nous utilisons beaucoup Lambda d’Amazon Web Services, et avec DynamoDB comme base de données. C’est une stack bien adaptée au développement de chatbot sur mesure, mais ce n’est pas la seule sur le marché. » Rivale de OhMyBot sur le marché français, la start-up The Chatbot Factory a fait le choix de développer sa propre plate-forme de gestion de bots. « Seule la brique de compréhension du langage naturel est externalisée », explique Matthieu Bietry, directeur technique associé de The Chatbot Factory. « Nous appelons généralement la brique de Recast.AI, mais nous pourrions très bien brancher une autre brique NLP (Natural Language Processing) équivalente. » Cette plate-forme supporte notamment Louis, le nouveau chatbot bagagiste d’Air France ou encore Piston, le chatbot emploi des Echos Start. Comme la plupart des plates-formes de bots modernes, celle-ci est divisée entre le module de connexion et d’échanges pour se connecter aux messageries instantanées et le module bot lui-même. « Celui-ci doit être à même de gérer le contexte de chaque utilisateurs », précise Matthieu Bietry. « Si un utilisateur a posé une question sur un produit précis et qu’il demande ensuite une précision, on part du principe qu’il parle du même produit. Il faut donc être capable de gérer ce contexte de conversation mais aussi savoir si l’utilisateur est déjà venu plusieurs fois, s’il possède un compte identifié afin de personnaliser la réponse. Ces données sont stockées dans MongoDB. » Facebook propose des templates riches afin de permettre aux chatbots d’utiliser des contenus multimédias divers, mais aussi des éléments transactionnels comme les paiements en ligne.

Des écosystèmes applicatifs sont bien en place

Précurseur dans les plateformes de bots, Amazon Web Services fait face aujourd’hui à plusieurs concurrents de poids, à commencer par Google. L’Américain s’est doté d’API de reconnaissance du langage naturel avec l’acquisition d’API.AI en 2016. L’offre a été rebaptisée DialogFlow et elle est maintenant nativement intégrée à l’écosystème Google et la solution permet aussi le déploiement de chatbots sur Google Assistant et Google Home. Même démarche chez Facebook qui a mis la main sur une start-up française, wit.ai, qui lui a apporté sa technologie de reconnaissance du langage. Dernier venu sur ce marché des plates-formes de chatbot, Microsoft a présenté son Bot Framework lors de la dernière édition de Microsoft experiences. Comme ses concurrents, Microsoft a scindé la partie communication avec le Bot Connector capable de dialoguer sur Facebook, Slack, Skype, Telegram ou par SMS et le volet programmation du bot avec le Bot Builder, un SDK disponible pour ASP.NET et Node.js. Un template Visual Studio permet la génération d’une Web API qui va écouter le canal d’entrée et être appelée par le Bot Connector pour chaque phrase saisie par l’utilisateur. La brique NLP de Microsoft, baptisée Luis (pour Language Understanding Intelligent Service) joue alors un rôle clé : « Luis analyse l’intention de la phrase et lui a associé une probabilité. Cela permet au développeur d’adapter les réponses de son bot », explique Jean-Sébastien Dupuy, évangéliste technique développement mobile chez Microsoft. « L’intérêt de Luis, c’est qu’il apprend au fur et à mesure et comprend la majorité des phrases que les utilisateurs vont saisir. Une fois l’IA entrainée, on dispose d’une URL, un point d’entrée qui retourne un fichier JSON avec les différentes intentions et l’entité. » Avec son Bot Framework, Microsoft fournit désormais toute une série d’outils et de services cloud afin de supporter les chatbots sur de multiples services et apps de communication instantanée.

Le Machine Learning indispensable, mais interchangeable

La brique de NLP qui s’appuie sur le Machine Learning pour reconnaître le langage naturel constitue être le point clé de l’architecture d’un chatbot. C’est cette approche qui permet théoriquement à un chatbot d’être de plus en plus performant au fur et à mesure qu’il apprend des conversations qu’il tient avec les internautes. Pourtant, ces API de NLP sont devenues pratiquement interchangeables pour les développeurs. Pour eux, le rôle de cette API consiste à relier le texte tapé par l’internaute à des intentions (des « intents » dans le jargon des chatbots) qui ont été prédéfinies, comme par exemple « réserver un restaurant », « louer une voiture », « dépanner mon accès internet ». Si l’algorithme arrive à faire ce lien entre le texte envoyé par l’utilisateur et une intention connue du moteur de chatbot, l’API renvoie l’intent en question et la liste des paramètres dont il dispose déjà, comme le type de restaurant, le lieu. Il suffit de saisir une dizaine de tournures de phrases par intent pour permettre au moteur, via le Machine Learning à comprendre l’infinité des tournures possibles d’une question. « On commence à avoir de bons résultats avec une dizaine de synonymes », estime Thomas Guenoux. « L’API envoie en retour d’une phrase un score entre 0 et 1 qui correspond au degré de certitude de la machine. Si le score est de 0,9, on peut être certain que l’algorithme a correctement analysé l’intention de l’internaute. Si celui-ci n’est que de 0,3, c’est au développeur de décider ce qu’il compte faire : soit faire répéter l’internaute ou lui demander des précisions, soit prendre le risque de faire l’action quand même. Tous les algorithmes de NLP fonctionnent de cette façon. » La plate-forme Recast.AI est très populaire auprès des concepteurs de chatbots, notamment en France. Elle constitue une alternative performante aux solutions proposées par les Gafa. L’essor actuel du Machine Learning explique incontestablement le regain d’intérêt des entreprises pour les chatbots, mais ce n’est pas la seule technique disponible pour discuter avec un internaute. Guilhem Valentin, directeur des opérations de l’éditeur Synapse Développement souligne l’approche radicalement différente du Toulousain : « Nous travaillons dans le domaine de l’analyse linguistique depuis près de 25 ans. Notre premier produit était un correcteur orthographique et, à partir de notre moteur de compréhension du langage, nous avons développé plusieurs fonctions sémantiques, dont un service de création de chatbot. » Celui-ci ne s’appuie pas uniquement sur le Machine Learning mais sur une approche sémantique de l’analyse de texte. « L’approche symbolique nous permet de bien comprendre la signification de chaque mot d’une phrase et c’est ce qui nous différencie du Machine Learning. Pour nous, les deux approches sont complémentaires et nous essayons de les combiner pour parvenir au meilleur résultat. » L’intérêt de cette approche sémantique est de proposer aux internautes des chatbots qui ne sont pas scénarisés. Il n’est plus nécessaire de coder tous les « intents » possibles, mais de faire lire au chatbot les documents afin de générer une base de connaissance avec toutes les questions qui seront susceptibles d’être posées sur le texte initial et les réponses. Cette approche sera notamment mise en œuvre par EDF pour ses techniciens ainsi que par la Dépêche du Midi. Le chatbot Robin va automatiquement lire le journal tous les matins et répondre aux questions des lecteurs. Avec Alexa, Amazon a su conquérir les développeurs qui ont créé des milliers de « skills » pour ses différents assistants. Arrivé bien plus tard sur le marché, Google pourrait bien refaire son retard rapidement. L’architecture d’un bot pour un assistant numérique, tel que Amazon Echo, est similaire à celle d’un chatbot, en dépit de quelques spécificités comme les services STT (Speech-toText) et TTS (Text-ToSpeech) fournis par la plate-forme.

Les assistants numériques, une autre approche du dialogue

Messenger et les fenêtres de chat sur les sites web sont les moyens de communication les plus fréquents des chatbots actuels, mais l’essor des assistants numériques change la donne, notamment depuis l’arrivée de terminaux comme le Google Home ou la gamme des Amazon Echo. Disponible en France et en français, Google Home a pris de vitesse Amazon dans l’Hexagone, mais aux États-Unis, c’est bien Amazon qui a convaincu le plus de développeurs si l’on en croit le nombre de « Skills » déjà développés. La barre des 20 000 a été franchie en septembre 2017, même si bon nombre d’entre eux n’ont qu’un intérêt très limité. Sébastien Stormacq, responsable Architecture d’Alexa, chez Amazon UK, soulignait lors de la dernière conférence AWS Summit la simplicité du développement des Skills : « Il peut s’agir d’un web service chez AWS ou d’un web service de l’entreprise. L’hébergement de ce web service est libre, même si Amazon Web Services pousse les entreprises à exploiter AWS Lambda pour héberger leurs API. La Skill doit retourner un texte et Alexa va générer la voix via le service TTS (TextTo-Speech) qui est exécuté dans le Cloud. Le fichier son est ensuite envoyé sur le device. Développer une Skill, c’est avant tout développer une interface utilisateur et le code qui supporte cette interface. » À l’instar de Google pour Google Home et Google Assistant, Amazon Web Service fournit un environnement de développement et d’exécution des Skills complet qui s’appuie sur des standards du développement, avec des formats de données JSON et un SDK Node.js. Néanmoins développer un chatbot vocal présente quelques spécificités. Alors qu’une transaction sur le Web peut se dérouler sur une quinzaine de minutes, une interaction vocale est beaucoup plus courte, de l’ordre de 1 à 2 minutes, en vocal. Il faut aussi privilégier un échange direct : cela peut être immédiat avec l’utilisateur qui pose sa question et le Skill qui retourne immédiatement sa réponse. Difficile dans ces conditions de personnaliser un Skill, même si des solutions commencent à arriver, dont le standard SSML implémenté dans Alexa : « La réponse est un JSON où l’on donne le texte qui sera lu par Alexa. Il peut s’agir d’un format SSML (Speech Synthesis Mark-up Language), un format qui va permettre à Alexa de donner des intonations au texte, faire des pauses, accélérer le rythme de lecture ou ajouter des interjections type waow, boom, bang, etc. Des balises SSML permettent d’ajouter ce type d’éléments dans le dialogue. C’est aussi comme cela que l’on va pouvoir donner du caractère à Alexa. » Avec l’arrivée attendue d’Alexa for Business, ou encore Microsoft qui déploie Cortana sur une ligne de montage chez PSA, les assistants numériques seront omniprésents tant dans les entreprises que sur le B2C. Il est grand temps de développer ses premiers bots et de monter en compétence sur cette nouvelle façon de concevoir une application. Pour son assistant numérique MyxyPod, le Français Myxy a fait le choix de s’appuyer sur la plate-forme IBM Watson, un moyen de rester indépendant vis-à-vis de Google et Amazon, ses concurrents directs.

Guilhem Valentin, directeur des opérations de Synapse Développement : « Le Machine Learning a ses limites »

« Beaucoup des chatbots développés aujourd’hui sont très scénarisés et ne fonctionnement bien que sur des périmètres très restreints. Cette approche est adaptée pour commander des pizzas où le scénario est assez évident, mais si on veut mettre en place un chatbot capable de répondre des questions portant sur un vaste champ de connaissances, c’est plus complexe. Les solutions sur le marché se basent sur une définition des intentions et des actions et lorsqu’il s’agit de périmètres de connaissances plus ouverts, cette approche est bien trop complexe à maintenir. Il n’est pas possible d’aller au-delà de 100 à 200 intentions, grand maximum. Notre approche basée sur la linguistique permet de répondre à plusieurs centaines de milliers de réponses possibles. C’est ce qui pousse de nombreux concepteurs de chatbots à s’intéresser à notre approche pour avoir des chatbots plus automatisés. »

Xavier de Baillenx, Innovation Lead chez Match.com / Meetic : « Notre premier allié, c’est l’utilisateur »

« Après un an et demi passé à développer notre chatbot Lara, le premier enseignement, c’est que l’on apprend des utilisateurs. Notre premier allié, c’est l’utilisateur : depuis le premier jour, nous apprenons de chaque conversation. Quand on est sur un site web et que 30 % de l’audience disparaît sur une page, il est difficile de comprendre pourquoi cette audience s’en va. Sur un agent conversationnel, vous avez les verbatim de l’utilisateur et il est plus facile d’essayer de le comprendre. La difficulté, c’est d’analyser ; et ce qui est intéressant, c’est que l’utilisateur lui-même va apprendre à notre chatbot. Si l’utilisateur fait une erreur d’orthographe, le chatbot ne comprend pas : Lara va dire qu’elle ne comprend pas et répondre “ Cherchez-vous un home ou une femme ? ”, et si l’utilisateur clique “ Une femme ”, on intègre la phrase tapée par l’utilisateur dans le réseau de neurones avec une donnée qui est annotée non pas par notre équipe, mais par l’utilisateur lui-même. Cela permet d’avoir rapidement un volume important de contenu annoté. Or, l’IA ne fonctionne que si elle dispose d’une grande quantité de données et cette approche permet à Lara d’apprendre toutes les langues grâce aux utilisateurs eux-mêmes. »

Thomas Guenoux, alias Thomas Gx, co-fondateur de KRDS/OhMyBot : « Node.js, le langage des chatbots »

« S’il est théoriquement possible de développer des bots dans n’importe quel langage, Node.js s’est aujourd’hui imposé dans le monde du développement de chatbot. C’est sans doute dû au fait qu’il s’agit d’une génération de développeurs qui aime bien le JavaScript. En outre, Node.js offre la capacité de faire des traitements « en live », c’est-à-dire fonctionner en temps réel via des sockets, ce qui permet de tenir une conversation en mode push et être réactifs aux requêtes de l’utilisateur. C’est la raison pour laquelle Node.js est particulièrement populaire auprès des développeurs de Chatbots, même si certains développent des chatbot en Java, Python. C’est plus une question d’affinité des développeurs que réellement un avantage en termes de performance. »

Les API de Natural Language Processing,  une technologie aujourd’hui banalisée

Globalement, toutes les API de NLP (Natural Language Processing) à l’image de Microsoft Luis fonctionnent sur un même schéma. Après que le développeur a saisi l’ensemble des « intents » (intentions) qui correspondent à une action de son bot, le moteur de Machine Learning va délivrer son analyse de chaque requête des internautes avec l’intent qu’il estime le plus proche. Une probabilité est affectée à cette analyse, au développeur de juger si celle-ci est suffisante pour déclencher une action. En outre chaque matin, un humain, le « Bot Trainer » va catégoriser les questions auxquelles l’IA n’a pu affecter d’intent la veille, ce qui permet d’entraîner le moteur et de le rendre plus pertinent. Meetic a choisi de personnaliser son chatbot avec l’avatar Lara. En fait, ce sont trois chatbots différents qui ont été créés afin d’aider les internautes à s’inscrire, les aider en cas de perte de mot de passe et, enfin, de trouver un profil qui « matche » avec leurs souhaits.