Facebook Dev Circles

Chatbots Talk @Facebook Paris Dev Circles #1— 6 juin 2017

Baptiste Doyen
CentraleSupelecStartup

--

L’article qui suit reprend la trame de la présentation sur les chatbots qui a eu lieu dans les locaux de Facebook Paris dans le cadre du Dev circles du 6 juin 2017.

2016, 2017, marquent deux années de fort intérêt pour les technologies chatbots.

Des dizaines de milliers de chatbots existent sur les plateformes de messagerie courantes : Messenger, Slack, Skype, …

Pourtant, les expériences utilisateurs qui en découlent ne semblent jamais pleinement satisfaisantes (70% d’entre elles sont des échecs selon les chiffres donnés par Facebook)

Un tel engouement est-il donc justifié ?

“Bots are the new Apps”

Cette phrase a été prononcée par Satya Nadella lors de l’édition 2016 de Microsoft Build. Elle fut également accompagnée par l’ouverture aux développeurs de la plateforme Messenger (aujourd’hui en 2.0).

33 000 bots furent ainsi développés dans les 6 mois qui suivirent cette annonce.

Autre fait marquant : 2016 marque aussi l’année où le nombre d’utilisateurs des 4 premières applications de messagerie (Messenger, WhatsApp, WeChat, Vibe) a surpassé celui d’applications de type réseau social (Facebook, Twitter, LinkedIn, Instagram).

Cette comparaison est-elle possible ? Pas tout à fait en y regardant de plus près.

En effet, parmi les 4 applications de messagerie, toutes n’opèrent pas sur les mêmes continents : WeChat est en grande majorité utilisé en Chine alors que les 4 applications de réseau social opèrent surtout en Europe et aux US. Vu la démographie chinoise, la comparaison est donc un peu disproportionnée…

Le graphe qui suit ne s’intéresse qu’au US. Messenger arrive ainsi en deuxième position parmi les applis les plus utilisées.

Il est assez clair qu’une tendance se dégage : celle d’une nouvelle dynamique autour des plateformes de messagerie. Celle-ci est en pleine expansion mais n’a pas encore totalement bouleversé les habitudes des utilisateurs.

“Have a chat with your new brainy friend”

Une autre grande promesse liée aux chatbots : celle de l’intelligence artificielle.

Aujourd’hui les outils dits de NLP (Natural Language Processing — Traitement du langage naturel) permettent aux développeurs d’ajouter une couche d’ ”intelligence” à leurs applications.

Ces outils sont pour la plupart gratuits et performants (Luis.ai, Recast.ai, wit.ai, …). Néanmoins, même si les modèles s’entraînent automatiquement, il est difficile de savoir quels paramètres initiaux vont fonctionner le mieux

Quelles intents (classes de mot) choisir au début ? Celles-ci seront-elles assez pertinentes ?

End of … HYPE

Il est assez facile de mettre les chatbots en défaut. Deux messages suffisent ainsi à faire perdre pied au “slackbot”.

Et pourtant slackbot est plein de fonctionnalités ! On peut même lui demander un code Wifi par exemple…

Mais il semble que la première interaction avec lui ne soit pas très concluante… Et surtout que le meilleur usage à en faire n’est pas clair d’emblée pour l’utilisateur.

Portrait roBOT

Entre ces deux extrêmes, d’un côté l’IA surpuissante des films de science fiction (HAL où es-tu ?) et de l’autre les désillusions possibles au bout d’une session de 2 messages, se trouve le nouvel espace de travail des développeurs, un espace un peu moins prometteur mais bien réel pour le coup :-)

À quoi ressemblent donc les chatbots qui évoluent dans cet espace ?

Les expériences proposées par ces chatbots sont fondées sur quelques best practices qui ont très récemment émergées.

En voici une collection (non exhaustive) :

Le bouton de démarrage “Get Started” : dans une logique “sans friction”, il facilite la première interaction avec le bot.

Rich Input & Ouput : un chatbot devient intéressant s’il offre une expérience riche. Cette expérience peut se décliner sous plusieurs formes : free text, guidée par des boutons, enrichie par des images, des gifs, des vidéos, horizontale ou bien aussi verticale (avec des menus de type carrousel).

Finalement, l’objectif est de transposer le type d’expérience utilisateur que l’on trouve sur le News Feed de Facebook à une plateforme de messagerie.

30 s : 30 secondes c’est le temps moyen d’une session ouverte sur Messenger. Votre bot ne doit donc pas mettre plus de 30 secondes avant de délivrer à l’utilisateur sa première valeur ajoutée, sous peine de le perdre en cours de route…

