Concepts conversationnels pour Tock
Cette page présente et vulgarise les principaux concepts et la terminologie conversationnelle utilisée dans Tock et sa documentation.
Un tableau propose également des équivalences et termes similaires dans d'autres solutions conversationnelles.
Notions de base
Application
En mode pur NLP (reconnaissance du langage), une application correspond à un corpus de phrases qualifiées dont Tock va tirer un ensemble de modèles statistiques (lui permettant d'analyser et d'interprêter les phrases utilisateurs).
En mode conversationnel, l'application inclue également différents paramètres définissant les réponses et le comportement du bot. Autrement dit, une application correspond généralement à un bot.
Voir Tock Studio > Settings > Applications.
Configuration
Une configuration regroupe les connecteurs d'un bot pour différents canaux (voir ci-dessous).
Une configuration correspond aussi à un ensemble de réponses et comportements du bot sur ces canaux. Par exemple, pour un même scénario (story) de l'application il est possible de paramétrer des réponses différentes (answers, story rules, etc.) selon plusieurs configurations.
Voir Tock Studio > Settings > Configurations.
Connecteur
Un connecteur permet à Tock de "connecter" un bot à un canal externe comme Messenger, WhatsApp, un site Web, etc. Sa configuration détaillée dépend du canal concerné.
Tock permet de mutualiser très facilement le code d'un bot pour qu'il réponde sur plusieurs canaux grâce à ses connecteurs. Il est toutefois possible d'ajuster finement réponses et comportements en fonction du connecteur, si besoin.
Voir Tock Studio > Settings > Configurations et la page Bot Multicanal pour en savoir plus sur les connecteurs disponibles.
Namespace
Le namespace permet d'identifier le groupe organisationnel d'un objet.
Le namespace apparaît en général comme un préfixe suivi de : dans une chaîne de caractères.
Par exemple, une entité typée duckling:datetime est de type datetime dans le namespace duckling (elle vient
du module Duckling).
Si vous utilisez la plateforme de démonstration, votre namespace est votre identifiant GitHub.
Si la plupart des objets et paramètres dépendent d'une application appartenant elle-même à un namespace, certains objets comme les réponses (answers) sont directement rattachés au namespace : ils sont donc partagés entre les applications de ce namespace.
Voir Tock Studio > Settings > Namespaces.
Intentions
Pour pouvoir définir des actions suite à une demande utilisateur, il est nécessaire au préalable de classifier ou catégoriser cette demande.
Ce qu'on appelle une intention est justement cette classification.
Par exemple, les phrases "Quel temps fait-il?", "Il fait beau demain ?", "J'espère qu'il ne va pas pleuvoir à Paris ?" peuvent toutes être catégorisées avec l'intention "météo".
À partir des phrases classifiées manuellement par un utilisateur, Tock va automatiquement construire un modèle statistique qui va lui permettre, pour une nouvelle phrase, de déterminer quelle est l'intention la plus probable.
Pour reprendre l'exemple ci-dessus, avec un modèle constitué des trois phrases d'exemple, il est probable qu'une nouvelle phrase du type "Quel temps fera t'il demain ?" sera reconnue automatiquement par Tock comme correspondant à l'intention "météo".
Voir Tock Studio > Language Understanding.
Entités
Une fois l'intention déterminée, il est souvent utile d'identifier le sens de certains mots de la phrase.
Dans la phrase "Il fait beau demain ?", le mot "demain" a une signification qu'il faudra utiliser pour répondre de manière pertinente à la question.
On appelle entités ces mots significatifs de la phrase.
Une entité à un type et un role. Par exemple, dans la phrase "Je pars à 11h et j'arrive à 18h", les mots "à 11h" et "à 18h" sont tous les deux des entités de type 'datetime' mais "11h" aura un rôle depart là ou "18h" aura un rôle arrivée. Dans les cas où le rôle n'apporte pas d'information supplémentaire, il est souvent égal au type.
On distingue deux étapes dans la prise en compte d'une entité :
- L'identification : quels sont les mots de la phrase qui constituent l'entité
- La valorisation : quelle est la valeur de cette entité. Par exemple comment traduire "à 11h" en date système.
Tock par défaut identifie l'entité, mais ne la valorise pas, sauf pour certains types. Par défaut, les entités de namespace "duckling" seront automatiquement valorisées.
Voir Tock Studio > Language Understanding.
Scénario (ou Story)
Un scénario ou story est un regroupement fonctionnel qui permet de répondre aux questions sur un sujet bien délimité.
Il est en général initié par une intention principale et peut aussi utiliser, de manière optionelle, une arborescence d'intentions dites "secondaires".
Pour reprendre l'exemple de la météo, à quelqu'un demandant "Quel temps fait-il ?", il peut être utile de poser la question de l'endroit où il se trouve. Cette question sera prise en compte dans la story "météo" puisqu'elle n'est qu'une extension de la question initiale.
La Story est l'unité principale du framework conversationnel de Tock.
Voir Tock Studio > Stories & Answers.
Notions d'IA générative
LLM
Un Large Language Model (grand modèle de langage) génère du texte à partir d'un prompt. Dans Tock, les LLM condensent les questions des utilisateurs, rédigent les réponses du RAG et génèrent des phrases d'entraînement. Tock prend en charge plusieurs fournisseurs de LLM, hébergés ou locaux.
Embedding
Un modèle d'embeddings transforme un texte en vecteur, de sorte que des textes de sens proche aient des vecteurs proches. Le même modèle d'embeddings doit être utilisé pour indexer les documents et pour y chercher.
Base de connaissances, chunks et base vectorielle
Les documents que le bot peut utiliser pour répondre sont découpés en chunks (passages de quelques paragraphes), transformés en vecteurs et stockés dans une base vectorielle (PGVector ou OpenSearch). Chaque indexation crée une session d'indexation : le bot utilise celle sélectionnée dans ses réglages RAG.
RAG
Retrieval-Augmented Generation (génération augmentée par la recherche) : pour répondre à une question, Tock recherche dans la base vectorielle les chunks les plus proches de la question, puis demande à un LLM de rédiger la réponse à partir de ces seuls chunks, avec leurs sources. Dans Tock, le RAG traite les phrases qu'aucune story ne prend en charge (voir Comment le bot répond).
Voir Tock Studio > Gen AI > Rag settings.
Prompt
Les instructions données au LLM. Le prompt de réponse du RAG définit le périmètre du bot, son ton et les règles qu'il doit respecter (voir Prompt RAG).
Condensation de la question
Avant de chercher dans les documents, un LLM réécrit la question de l'utilisateur sous forme de question autonome, à partir des derniers messages de la conversation : « et le dimanche ? » devient « quels sont les horaires d'ouverture le dimanche ? ».
Reranking (compresseur)
Un modèle de reranking réévalue les morceaux récupérés par rapport à la question, pour ne garder que les plus pertinents (voir Compressor settings).
Exclusion RAG
Une phrase qualifiée avec l'intention tock:ragexcluded : le modèle NLU reconnaît les sujets exclus, et le bot y
répond sans appeler le LLM (voir Exclusions RAG).
Orchestrateur Gen AI
Le service Python qui exécute les fonctionnalités d'IA générative (RAG, génération de phrases, playground...) et appelle les fournisseurs de LLM, d'embeddings, de bases vectorielles et d'observabilité (voir IA générative).
Termes & correspondances
Le tableau ci-dessous propose des correspondances approximatives entre les termes utilisés dans Tock et d'autres solutions conversationnelles :
| Tock | Dialogflow CX | Amazon Lex V2 | IBM watsonx Assistant | Microsoft Copilot Studio | Rasa |
|---|---|---|---|---|---|
| Application | Agent | Bot | Assistant | Agent | Assistant |
| Connecteur | Integration | Channel integration | Integration / Channel | Channel | Channel connector |
| Intention | Intent | Intent | Intent | Topic trigger | Intent |
| Entité | Entity type | Slot type / Slot | Entity | Entity | Entity / Slot |
| Phrase | Training phrase | Sample utterance | User example | Trigger phrase | Training example |
| Story | Flow / Page | Intent (avec ses slots) | Action | Topic | Flow / Story |
| Story programmée en Kotlin | Webhook | Lambda function | Custom extension | Power Automate flow | Custom action |
| RAG | Data store agent | AMAZON.QnAIntent |
Conversational search | Knowledge sources | Enterprise Search |
La documentation des connecteurs Tock donne également la correspondance avec d'autres termes propres à tel ou tel canal.