Apprendre à créer un chatbot facilement avec la solution open-source Tock Studio

Therrode Pierre

« De loin, le plus grand danger de l’intelligence artificielle est que les gens concluent trop tôt qu’ils la comprennent. » Eliezer Yudkowsky

Pour réagir au contenu de cet article, un espace de dialogue vous est proposé sur le forum. Commentez

- Titre : Apprendre à créer un chatbot facilement avec la solution open-source Tock Studio

- Auteur : Therrode Pierre

- Parution : 20 février 2025

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2025 pi-2r. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Qu’est-ce qu’un chatbot ?

- II-1. Petit retour en arrière

- II-2. 2011 le début de la révolution

- III. Tock et SCNF Connect and Tech, une innovation rendue publique

- III-1. Mais concrètement en quoi cette solution est-elle si innovante ?

- III-2. C’est sûrement un produit cool fait par des geeks, mais qui l’utilise ?

- IV. Découvrir et jouer avec TOCK

- IV-1. Un petit tour d’horizon du propriétaire : découvrir l’outil Tock Studio

- IV-2. Création un bot de recrutement pour votre entreprise

- IV-2-1. Configurer Tock Studio

- IV-2-2. Les premières qualifications

- IV-2-3. Qualifier les intentions métier

- IV-2-4. Créer des entités

- IV-2-4-1. Créer une entité « domaine »

- IV-2-4-2. créer une entité « région »

- IV-2-5. Créer des parcours et des réponses

- IV-2-6. Mettre en place un connecteur Web

- IV-3. Trucs et astuces sur Tock Studio

- IV-3-1. Rattacher des synonymes aux entités

- IV-3-2. Mettre en place une story scriptée

- IV-3-3. Ma question est dans la story/catégorie build, comment faire pour la mettre dans la bonne story/catégorie ?

- IV-3-4. Story Ending

- IV-3-5. Uploader des images ou documents

- IV-3-6. Réponse alternative

- IV-3-7. Tock Analytics et export CSV

- IV-3-8. Réaliser un dump de la recette vers la prod (ou inversement)

- IV-3-8-1. Export

- IV-3-8-2. Import

- IV-3-9. Lancer Tock Studio en local depuis un IDE (Intellij)

- V. Conclusion

- VI. Liens

- VII. Remerciements

I - Introduction

Dans l'ère actuelle où l'automatisation numérique progresse, les robots jouent un rôle croissant dans la société, libérant l'humain de tâches répétitives et peu enrichissantes pour se concentrer sur des activités plus significatives. Cet article se focalise sur une catégorie spécifique de robots : les agents conversationnels.

L'idée d'un assistant virtuel disponible 24/7 pour répondre aux interrogations fréquentes dans un cadre professionnel est séduisante. Comment alors intégrer un chatbot à des plateformes comme Teams, Slack, ou un intranet sans impacter excessivement le budget informatique ? Quelle solution adopter, et est-il nécessaire d'avoir des compétences en développement ou en science des données ?

Parmi les nombreuses options disponibles, cet article présente Tock Studio, un chatbot open source initialement développé par SNCF Connect & Tech (anciennement Oui.sncf), et utilisé en production depuis plusieurs années.

TOCK, acronyme de The Open Conversation Kit, offre une solution efficace pour déployer rapidement des chatbots. Son principal avantage réside dans son indépendance vis-à-vis des plateformes numériques majeures comme AWS, Google, ou Microsoft, permettant ainsi une intégration aisée dans l'infrastructure existante d'une entreprise sans dépendance aux GAFAM, ou tout autre éditeur numérique.

Le code source de Tock Studio et de ses plugins est librement accessible sur GitHub. Un exemple notable de son utilisation est le déploiement en avril 2020 d'AlloCovid, une solution téléphonique mise en place durant la première vague de COVID-19 pour soulager les services d'urgence et guider les utilisateurs vers les meilleures options.

II - Qu’est-ce qu’un chatbot ?

Avant d'aborder le logiciel Tock Studio et son fonctionnement, il est important de comprendre ce qu’est un chatbot.

Un chatbot, ou agent conversationnel, est un programme informatique avancé capable d'interpréter et de répondre aux phrases humaines, que ce soit par écrit ou à l’oral.

Ces dernières années, souvent sans pleinement en prendre conscience, nous avons intégré l'utilisation de ces agents conversationnels dans notre vie quotidienne à travers nos smartphones et enceintes connectées (pensez à des commandes comme « Dis Siri...  » ou « Ok Google... »). Cette évolution, notable dans les années 2010, a été impulsée par des avancées technologiques qui ont amélioré les algorithmes de traitement du langage naturel (NLP pour Natural Language Processing en anglais).

Ces algorithmes ont introduit deux concepts clés : l'intention et l'entité. L'intention représente l'idée principale ou le but d'une phrase. L'entité, quant à elle, est identifiée comme un mot-clé au sein de cette phrase.

Prenons l'exemple d'une requête faite à un bot, comme « premiers départs de Nation vers Denfert-Rochereau ». Dans l'interface d'administration de Tock Studio, cela se traduit de la façon suivante :

La requête initiale (1) est analysée par le bot qui identifie le concept central comme étant un « premier départ » (2). Nous explorerons plus tard comment cette déduction est réalisée. Il identifie également les éléments (3) et (4) comme des entités ou mots-clés, ce qui est crucial pour comprendre la demande, en reconnaissant un point de départ et une destination.

