Message d'erreur

  • Warning: Trying to access array offset on value of type null in mix_preprocess_html() (line 269 of modules/contrib/mix/mix.module).
    mix_preprocess_html()
    call_user_func_array() (Line: 261)
    Drupal\Core\Theme\ThemeManager->render() (Line: 491)
    Drupal\Core\Render\Renderer->doRender() (Line: 248)
    Drupal\Core\Render\Renderer->render() (Line: 158)
    Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 638)
    Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 153)
    Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse() (Line: 90)
    Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray()
    call_user_func() (Line: 111)
    Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (Line: 186)
    Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76)
    Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53)
    Drupal\Core\StackMiddleware\Session->handle() (Line: 48)
    Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28)
    Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 32)
    Drupal\big_pipe\StackMiddleware\ContentLength->handle() (Line: 191)
    Drupal\page_cache\StackMiddleware\PageCache->fetch() (Line: 128)
    Drupal\page_cache\StackMiddleware\PageCache->lookup() (Line: 82)
    Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 45)
    Drupal\services\StackMiddleware\FormatSetter->handle() (Line: 48)
    Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51)
    Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36)
    Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51)
    Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 741)
    Drupal\Core\DrupalKernel->handle() (Line: 19)
    
  • Warning: Trying to access array offset on value of type null in mix_preprocess_html() (line 269 of modules/contrib/mix/mix.module).
    mix_preprocess_html()
    call_user_func_array() (Line: 261)
    Drupal\Core\Theme\ThemeManager->render() (Line: 491)
    Drupal\Core\Render\Renderer->doRender() (Line: 248)
    Drupal\Core\Render\Renderer->render() (Line: 158)
    Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 638)
    Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 153)
    Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse() (Line: 90)
    Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray()
    call_user_func() (Line: 111)
    Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (Line: 186)
    Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76)
    Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53)
    Drupal\Core\StackMiddleware\Session->handle() (Line: 48)
    Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28)
    Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 32)
    Drupal\big_pipe\StackMiddleware\ContentLength->handle() (Line: 191)
    Drupal\page_cache\StackMiddleware\PageCache->fetch() (Line: 128)
    Drupal\page_cache\StackMiddleware\PageCache->lookup() (Line: 82)
    Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 45)
    Drupal\services\StackMiddleware\FormatSetter->handle() (Line: 48)
    Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51)
    Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36)
    Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51)
    Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 741)
    Drupal\Core\DrupalKernel->handle() (Line: 19)
    

Comment les consommateurs dressent les chatbots

21/03/2019

C’est une forme émergente de collaboration entre marques et consommateurs qui se dessine : entraîner les chatbots à répondre efficacement aux demandes des utilisateurs. Ulysse Bottello, Head of Design de The Chatbot Factory spécialisé dans la conception de bots, lève le voile sur les coulisses de la mise au point des agents conversationnels.

Ulysse Bottello

À quel stade les entreprises font-elles intervenir les utilisateurs finaux dans la conception d’un bot ?

Ulysse Bottello : Les utilisateurs doivent entrer au plus tôt du projet. Ce sont leurs usages et leurs demandes qui vont constituer le périmètre de connaissance du chatbot. Avec certains clients, nous avons parfois noté un décalage entre ce à quoi la marque veut répondre, et ce que les utilisateurs veulent vraiment savoir. Un exemple : pour définir le périmètre de son bot, un de nos clients s’est inspiré des questions qu’il recevait le plus souvent, les FAQ, mais en lançant son bot, il a supprimé tous les autres moyens pour accéder à la marque. Résultat, le bot avait énormément de requêtes que l’on n’avait pas anticipées : « Quel est votre numéro de téléphone ? », « C’est quoi votre mail ? », « Comment vous contacter ? », etc. Cela montre l’écart entre les FAQ et les usages. Il faut bien comprendre en amont ce que veulent vraiment les utilisateurs, cela évite des déconvenues et assure une bonne expérience utilisateur.

C’est ce qui s’est passé avec Air France, que vous avez comme client, pour la mise au point de leur chatbot ?

Le bot d’Air France fonctionne bien justement parce que, dans la méthodologie, le process a commencé par de l’écoute. On a mis à plat toutes les requêtes qui arrivaient au service client, via le mail, le tchat, le téléphone... Et on a fait une « clusterisation » : on a regroupé les questions récurrentes par grandes thématiques. Cela a montré que le thème qui revenait le plus souvent, ce n’était pas l’achat, c’était la politique des bagages. Certes, une FAQ est présente sur le site. Mais elle est très dense et il n’est pas facile d’être rassuré sur ce que l’on a le droit d’emporter en cabine, en soute, etc. Il y avait un réel besoin d’accompagnement sur la question des bagages. Cela a été le point de départ de la création de « Louis » sur Facebook Messenger, le chatbot dédié à toutes les questions liées aux bagages.

La première étape est donc bien de comprendre quels sont les sujets de discussion avec la marque. En parallèle, il faut aussi avoir en tête quelles sont les requêtes que l’on peut automatiser. Je pense à certaines questions liées à la vente qui peuvent être assez compliquées et que l’on ne peut pas automatiser.

Pour beaucoup de monde, un chatbot s’apparente encore à une boîte noire. Comment fonctionne-t-il vraiment et quel rôle joue l’intelligence artificielle ?

