Architecture de Tock
Ce chapitre présente l’architecture générale d’une plateforme Tock : composants et dépendances, flux, configuration de proxies, etc.
Architecture fonctionnelle
Deux composants majeurs sont disponibles :
- le moteur NLU : Natural Language Understanding (voir Tock Studio)
- le framework conversationnel intégré aux services NLU et à différents connecteurs comme Messenger, Google Assistant ou Slack (voir manuel développeur et connecteurs).
La plateforme NLU est indépendante de la partie conversationnelle. Il est possible d’utiliser le NLU sans devoir maîtriser la complexité induite par la gestion des conversations. Dans certain cas d’usage importants, comme l’Internet des objets, l’utilisation d’un modèle NLU seule est pertinente.
Architecture technique
Tock est composé de plusieurs composants applicatifs (conteneurs lorsqu’on utilise Docker) et d’une base de donnée MongoDB.
Les descripteurs Docker et Docker Compose fournis (ie. les
Dockerfile
etdocker-compose.yml
) décrivent l’architecture de Tock.Un exemple complet se trouve dans le fichier
docker-compose-bot-open-data.yml
disponible dans le dépôttock-docker
.
Base de données MongoDB
La base Mongo doit être configurée en replica set, c’est à dire avec au minimum 3 instances déployées. C’est obligatoire car Tock utilise la fonctionnalité des Change Streams qui a comme pré-requis l’installation en replica set.
Il s’agit également d’une bonne pratique afin d’assurer une haute disponibilité de la base de données.
Composants applicatifs
Voici une description rapide des différents composants applicatifs (et images Docker fournies avec Tock) :
- Interfaces et outils Tock Studio :
tock/bot_admin
: Tock Studio
- Partie NLU :
tock/build_worker
: reconstruit les modèles automatiquement dès que nécessairetock/duckling
: analyse les dates et types primitifs en utilisant Ducklingtock/nlp_api
: analyse les phrases à partir des modèles construits dans Tock Studio
- Partie conversationnelle :
tock/bot_api
: API pour développer des bots (mode Tock Bot API)tock/kotlin_compiler
(facultatif) : compilateur de scripts pour les saisir directement dans l’interface Stories and Answers de Tock Studio
Un dernier composant, le bot lui-même, doit être ajouté et rendu accessible aux partenaires et canaux externes auxquels on souhaite s’intégrer.
Bien entendu l’implémentation du bot n’est pas fournie avec Tock (chacun implémente ses fonctionnalités propres pour son besoin) mais un exemple est disponible dans
docker-compose-bot-open-data.yml
.
Modes de déploiement
- Le mode plateforme NLU seul (sans partie conversationnelle) :
- Le mode Tock Bot API (recommandé pour la plupart des cas), permettant de développer en Kotlin ou un autre langage à travers l’API conversationnelle de Tock :
- Le mode Tock Bot intégré (historique) permettant de développer en Kotlin uniquement en utilisant toutes les possibilités de Tock mais en accédant à la base MongoDB directement depuis le bot :