User’s Paths

La création d’un chatbot s’avère finalement être une gestion de flow conversationnel. L’objectif du développeur et de faire progresser les utilisateurs le long d’un canal au sein duquel il est suffisamment sûr de pouvoir leur apporter une valeur ajoutée.

Le flow typique est linéaire et ces différentes versions possibles peuvent se représenter sous forme d’arbre dont les noeuds sont les dialogues élémentaires, véritables briques qui forment l’expérience chatbot.

Gestion de flow conversationnel

Néanmoins les utilisateurs ont l’esprit plus “tordu” qu’on ne le croit et il n’est pas rare de les voir chercher à mettre votre chatbot en défaut.

Deux grands types de scénarios émergent ainsi :

Le fameux dialogue “poubelle”
Les dialogues peuvent rentrer en conflit l’un avec l’autre

La théorie c’est bien, la pratique c’est mieux…

Coder un bot est assez simple, surtout au vu des technologies à notre disposition aujourd’hui : nodejs, websocket, APIs,…

Mais c’est encore plus simple si l’on utilise un framework. Il en existe plusieurs : Microsoft Bot Framework, Recast.ai, Botpress.io pour ne citer que les plus connus…

Ces frameworks permettent finalement au développeur de trouver tous les outils nécessaires à son travail et de les mettre à sa disposition de la manière la plus simple possible. Ainsi, un bot développé en utilisant le Bot builder SDK de Microsoft peut se décliner dans plusieurs channels (Messenger, Kik, Skype, Webmail, Twilio,…) et ces différentes intégrations se gèrent directement sur une même plateforme, celle du Bot Framework et sans aucune ligne de code.

D’autres services additionnels viennent aussi épauler le développeur : c’est le rôle de la suite Cognitive Services aussi mise en place par MS.

D’un point de vue architecture, le schéma suivant résume les grandes étapes du travail de développement de chatbots : de l’édition du code, jusqu’à Messenger, en passant par le déploiement sur le cloud.

Tout ce process peut se faire avec des outils MS. Cependant, certains d’entre eux tels Azure Bot Service sont encore en review et donc sujets à des ajustements qui peuvent venir ralentir la production.

Une vue globale de l’architecture de développement de chatbots

Some BOT Tricks

Voici 3 petites astuces qui pourront être utiles dans la cadre d’un projet chatbot :

→ Sentiment analysis

Avant d’utiliser des outils d’IA, pourquoi pas classer les inputs des utilisateurs selon la tonalité de leur propos.

Par exemple, la base de mot AFINN attribue à chaque mot un score (de -5 à +5) selon sa “valence”, c’est-à-dire son caractère plutôt positif ou négatif d’un point de vue émotionnel.

La package npm correspondant : sentiment-mutltilang

Recast.ai propose également une API très complète de Text Analysis. Celle-ci englobe plusieurs fonctionnalités, dont le sentiment analysis

→ Intents dialog : NLP classifier

Ces “NLP engine” sont des modèles d’apprentissage automatique. il s’agit ici d’apprentissage supervisé.

C’est à la fois une force et une faiblesse : une force car le développeur peut paramétrer son modèle comme il le souhaite, selon l’UX qu’il souhaite mettre en place mais aussi une faiblesse car la boucle d’apprentissage de l’UX est justement faite de manière manuelle et que donc potentiellement elle n’est pas optimale selon les données reçues par l’application et traitées par le développeur. Celui-ci est néanmoins aidé dans cette tâche précise de redirection des intents utilisateurs vers les intents de son modèle classificateur : tout peut se gérer sur la plateforme LUIS.ai par exemple.

→ Pro-active messages

Les messages dits pro-actifs sont très utiles pour améliorer la rétention utilisateur. Ils peuvent être perçus comme du “spam”, néanmoins la sensation de spam est beaucoup plus faible sur Facebook Messenger qu’elle ne peut l’être sur une boîte mail classique.

Facebook filtre en amont : les messages commerciaux ne sont pas tolérés (pour le moment…) et si l’utilisateur n’a pas ouvert de session sous les 24h, il ne peut plus alors recevoir de message dit pro-actifs.

Le package npm correspondant : node-schedule

Pour aller plus loin…

J’espère que ces éléments vous auront plu, n’hésitez pas à les commenter/compléter si vous le souhaitez :)

Enfin, voici une liste d’éléments intéressants à consulter concernant l’univers chatbot 🤖.

Pour aller plus loin

--

--