L’IA, cela reste en effet un buzzword utilisé à toutes les sauces. Une étude anglaise vient de montrer que 40 % des startups européennes qui disaient faire de l’intelligence artificielle n’en faisaient pas vraiment. Il y a beaucoup de fantasmes autour de l’IA et il faut rester assez pragmatique.

Pour un chatbot, il y a donc d’abord la définition du périmètre de connaissance, ce qui donne le socle des réponses disponibles. En parallèle, il faut entraîner un algorithme de compréhension du langage naturel. C’est un logiciel assez simple qui va déterminer les intentions des utilisateurs. On commence par lui donner un certain nombre de phrases, de requêtes, telles que les formulent les gens. Pour Air France : « Est-ce que je peux voyager avec mon chat ? », « C’est quoi la taille maximale pour une planche de surf ? »… À partir de toutes les expressions, l’algorithme va étudier les patterns, les modèles, la récurrence des mots, la place des mots dans la phrase, pour faire en sorte qu’à partir de 5, 10, 20, 30 phrases, il puisse en comprendre le double ou le triple.

C’est la phase d’entraînement. Le langage est complexe et riche, et il est trop compliqué de tout déterminer. Il est presque impossible de réussir à donner au départ toutes les façons différentes de dire « Combien ça coûte de voyager avec mon chat ? ».

Comment les consommateurs, les utilisateurs finaux, interviennent concrètement dans cet entraînement ?

L’entraînement se fait en deux temps. Il y d’abord ce que nous appelons le pré-entraînement. C’est la première phase de création du chatbot, quand on l’alimente avec des exemples de phrases. On parle d’utérances. Ces phrases désignent la même intention, mais avec des formulations différentes. Combien doit peser ma valise ? Quel doit être son poids ? Etc.

Cette phase se fait en interne, souvent par la personne qui crée le bot, en faisant aussi généralement appel aux conseillers en face du client, qui connaissent ses requêtes récurrentes et comment il les exprime. L’objectif est que le chatbot ait déjà un bon niveau de compréhension quand on le met en ligne.

Puis tout au long de la vie du bot, il va y avoir un suivi, souvent internalisé, pour voir ce que le bot a compris, et pas compris. On dit que l’utilisateur entraîne le chatbot. Et ce sont bien ses phrases et ses demandes qui permettent d’ajuster le bot. Mais en pratique, cet entraînement est toujours supervisé aujourd’hui par un expert. C’est bien un humain qui a le contrôle de la machine.

Comment se fait le suivi de cet entraînement ?

Notre plateforme, Tolk.ai, propose un tableau de bord avec des indicateurs pour traquer si le bot a bien fait son travail, combien de problèmes il a résolu… Un tableau montre ainsi ce qui a matché, c’est-à-dire les cas dans lesquels on a donné une réponse à une requête utilisateur. Il faut alors vérifier si le bot a bien envoyé la bonne réponse. Et pour les requêtes qui n’ont pas matché, la méthode est assez binaire. Est-ce que la question était dans le périmètre de connaissance du chatbot ? Si oui, il faut entraîner cette requête pour la faire comprendre au bot, car il était en capacité de donner la bonne réponse mais il n’a pas saisi la question. Sinon, si la requête n’est pas dans le périmètre, il faut créer une nouvelle question avec une réponse associée. Notre plateforme permet de pré-entraîner une nouvelle réponse à partir de la requête de l’utilisateur. On peut adjoindre à cette réponse une URL, des boutons, des images, et la mettre en ligne dans la foulée.

La rapidité peut être importante en cas d’événements éphémères ou exceptionnels, comme une grève dans une compagnie aérienne. On peut réagir très vite si l’on observe que l’on reçoit beaucoup de questions sur un sujet qui n’était pas anticipé.

Les premiers utilisateurs d’un nouveau bot sont-ils prévenus qu’il s’agit d’une version bêta, amenée à s’améliorer ?

C’est pour nous une bonne pratique d’expliquer que le chatbot est dans ses premiers tours de chauffe. Cela contribue aussi au design conversationnel. Si le bot a une mauvaise compréhension, ou que l’utilisateur n’est pas satisfait, il vaut mieux expliquer qu’il s’agit encore d’une bêta, et que cette conversation va permettre d’améliorer le chatbot. Cela permet de s’inscrire dans une relation de collaboration avec l’utilisateur.

Y a-t-il une différence d’entraînement entre un chatbot textuel et vocal ?

Non, les process sont les mêmes. Au niveau technique, dans l’apprentissage, le vocal est traduit en texte. On a une brique de « speech to text », qui permet de faire tout le traitement dans le format texte. Et en retour, on fait du « text to speech ».

La différence fondamentale avec le vocal est dans l’usage. Les gens utilisent surtout le vocal dans leur voiture ou dans la maison : ils demandent une action et ils veulent une réponse. Ils ne sont pas dans la conversation. « Alexa, quel temps fait-il ? », « Dis Google, allume-moi la lumière »… Avec aussi quelques spécificités au niveau du langage, comme des tics, des accents ou des façons de parler qui sont différentes, et qu’il faut apprendre au bot.