Comment gérer une conversation avec un chatbot ?

par Ludan Stoecklé, CTO d’Addventa
#chatbot #intelligenceartificielle

Dans notre article précédent (Comment un chatbot fait-il pour comprendre une question et y répondre ?), nous avons vu comment, à partir d’un texte quelconque saisi par l’utilisateur (l’énoncé), un moteur de chatbot parvient à identifier ce que veut faire l’utilisateur (l’intention et les entités), puis comment il formule le texte de réponse.

Un chatbot doit pourtant faire plus qu’un simple enchaînement indépendant de questions/réponses : il doit être capable de gérer une vraie conversation.


En quoi consiste une conversation ?

Gérer une conversation consiste à suivre le fil des messages successifs en se rappelant du contexte. Par exemple :

  • utilisateur > je veux réserver une pizzéria
  • chatbot > Entendu, vous souhaitez réserver une pizzéria. Pour combien de personnes ?
  • utilisateur > moi mon épouse et mes 2 enfants
  • chatbot > Compris, vous serez 4. À quelle date ?

Les arbres de dialogue

Une fois l’intention de départ identifiée (recherche de restaurant, demande de facture, changement de date, etc.), les enchaînements sont, dans la plupart des solutions de chatbot, gérés par des arbres de dialogue.

Un arbre de dialogue définit, de façon explicite, la façon dont s’enchaîne les différents échanges d’une conversation. Les nœuds sont des actions du chatbot (faire un traitement & répondre), et les transitions sont conditionnées par la réponse de l’utilisateur.

Dans le cas de la conversation pour la commande pizza, un arbre classique définirait ainsi l’enchaînement de la collecte du nombre de personnes, de la date, du quartier souhaité etc.

À ce stade, il est difficile de parler d’Intelligence Artificielle : les arbres de dialogue sont une approche très classique et ont été utilisés sur des formulaires dynamiques avant d’être réutilisés sur des moteurs de chatbots.

C’est par exemple l’approche d’IBM Watson Conversation et de recast.ai.

Arbre de dialogue Watson
Arbre de dialogue recast.ai

Quelles sont les limites des arbres de dialogue ?

Dans la pratique, en confrontant un chatbot à la réalité des utilisateurs, le besoin de de gérer un niveau supplémentaire de complexité apparait très vite.

Par exemple, l’utilisateur peut donner plusieurs informations à la fois, et ne pas respecter l’ordre prévu dans l’arbre de dialogue :

  • utilisateur > je veux réserver une pizzéria demain pour 3
  • chatbot > D’accord, une pizzéria pour 3 ; demain soir ou pour le déjeuner ?

Le chatbot doit récupérer toutes les informations données à chaque étape et le cas échéant court-circuiter les questions inutiles.

Egalement, l’utilisateur change souvent d’avis :

  • utilisateur > moi mon épouse et mes 2 enfants
  • chatbot > Compris, vous serez 4. À quelle date ?
  • utilisateur > demain soir
  • chatbot > Entendu. Une préférence pour le quartier ?
  • utilisateur > finalement on sera 5
  • chatbot > Entendu, vous serez 5. Avez-vous une préférence pour le quartier ?

Le chatbot doit être capable de réagir intelligemment à ces situations, sans que l’on ait à définir explicitement tous les enchaînements possibles. Comment peut-on gérer cela ?


L’approche par règles

ChatScript, un moteur open-source, ne se base pas sur des arbres de dialogue mais sur des règles de dialogue, définies à plat et organisées par thème. L’ordre d’exécution des règles est dynamique via un moteur de règles spécifique intégré. La règle à déclencher est choisie par le moteur en fonction de l’état du dialogue et de l’énoncé de l’utilisateur. Cette approche permet de résoudre facilement les 2 cas vus précédemment : plusieurs informations données à la fois et retours en arrière.

Amelia, de la société IPSoft, définit les enchaînements via des processus métier proches d’arbres de dialogue ; mais Amelia est capable de retenir automatiquement des informations données même lorsqu’elles ne sont pas explicitement requises sur l’étape en cours, et ainsi de court-circuiter les questions inutiles.