Ces éléments sont ensuite utilisés pour activer divers processus (appels d'API, traitement des données, etc.) pour apporter une réponse adéquate à l'utilisateur. Bien que cela puisse sembler simple, le langage humain est souvent complexe, même pour les humains, et encore plus pour un programme informatique. Dans certains cas, l'essence d'une phrase peut signifier quelque chose de complètement différent de son sens initial, en raison de l'utilisation de figures de style (comme l'hyperbole, la métaphore, la personnification, etc.) ou de son ambiguïté intrinsèque. Par exemple, lorsqu'on dit « l'avocat de Pierre est bon », fait-on référence au fruit ou à la personne défendant les droits de Pierre ?

II-1 - Petit retour en arrière

Il y a encore quelques années, la capacité de compréhension des chatbots était restreinte par les premières générations d'algorithmes et les limites technologiques, notamment en matière de puissance de calcul, souvent coûteuse.

Les contraintes algorithmiques exigeaient des développeurs qu'ils prennent en compte une vaste gamme de paramètres potentiels pour la conversation. Cette complexité rendait les efforts de compréhension assez limités et souvent difficiles à gérer.

En effet, les requêtes de différents utilisateurs, comme celles de l'utilisateur A par rapport à l'utilisateur B, peuvent varier considérablement, aggravées par des différences culturelles (par exemple, les requêtes en français comparées à celles en anglais) ou contextuelles (demandes concernant les horaires de transport par rapport à celles sur le cours du bitcoin). Un agent conversationnel doit donc saisir à la fois le contexte (ou l'intention) et les mots-clés (ou entités). Se fier uniquement aux mots-clés pour le fonctionnement d'un chatbot rend son développement et son utilisation complexe et désordonné.

II-2 - 2011 le début de la révolution

La révolution de la compréhension du langage a lieu en 2011 avec l’exploitation du machine learning, lorsque IBM avec son logiciel Watson gagne au Jeopardy, le jeu télévisé Américain auquel les candidats doivent répondre à des questions. Le robot, qui était en compétition face à des humains, était capable de comprendre les questions afin d’y répondre.

Dès lors, l'intelligence artificielle a été mise en lumière auprès du grand public ouvrant des perspectives sur le champ des possibles, notamment avec la mise en place d’agent conversationnel.

Ces agents conversationnels utilisent l'intelligence artificielle et l'analyse sémantique, qui permet de décoder le sens des requêtes textuelles ou vocales, pour apprendre et s'améliorer.

Il y a principalement deux méthodes d'apprentissage pour ces systèmes :

1. L'apprentissage autonome, où le bot apprend et répond de manière indépendante, souvent par un processus d'essai et d'erreur.

2. L'apprentissage assisté, où l'intervention humaine joue un rôle dans la phase de qualification des requêtes, aidant ainsi le robot à affiner sa compréhension.

L'apprentissage des agents conversationnels s'effectue habituellement en deux phases principales :

1. Dans un premier temps, l'apprentissage débute avec un corpus d’informations que l’équipe métier va soumettre au bot. Ce premier apprentissage va permettre à l’agent conversationnel de comprendre les premières questions/intentions afin de correctement y répondre.

2. Par la suite, l’équipe humaine va soumettre le bot à des questions divergentes, qui sortent du modèle qu’il aura préalablement appris, afin de lui faire comprendre d’autres questions dont la réponse est la même (ex. : reformuler la demande, faire des fautes d’orthographe, etc.).

Cette deuxième phase s’appelle la qualification, étape essentielle pour l'amélioration continue du bot, pouvant se dérouler tant en phase de développement qu'en production. Il est important de souligner qu'en phase de production, ce sont généralement les utilisateurs du chatbot qui posent les questions. Toutefois, la responsabilité de la qualification des questions et des réponses incombe toujours à l'équipe technique pour garantir la qualité des réponses fournies.

III - Tock et SCNF Connect and Tech, une innovation rendue publique

TOCK, acronyme de The Open Conversation Kit (https://doc.tock.ai/), a été développé au sein de SNCF Connect & Tech (précédemment connu sous le nom de Oui.sncf), dans leur département Innovation. Lancé en 2016 pour le site de vente de billets de train oui.sncf, TOCK a révolutionné l'interaction utilisateur en permettant les requêtes via une barre de recherche intuitive, sans nécessiter un formulaire standard.

L'objectif de cette innovation était de simplifier le processus de demande de voyage pour les utilisateurs, permettant au bot de répondre de manière naturelle, comme le ferait un être humain. Par exemple, dans une situation datant de décembre 2020, un voyageur souhaitant se rendre de Paris à Brive le soir suivant pourrait exprimer sa demande au Ouibot.

Ancienne page web du ouibot permettant de comprendre la demande client et d’en donner un résultat.

Le bot était alors capable de saisir la gare de départ, la destination et le moment souhaité pour le voyage, offrant ainsi des réponses pertinentes et adaptées à l'utilisateur.

III-1 - Mais concrètement en quoi cette solution est-elle si innovante ?

En 2016, l'équipe d'Innovation de SNCF Connect & Tech a initié le développement d'un outil interne dédié à l'interprétation des commandes vocales sur mobile. Au départ, ce framework, ou boîte à outils, produisait des performances comparables à celles des solutions payantes disponibles sur le marché. Cependant, contrairement à ces dernières, souvent perçues comme des « boîtes noires », les développeurs avaient un accès complet au code source. Cette transparence leur offrait une plus grande flexibilité et capacité d'innovation sur le produit.

Pour atteindre un niveau de performance équivalent à celui des solutions payantes, l'équipe technologique a créé la plateforme Tock. Elle a été élaborée en intégrant divers composants open source, principalement issus du milieu académique, pour développer des capacités de compréhension du langage naturel (NLU). La plateforme exploite des outils open source tels que OpenNLP (https://opennlp.apache.org/), Stanford NLP (https://stanfordnlp.github.io/CoreNLP/) et Duckling (https://duckling.wit.ai/).

Avec l'évolution des besoins de l'entreprise et le développement de la plateforme Tock, des connecteurs ont été ajoutés pour relier Tock à divers canaux de communication tels que Messenger, WhatsApp, Teams, ainsi que des dispositifs d'assistance vocale comme Google Home ou Alexa.

Exemple de liste de connecteurs disponible depuis https://demo.tock.ai/configuration/bot

En 2019, les concepteurs et développeurs de l’application ont souhaité rendre leurs travaux open source, la direction de Oui.SNCF (actuellement SNCF Connect & Tech) autorise la diffusion et le partage de la solution TOCK sur la plateforme de partage GitHub (https://github.com/theopenconversationkit/tock).

Cette volonté répond à un constat simple :

Faire rayonner le savoir-faire technique en dehors des locaux de Sncf Connect & Tech en proposant un outil communautaire gratuit qui répond à des enjeux spécifiques.

III-2 - C’est sûrement un produit cool fait par des geeks, mais qui l’utilise ?

Depuis que le code source de Tock a été rendu accessible au public sur GitHub (https://github.com/theopenconversationkit/tock), la plateforme a connu une évolution continue, avec une augmentation notable de ses contributeurs et des mises à jour régulières.

Le framework a également gagné en popularité auprès des entreprises françaises, tant petites que grandes. Cette préférence s'explique par la reconnaissance des avantages de l'open source et par le besoin de contrôler les données entrantes (les questions posées) et sortantes (les réponses fournies).

Aperçu du dépôt public de la solution Tock Studio

Sur les entreprises et entités internes à la SNCF qui ont été séduites par la solution Tock, on peut citer :

SNCF Connect, qui depuis la barre de recherche universelle, permet de comprendre les intentions des voyageurs, comme avec l’exemple suivant :

qui renvoie vers la page des horaires et tarifs du trajet demandé.

Le bot Inoui se trouvant dans les TGV InOui, permet aux voyageurs de répondre à leurs interrogations.

Aperçu du bot InOui

Tilien, le bot qui est présent sur le site transilien.com et qui est le compagnon des voyageurs qui prennent ce type de transport, fournit pléthore d’informations.

Aperçus du bot Tilien

Le BotRH, l’assistant des RH de l’entreprise SNCF, qui s’adresse aux 150 000 employés qui ont des questions de 1er niveau dans le domaine des ressources humaines.

Aperçu du bot RH

Concernant les entreprises externes, on peut citer :

- EDF qui depuis janvier 2021 utilise la solution Tock, pour faire fonctionner son Callbot (https://doc.tock.ai/tock/master/about/showcase.html#edf-callbot) ;

- la banque Au max pour moi (https://doc.tock.ai/tock/master/about/showcase.html#maxbot-bank-bot-for-aumax-pour-moi).

Dernièrement, des universités ont fait le choix d’opter pour la solution Tock Studio. L'Université de Lorraine, en particulier, a partagé son expérience sur l'utilisation d'agents conversationnels dans ce contexte (https://youtu.be/EJx_ryp69CM?t=1773).

extrait de la conférence web intitulée 8 Assises du CSIESR 2022

Un dernier exemple amusant est par exemple avec l’entreprise spoon (https://www.spoon.ai/) qui crée des avatars numériques et qui ont connecté leur solution à celle de Tock Studio pour interagir avec les utilisateurs. Ceux-ci peuvent ainsi interagir avec le bot via un micro et l’avatar répond avec une voix humaine. Cette expérience offre une dynamique ludique sur des stands ou lors de manifestations culturelles.

Utilisation de l’avatar Spoon avec Tock Studio lors de l’événement du DevFest 2023

Il existe de nombreux autres exemples d’entreprises qui ont fait le choix de la solution open source Tock et je vous invite à faire un tour sur ce lien si vous souhaitez avoir de plus amples exemples : https://doc.tock.ai/tock/master/fr/about/showcase.html

IV - Découvrir et jouer avec TOCK

Dans cette partie-là, nous allons mettre en pratique l'outil Tock Studio en créant un bot de recrutement accessible depuis une simple page web. L’idée est de prendre en main Tock Studio depuis un environnement de démo, afin de jouer avec certains concepts propres au chatbot.

IV-1 - Un petit tour d’horizon du propriétaire : découvrir l’outil Tock Studio

Pour commencer, nous allons nous rendre sur la page de démonstration de Tock Studio, qui est à cette adresse : https://demo.tock.ai/nlp/inbox.
Regardons plus en détail l’interface d'administration de Tock Studio.

Présentation de l'espace admin de Tock Studio

1 - Language understanding : page principale permettant de voir les demandes des clients, de qualifier des phrases (intentions), de créer des entités, de tester une phrase pour voir ce que le bot peut répondre, etc.

Language Understanding

2 - Stories and answers : cette partie permet de regrouper les stories, parfois appelées catégories ou thématiques. Dans cette idée, il faut voir cela comme une liste de thématiques regroupant des questions/réponses auxquelles le bot a été entraîné à comprendre pour y apporter une réponse.

Stories and Answers

3 – Tests : cette page permet de tester les connecteurs qui sont activés sur la plateforme, en faisant comme si l’on passait directement par un canal tiers tels que le web, TEAMS, Messenger, etc.

Test

4 – Analytics : tout comme Google Analytics, Tock Studio possède son propre service d'analyse d'audience, permettant ainsi de voir le nombre d’utilisateurs, les intentions les plus demandées, ainsi que les connecteurs les plus utilisés.

Analytics

5 - Model quality : cette page permet de connaître le pourcentage de réussite aux questions auxquelles le bot à répondu. On estime qu'un taux de réponse de plus de 70% qui tend vers les 80% est un bot bien entraîné.

Model Quality

6 – Settings : cette partie permet de paramétrer Tock Studio,en définissant un nom d’application qui utilise une librairie NLU spécifique, les connecteurs que vous souhaitez utiliser, et le namespace du bot.

Settings

7 - FAQ Training : cette partie permet de créer une Foire Aux Questions, auquel le bot peut répondre lorsqu’il reconnaît une question qui s’apparente.

FAQ

IV-2 - Création un bot de recrutement pour votre entreprise

Information : l’histoire et les personnages sont totalement imaginaires, ils ont toutefois été inscrits dans le réel. La fiction se place avant la montée médiatique de chatGPT ( fin 2022) et après la période COVID, avec la relance des recrutements.

9h30, dans l’un des locaux Space YZ à la Défense, une réunion est portée sur les enjeux de la mise en place d’un outil permettant au candidat de connaître les offres d’emplois de l’entreprise. Au cours de cette réunion, il en ressort que les recruteurs aimeraient avoir plus de temps pour échanger en physique avec les candidats au lieu de passer leur temps à répondre aux questions numériques des potentiels candidats.

François, un des développeurs qui assistait à cette réunion, a entendu parler de Tock Studio lors du Devoxx. Il se souvient qu’un des créateurs de la solution avait fait une démonstration en live de cet outil, et qu’il était, lui semble-t-il, assez simple à prendre en main et qu’il pourrait facilement faire un POC qui répond à la problématique de la réunion : mettre en place un agent conversationnel pour répondre aux questions de 1er niveau des potentiels candidats et permettre aux recruteurs de gagner en qualité lors des entretiens physiques, en leur octroyant plus de temps.
- « Il nous faudra un POC d’ici 3 mois pour une mise en production dans 6 mois », conclut le responsable de la tech qui anime la réunion, « libre à vous de nous proposer des solutions pertinentes d’ici les 3 mois à venir, et bien sûr, on reste sur une solution souveraine, je ne veux pas de solution d’un GAFAM ».

La journée se passe, le soir François commence à naviguer sur le site de Tock Studio : https://doc.tock.ai/, lit un peu la documentation et voit que l’on peut tester l’outil depuis un espace de démonstration en ligne : https://demo.tock.ai/

IV-2-1 - Configurer Tock Studio

Création d'un compte Tock Studio

Là, il commence à renseigner les étapes. Pour la partie langage (Choose your Langage), il va choisir le Français (French). Pour la deuxième étape (Select a first Channel), il se dit que commencer par un connecteur simple, comme le Web, cela peut-être une bonne chose, afin de ne pas perdre trop de temps à configurer des connecteurs trop spécifiques. Enfin, à la 3e et dernière étape, il accepte la création (Create) de ce nouvel assistant, pour ainsi commencer à entraîner le bot.
« wouah, rapide et efficace ! », se dit-il.

IV-2-2 - Les premières qualifications

Après cette création, l'application Tock Studio le redirige vers une nouvelle page qui appartient à la catégorie Language understanding, l’invitant à formuler une demande.

Language Understanding

Voulant un simple bot, François écrit « Bonjour » dans la barre et appuie sur GO. Là, il se rend compte que le bot n’a pas réussi à comprendre sa demande, et lui retourne une intention de type Unknown.
Il décide donc de créer une intention de type « bonjour ». Pour cela, il clique sur le + à côté du résultat Unknown.

Ajout d'une qualification

Là, une fenêtre modale s’ouvre, lui demandant de renseigner la nouvelle intention.

Création d'une nouvelle Intention

Il écrit bonjour pour le champ Label, Name* et Category. Pour la description, il écrit juste un résumé de l’intention, puis valide la création (CREATE). À peine validé, Tock Studio change l’intention Unknown par Bonjour. Là, François valide cette qualification via le bouton VALIDATE.
Là, François comprend qu’il vient de qualifier une phrase pour son modèle.
Toujours depuis cet onglet (NEW SENTENCE), il écrit le mot salut. Le bot ne comprenant pas encore cette demande qui est en Unknown, il qualifie cette phrase avec l’intention Bonjour.
Là, il teste avec un remerciement en testant avec le mot Merci. Tock Studio pense que ce mot se réfère à l’intention Bonjour, or ce n’est pas le cas, il décide donc de créer l’intention au revoir en procédant de la même sorte que pour l’intention Bonjour.

Création d'une seconde intention

« Bon, j’ai réussi à qualifier des phrases avec l’intention bonjour et au revoir, il faut maintenant que je me penche sur des intentions beaucoup plus métier ».

IV-2-3 - Qualifier les intentions métier

François teste donc cette première approche avec la phrase suivante : « je cherche un travail ». Bien sûr, le bot pensant que cela est une intention de type Bonjour, qualifie cette phrase de la sorte, mais cela n’est pas bon. Il décide donc de créer l’intention travail (voir paragraphe Les premières qualifications).

Intention travail

Là, il teste à nouveau l’intention travail avec d'autres phrases du type « quels sont les jobs ? », « quelles sont vos offres ? », « je veux travailler », afin de qualifier ces nouvelles demandes.
- « ça serait sympa si je peux diversifier la compréhension des demandes en reconnaissant des mots dans la phrase ».

IV-2-4 - Créer des entités

IV-2-4-1 - Créer une entité « domaine »

En tapant « je cherche une offre d'emploi dans l'intelligence artificielle », Tock Studio reconnaît une intention de type travail. Cette reconnaissance est liée à la qualification qui à permis d'entraîner le bot sur la reconnaissance d’intention.

En sélectionnant les mots intelligence artificielle, deux options apparaissent : ADD ENTITY et CLOSE ENTITY SELECTION :

Ajout d'une entité lors de la qualification

En cliquant sur ADD ENTITY, une fenêtre modale s’ouvre avec des entités préconstruites. Ces entités déjà présentes par défaut sont issues de la librairie open source de Duckling (https://duckling.wit.ai/).

Modale des entités

N’ayant pas l’entité dont il a besoin, François décide de créer l’entité « domaine », puis valide cela en appuyant sur ADD. Dès lors, Tock Studio rafraichit l’écran avec les nouvelles informations qui sont l’intention (travail) et une entité (domaine).

Finalisation sur l'ajout d'une entité

- « Ok, bon là j’ai une entité sur une demande… Est-ce que Tock Studio est capable de gérer plusieurs entités ou est-ce qu’il est limité à une entité par intention ? », se demande François.

IV-2-4-2 - créer une entité « région »

Il teste alors avec une nouvelle demande : « je cherche une offre d'emploi dans le marketing sur Paris ». Tock Studio détecte bien l’intention, mais n’étant pas assez entraîné, il n’arrive pas à détecter les entités.
François clique donc sur marketing et sélectionne l’entité domaine qui est proposée, puis clique à nouveau sur Paris. N’ayant qu’une seule entité de proposée, François décide d’en créer une seconde, qu’il appellera région.
Après validation, Tock Studio comprend les deux entités (domaine et région) pour l’intention travail.

Ajout d'une nouvelle entité

Il ne reste plus qu'à François de valider (VALIDATE) cette compréhension. Après quelques entraînements, Tock Studio a reconstruit son modèle de compréhension pour s'adapter aux nouvelles demandes. Depuis l’onglet SEARCH, il est possible de voir les phrases qui ont été qualifiées ou qui sont en attente de qualification.

IV-2-5 - Créer des parcours et des réponses

En cliquant sur l’onglet Stories and Answers du menu de gauche, puis sur l’onglet STORIES, se trouve un tableau avec des stories. Dans la partie Build se trouve l’intention travail créée précédemment et en cliquant sur le stylo indiquant View/Edit Story, François décide ainsi de modifier cette story travail.

Editer une story

Une fois la page d’édition affichée, la première partie Answers présente le texte qui doit être affiché en réponse lorsqu’une intention est sollicitée. La seconde partie Actions, permet d’afficher des boutons avec des actions particulières.
François souhaite rajouter des propositions qui redirigent vers des intentions de type CDI ou CDD avec des réponses.
Pour cela, en bas de page de la story et dans l’encadré Actions, il clique sur le bouton + ADD ACTION :

Ajouter une action

Là apparaît un nouvel encadré avec des champs à renseigner.

Élément à renseigner

Dans la partie User phrase, François renseigne les mots « un CDI », et dans la partie Intent, il en déduit que c’est l’intention travail qu’il doit renseigner. Il clique ensuite sur l'icône de discussion Answer, pour écrire une réponse et la valide en cliquant sur UPDATE.

Ajout d'une réponse dans l'action de la story

« Ça serait bien que cette réponse affiche d'autres sous-propositions », se dit François.
En survolant l'encadré, il se rend compte que des options apparaissent, dont l’option + ADD ACTION en vert.

Ajouter d'autres actions

En cliquant dessus, une nouvelle action apparaît juste en dessous de la première.

Ajout d'une nouvelle action

« Tiens, c’est le mécanisme que je cherchais pour créer un système d'arborescence », se dit François, « voyons voir comment ça fonctionne ».
Dans la partie User phrase et Intent, il renseigne Paris et travail, puis dans la partie Answer, il renseigne les informations propres à la région.
« Si ça marche pour Paris, on doit aussi bien le faire pour Nantes ».
En cliquant une nouvelle fois, sur l’option + ADD ACTION en vert de la première action, François ajoute une nouvelle action en dessous, puis remplit à nouveau les champs nécessaires en mettant Nantes pour la partie User phrase et travail pour la partie Intent. « Bon j’ai fait une arborescence pour les CDI, je dois maintenant faire les CDD ».
François applique le même procédé que pour la partie CDI, ce qui lui donne ce rendu final.

Affichage de toutes les actions d'une story

« Bon, j’ai mon intention Bonjour, mon intention travail et quelques entités de paramétrées. Comment je peux rendre accessible le bot aux utilisateurs ? »

IV-2-6 - Mettre en place un connecteur Web

En se rendant sur la documentation officielle (https://doc.tock.ai/fr/), François remarque un lien vers le dépôt github (https://github.com/theopenconversationkit) qui est maintenu par les développeurs. En scrollant sur la page, il remarque le projet intitulé tock-react-kit. https://github.com/theopenconversationkit/tock-react-kit comporte la description suivante : React component to embed Tock chatbots into Web interfaces.

« Génial, se dit-il, ça semble correspondre à ce que je cherche ! »

Dans au chapitre Quick Start du Readme, il remarque qu’il peut adapter l’exemple de présentation pour son besoin.

Tock react-kit

En reprenant l’exemple issu du Quick Start et en changeant le champ TOCK_BOT_API_URL, par l’url d’appel de connexion au Tock Studio. En cherchant un peu dans les paramètres des connecteurs (SETTINGS > CONFIGURATIONS), il est possible d’obtenir l’url d'accès au connecteur afin de remplacer le champ TOCK_BOT_API_URL par cette valeur.

Connecteur web

Code source de la page HTML du bot

Une fois la page HTML sauvegardée, il suffit de lire la page HTML avec le navigateur de son choix et de commencer à dialoguer avec le bot :

Chatbot en pleine page

« Ça marche !! C’est génial ! », se dit François, « Faut que je montre ça demain aux autres ! ».

IV-3 - Trucs et astuces sur Tock Studio

IV-3-1 - Rattacher des synonymes aux entités

Sur Tock Studio, lorsqu’on souhaite améliorer la compréhension du bot, il est possible de rajouter des synonymes. Pour cela, il faut aller dans Language Understanting > ENTITIES et cliquer sur l’entité que vous souhaitez améliorer.
Pour l’exemple, nous allons cliquer sur l’entité région qui a été créée au chapitre précédent.

Exemple d'entities

Dès lors, la page s'agrandit avec de nouveaux champs. Dans le bloc Predefined values for pi-2r: region, il suffit de remplir le champ Add new predefined value et de cliquer sur + si vous souhaitez ajouter plus de synonymes. À la suite de cela, il ne vous reste plus qu'à valider en bas de page.

Ajout des valeurs pour une entité spécifique

IV-3-2 - Mettre en place une story scriptée

Note:
Sur l’espace de démonstration, il n’est pas possible de mettre en place une réponse scriptée. En revanche, vous pouvez activer cette fonctionnalité de votre côté lorsque vous installez Tock Studio de votre côté (en local ou sur un serveur).

Généralement une intention simple ressemble à ceci :

Story normal

Toutefois, il est possible d’écrire du code dans une story. Pour ce faire, il suffit d’aller dans Story & Answers > NEW STORY et de renseigner une nouvelle intention puis de cliquer sur ADD :

Création d'une story scriptée

Par la suite, au lieu de rédiger une réponse Simple, on peut opter pour l'utilisation de la fonction Script afin de composer une réponse programmée. Pour créer une telle réponse, il est nécessaire de rédiger du code en Kotlin, comme illustré dans l'exemple ci-après.

Story scriptée avec exemple de code

import ai.tock.bot.definition.*
import ai.tock.bot.definition.story
import ai.tock.bot.connector.web.webIntentQuickReply
import ai.tock.bot.connector.web.webMessage
import ai.tock.bot.connector.web.withWeb

val s = story("intention_scriptée") {

//--- reset du dialogue
resetDialogState()

//--- utilisation du connecteur Web
withWeb {
webMessage("Hello 👋, Vous utilisez la solution Tock Studio 🇫🇷 ! En quoi puis-je vous aider ? \n ",
listOf(
webIntentQuickReply(title="Recrutement", targetIntent= Intent("intention_recutement")),
webIntentQuickReply(title="FAQ", targetIntent=Intent("faq"))
))
}
end()
}

IV-3-3 - Ma question est dans la story/catégorie build, comment faire pour la mettre dans la bonne story/catégorie ?

Il arrive parfois que des intentions se retrouvent dans la catégorie build, et il est possible de changer cela.
Pour ce faire, il faut aller dans Story & Answers > STORIES, aller dans la catégorie build et sélectionner l’intention identifiée.
Prenons le cas où nous souhaitons déplacer l'attention salut dans la story greetings.

Story dans la mauvaise catégorie

Pour cela, il faut cliquer sur l'icône stylo de l’intention salut. Cela va ouvrir une nouvelle page qui ressemble à ceci. Ensuite, il faut à nouveau cliquer sur le pictogramme Edit.

Edit story

Une fois cela fait, une pop-up apparaît comme celle-ci, puis au niveau de l'entête Category, il est possible de sélectionner une catégorie parmi la liste déroulante, puis de cliquer sur Update pour valider le changement :

Changement de catégorie

IV-3-4 - Story Ending

Il est possible de rajouter une action à la fin d’une story, pour cela il faut aller dans Story & Answers > Rules puis dans Story Rules il faut cliquer sur le + (Add a new story Rule).

Ajout d'une réponse de fin

Sélectionner ensuite le bouton Ending (1) et sélectionner la Story (2) - on part du principe que la story est déjà créée - pour laquelle la Story Ending (3) doit apparaître, puis cliquer sur ADD RULE (4) :

Ajout d'une story ending

Une fois ajoutée, l’action est affichée plus bas dans la page, il est donc possible d’activer ou de désactiver l’action de fin, voire même de la supprimer :

Rendu final sur l'ajout de la story ending

IV-3-5 - Uploader des images ou documents

Certaines réponses du bot peuvent être programmées pour afficher des images ou des documents (ex. : un fichier PDF).
Prenons l’exemple suivant, nous souhaitons créer une story fiche de renseignements avec un fichier PDF que nous souhaitons mettre à disposition des utilisateurs. Pour ce faire, allez dans Stories and Answers se trouvant dans le menu de gauche, puis New Story. Dans l’input, renseigner la phrase suivante : « fiche de renseignement » puis appuyez sur ADD.

Création d'une story

La phrase est ensuite assignée à une story suivant l'historique de qualification passée (mais il est possible de changer cela). Dans la partie Answers, il faut rédiger le contenu du message :

Ajout d'un média

Puis cliquer sur Edit Media Message, pour arriver sur cette pop-up, qui permet d’uploader soit une image soit un fichier (dans notre cas, c’est un simple fichier PDF) en cliquant sur choisir un fichier et de finaliser l’action via le bouton UPDATE :

Choix du fichier

Une fois cette étape réalisée, il suffit de cliquer sur le bouton CREATE STORY :

Validation de la story

IV-3-6 - Réponse alternative

Il est possible de vouloir mettre en place une ou plusieurs réponses alternatives pour éviter de rentrer dans un schéma trop répétitif et/ou robotique. Pour ce faire, il faut aller dans Story & Answers > STORIES, puis de choisir une intention parmi les stories.
Dans l’exemple suivant, nous allons modifier l’intention Bonjour, en cliquant sur le globe I18n, à droite du texte central.

Simple story bonjour

Là, apparaît un nouvel encadré avec le texte d’origine et quelques options supplémentaires. En cliquant sur le + en bleu, un nouveau champ apparaît.

Ajout d'une réponse alternative

Par la suite, il suffit de remplir ce nouveau champ et de valider en cliquant en bas à droite sur le bouton UPDATE :

Mise à jour de la réponse alternative

IV-3-7 - Tock Analytics et export CSV

Dans la partie Analytics, il est possible d’exporter au format CSV, les informations des différents diagrammes. Pour cela, il suffit de cliquer sur l'icône Export data as CSV.

Export data as CSV

IV-3-8 - Réaliser un dump de la recette vers la prod (ou inversement)

Si vous souhaitez réaliser une copie de connaissance de Tock Studio d’un environnement A vers un environnement B, cela est possible en suivant quelques étapes clés.

IV-3-8-1 - Export

Pour cette partie, il est nécessaire d’aller dans SETTINGS > APPLICATIONS puis de cliquer sur l'icône de téléchargement suivant le nom de votre application.

Téléchargement du dump applicatif

Il faut ensuite aller dans STORIES & ANSWERS > STORIES . Dans la liste déroulante, sélectionner ALL puis cliquer sur Export Stories. Un fichier de type le_nom_du_namespace_app.json se télécharge.

Téléchargement du dump des stories

Enfin dans la partie STORIES & ANSWERS > ANSWERS et dans la liste déroulante Filter by locale, sélectionner ALL, puis cliquer sur l'icône Export. Un fichier de type lables.json se télécharge.

Téléchargement du dump des éléments answers

IV-3-8-2 - Import

Pour l’importation des données, il faut procéder au chemin inverse. Tout d’abord il faut aller dans SETTINGS > APPLICATIONS et à côté du nom de votre application, cliquer sur Edit.

Upload du dump applicatif

Là un nouvel écran s’affiche et en bas de la page, il faut dérouler l'entête Advanced options, puis cliquer sur Upload a DUMP et sélectionner le fichier le_nom_du_namespace_app.json pour l’importer.

Choix des options avancées

Upload définitif du dump applicatif

Il faut par la suite aller dans STORIES & ANSWERS > ANSWERS, puis cliquer sur l'icône Import et importer le fichier lables.json

Upload du fichier answers

Enfin, il faut ensuite aller dans STORIES & ANSWERS > STORIES, puis cliquer sur l'icône Import et importer le fichier le_nom_du_namespace_stories.json :

Upload du fichier stories

IV-3-9 - Lancer Tock Studio en local depuis un IDE (Intellij)

Pour lancer Tock Studio sur son poste de travail, il suffit de cloner deux dépôts. Depuis terminal et dans un dossier spécifique (exemple Documents), il faut récupérer le dépôt tock (ex. : git clone https://github.com/theopenconversationkit/tock.git) et le dépôt tock-docker (ex. : git clone https://github.com/theopenconversationkit/tock-docker.git). Assurez-vous au préalable d’avoir installé Docker sur votre poste de travail.

Dans un premier temps, il faut monter la base MongoDB, en suivant les premières instructions dans le chapitre Connect to the mongo database from an IDE. Une fois cela fait, il suffit de lancer la commande docker suivante : docker-compose -f docker-compose-mongo-only.yml up

Dès que cela est fait, il faut ouvrir le projet Tock Studio depuis l’IDE Intellij, puis de lancer :
1. BotAdmin
2. Duckling
3. NlpService

Développement de Tock Studio avec IntelliJ

Une fois cela fait, et s’il n’y a pas d’erreur, la partie back-end de tock studio est opérationnelle mais non accessible visuellement. Pour mettre en marche le front, il faut aller dans la partie bot > admin > web et suivre les instructions du README.md.

Aperçu du code source de Tock Studio avec IntelliJ

Une fois les commandes appliquées et le ng serve lancé, vous pouvez accéder à l’interface graphique de Tock Studio.

Lancement de Tock Studio en local

V - Conclusion

Cet article a exploré la nature d'un chatbot, mettant en lumière les concepts clés d'intention et d'entité.

Grâce à Tock Studio, il est possible de développer rapidement un agent de conversation, une fois familiarisé avec le logiciel. Cependant, l'article n'aborde pas certains aspects tels que le déploiement de Tock Studio sur un serveur ou dans le cloud, la sécurisation de l'application (notamment l'accès sécurisé au tableau de bord), ou encore le load balancing. Il est tout à fait faisable d'installer Tock Studio localement ou sur un serveur d'entreprise, offrant un contrôle total sur les données et le code source. Le bot peut être utilisé pour répondre à des besoins spécifiques ou pour des initiatives commerciales.

Dans un contexte commercial, un agent de conversation améliore l'expérience client, surtout si le modèle est bien formé, guidant ainsi l'utilisateur. Avec l'adoption généralisée du télétravail post-COVID, l'utilisation d'un chatbot est devenue essentielle. Disponible presque 24/7, il fournit des réponses immédiates aux employés ou clients, indépendamment de leur localisation ou fuseau horaire, sans attendre les heures de bureau. Quand il est intégré à d'autres services (comme les API), le chatbot peut répondre efficacement à un large éventail de requêtes.

En conclusion, bien qu'un agent conversationnel ne puisse pas remplacer complètement un employé, il s'avère être un outil précieux, soulageant le personnel des tâches répétitives et leur permettant de se concentrer sur des activités plus complexes et enrichissantes intellectuellement et humainement.

VI - Liens

Les liens utiles :

- Club des développeurs

- Conférence issue du Devoxx de 2018 fait par le créateur de Tock

- Présentation du Tock lors de l'événement “Open Source Experience 2021” fait par François Nollen

- Tock Studio est référencé au sein de l’institution Framasoft

- Les 13 meilleures solutions open source pour réaliser un chatbot

- AlloCOVID, un assistant vocal pour diagnostiquer le Covid-19

- AlloCovid : un numéro ouvert 24h/24 pour identifier les symptômes du Covid-19

- Hack & Bot : devenir « dresseur de bot » en 48h

- Développer un chatbot en 20 minutes qui combine réponses contrôlées et puissance de chatGPT

- Chatbot Stratégie

- Bot : un outil pour simplifier le management en entreprise

- Projet de Chatbot : le guide de A à Z pour créer son premier chatbot

- 8 ASSISES DU CSIESR 2022 Retour d'expérience sur la mise en place d'un agent conversationnel

- Natural language understanding (NLU) : définition, process et modèles

- Intelligence artificielle,eyrolles, 3eme édition, Stuart Russell et Peter Norving, chapitre 22 et 23

- Watson and the Jeopardy! Challenge

- À peine lancée, une intelligence artificielle de Microsoft dérape sur Twitter

- Relation client: SNCF Connect revient sur le flop des assistants vocaux

Pour aller plus loin :

- L’intelligence artificielle et la transformation technologique

- ChatGPT ou la percée des modèles d’IA conversationnels

- À quoi sert le mythe du transhumanisme ?, par Charles Perragin & Guillaume Renouard, Août 2018

- Musique & Intelligence Artificielle | Conférence Idriss Aberkane

- Conférence : le Futur de l'Education face à l'Intelligence Artificielle | Idriss Aberkane

- OpenAI : comment générer du texte grâce au modèle de langage GPT-3

- ChatGPT vient de battre un incroyable record de popularité

- GitHub met l'intelligence artificielle au service des développeurs

- Pour un populisme numérique (de gauche), par Evgeny Morozov, 15 décembre 2016

- BlackRock, la finance au chevet des retraités français (utilisation de l'algorithme Aladdin), Sylvain Leder, Janvier 2020

- BlackRock - Ces financiers qui s'emparent de notre argent, Heike Buchter, chapitre 9, Aladdin, un djinn dans le verger

- "L’IA amplifie l’intelligence humaine comme la machine amplifie la force", juge l’un de ses pères, Yann le Cun

- Une guerre froide 2.0, Evgeny Morozov, Mai 2023

- La Chine entravée dans la bataille de l’intelligence artificielle, par Gabrielle Chou, Avril 2023

- L’intelligence artificielle n’existe (toujours) pas

- Comment l’IA va sauver le travail | Thomas Solignac | TEDxUniversitéParisDauphine

- De l'urgence d'un droit des robots ? | Alain Bensoussan | TEDxParis

- L’intelligence humaine | Luc TRUNTZLER | TEDxLimoges

- L’IA va-t-elle changer notre métier de développeur ? (Louis-Guillaume MORAND, Eric GRENON)

- Alfredo Linguini et les Modèles Génératifs : Qui Fait Vraiment la Cuisine ?, Yann Carbonne

- IBM Watson: The inside story of how the Jeopardy-winning supercomputer was born, and what it wants to do next

- Chegg - How IBM Watson works

- Préparez-vous à la réflexion hybride, Ray Kurzweils

- IA : notre futur assistant ou nouveau maître ? Justine Cassell et Cédric Villani

- All in on AI: How Smart Companies Win Big With Artificial Intelligence, Thomas H. Davenport, Nitin Mittal

- The Age of AI: "THE BOOK WE ALL NEED", Henry A Kissinger, Eric Schmidt, Daniel Huttenlocher

VII - Remerciements

Les remerciements vont à Julien Buret et François Nollen pour m’avoir permis d’intégrer la Factory IA à l’époque de Oui.sncf et de m’avoir fait découvrir Tock Studio. Frédéric Ourgaud, pour sa bonne humeur et sa confiance pour m’avoir laissé expérimenter et valider pas mal de nouveautés sur les bots et enfin Marc Taillefer pour m’avoir fait confiance sur la mise en place du bot au sein de la SNCF.

Ouibot