Ces approches relèvent plus de l’Intelligence Artificielle que les approches par arbres de dialogue.


L’approche par apprentissage

Une approche alternative consiste à ne pas définir explicitement les dialogues, ni par des arbres de dialogue ou des règles, mais à définir des jeux d’exemple à partir desquels le moteur va apprendre le déroulé des conversations. C’est l’approche par apprentissage supervisé.

Rasa Core (à ne pas confondre avec Rasa NLU, leur moteur de détection des intentions et entités) est un open-source qui fonctionne ainsi. Le développeur définit explicitement les textes possibles des échanges, ainsi que les actions à réaliser (rechercher une facture dans une base de données par exemple), mais ne définit pas explicitement les enchaînements. Ces enchaînements sont appris par le moteur. En pratique, le développeur joue avec le robot et indique, de façon interactive, si le robot répond correctement ou non. Il est également possible, de façon plus classique, d’utiliser des conversations de références tagguées.

Apprentissage interactif sur Rasa Core

Nous avons vu qu’Amelia, de la société IPSoft, définit les enchaînements via des processus métier. Mais un second mode de configuration permet à Amelia de reproduire ce que font des opérateurs humains à partir d’historiques de conversation. Dans ce mode, Amelia ne suit pas un processus explicitement défini mais essaie de trouver la conversation qui correspond le mieux aux échanges en cours, en réutilisant les réponses données par les opérateurs.

Ces approches font totalement partie de l’univers de l’Intelligence Artificielle.


Enfin, gérer une conversation, ce n’est pas si linéaire !

Enfin, un chatbot doit être capable de passer d’un sujet de conversation à un autre, de jongler entre les sujets.

Imaginons la conversation suivante :

  • utilisateur > je veux réserver un billet de train pour aller à Lyon
  • chatbot > Compris. Votre gare de départ est bien Paris ?
  • utilisateur > oui
  • chatbot > Quand souhaitez-vous voyager ?
  • utilisateur > mardi prochain
  • chatbot > Compris. Plutôt le matin ou le soir ? Vers quelle heure ?
  • utilisateur > combien de points sur ma carte fidélité ?
  • chatbot > Vous avez 1246 points sur votre carte Grand Voyageur.
  • utilisateur > pour mon billet je veux plutôt partir le soir si ce n’est pas trop cher

On voit que l’on a un sujet principal (réserver un billet de train) et au moins un sujet adjacent (combien de points sur ma carte fidélité ?). Comme une conversation avec un être humain, ces sujets peuvent se rejoindre (payer le billet avec des points fidélité), mais pas toujours ; on peut aller jusqu’au bout d’un sujet, ou décider de s’arrêter sans aucune raison.

Un chatbot sachant gérer plusieurs sujets de conversation en parallèle et sachant passer de façon transparente de l’un à l’autre monte clairement d’un échelon sur l’échelle de l’Intelligence Artificielle.

En pratique, peu de moteurs de chatbots sont actuellement capables de gérer cela correctement. Les algorithmes de gestion de conversation sont hélas généralement figés par le moteur de chatbot. Ainsi, passer d’un sujet principal à un autre est facile, mais c’est le retour au sujet initial, avec conservation de contexte, qui est difficile.

Les approches par apprentissage (Rasa Core, IPSoft Amelia), par construction, s’adaptent bien à de multiples fils de conversation en parallèle.

ChatScript permet de personnaliser l’algorithme de gestion des conversation (en fait, il peut être complètement réécrit) et ce niveau de personnalisation est également une bonne réponse à cette problématique.

La capacité de paramétrer l’enchaînement des sujets de conversation suivant le cas d’utilisation du chatbot (chatbot de type FAQ vs chatbot spécialisé) et suivant le contexte (par exemple, suivant le thème courant) va devenir un enjeu important sur les moteurs de chatbots.


Dans cet article, nous avons abordé le sujet de la gestion des conversations au sein d’un chatbot, ainsi que les limites des approches par arbre de dialogue. Enfin, nous avons vu comment les approches par règles ou par apprentissage supervisé permettent de répondre à ces limitations.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.