ChatMD : Un chatbot polyvalent

Créer un chatbot éducatif configurable, avec ou sans IA, en restant maître du contenu.

Dans cet article

ChatMD : Un chatbot polyvalent

Réponse à un besoin

De tous les outils que je peux présenter ou faire, celui-là est un de mes préférés... Ce n'est pas le plus puissant mais il est configurable à souhait ! Nous l'avons vu :

  • les IA peuvent halluciner et nous ne sommes donc pas maître des réponses fournies.
  • La question des données est toujours un sujet.
  • Il faut souvent un compte utilisateur ce qui rend certaines solution inutilisables avec les élèves.
  • Les solutions pour créer des chatbot contrôlés sont souvent payantes et complexes.

Pas de panique ! ChatMD est là ! En ligne, libre et gratuit, connecté à l'IA ou non, développé par Cédric Eysette qui est chargé de projet à la Drane de Lyon. Cette solution est hébergée sur la Forge des communs numériques éducatifs.
Les avantages :

  • On peut l’utiliser directement sans installation : c’est une solution en ligne qui ne nécessite pas la mise en place d’un serveur et qui n’utilise pas de base de données.
  • On peut créer facilement un chatbot à partir d’un fichier texte en respectant une syntaxe particulière (issue de Markdown).
  • Pas besoin de créer un compte spécifique pour cela : on peut utiliser codiMD ou bien un autre service libre du même type (Digipage, Hedgedoc ...)
  • Les utilisateurs n’auront également pas besoin de compte et il n’y a aucune collecte de données et pas de cookies : le fonctionnement de ChatMD est totalement compatible RGPD.

J'y reviens juste après dans le tutoriel mais le principe est simple :

SANS IA

On va créer un parcours libre ou scénarisé qui va guider l'utilisateur, lui poser des questions, vérifier ses connaissances ou compétences.
Nous devons donc prévoir à l'avance un fichier contenant les questions et réponses possibles. L'algorithme principal de ChatMd va calculer, sans IA, la réponse la plus pertinente mais tout est géré depuis le fichier de l'enseignant.

AVEC IA

ChatMD peut cependant se connecter à une IA générative (locale ou en ligne) avec votre accord. L'idée est de la solliciter de manière ciblée et contrôlée pour compléter une information ou répondre à une question imprévue.
On peut aussi avoir recourt à l'IA pour évaluer la pertinence d'une réponse avec une grille d'évaluation, un prompt précis et dédié à chaque question.

De nombreux usages sont possibles... À vous les tutoriels, les FAQ, les guides méthodologiques, les conversations avec des personnages historiques, les outils de révision,etc.
Pour en savoir plus et solliciter de l'aide pour tout problème, vous pouvez, comme moi, rejoindre le salon Tchap dédié à l'aide et à l'utilisation de cet outil.

Tutoriel d'utilisation sans IA

Avant toute chose, signalons la documentation officielle de l'outil sur le site officiel de ChatMD. Je vais tenter de décrire quelques fonctionnalités.

En préambule : J'ai choisi de travailler sans IA dans un premier temps. Pour réaliser le fichier Markdown, j'utilise CodiMD. Un des nombreux outils proposés sur apps.education.fr. Il suffit d'avoir une adresse professionnelle académique pour se connecter facilement. Ce logiciel en ligne est un éditeur de texte amélioré collaboratif permettant de générer des documents au format Markdown. C'est une sorte de langage de balisage des documents texte. Un seul inconvénient... Markdown n'a jamais été standardisé donc il existe des variantes de ce langage. Il faut donc trouver la bonne...
Je mettrai en téléchargement mon fichier de configuration du chatbot pour que vous puissiez l'adapter.

Pour moins de blabla, j'ai choisi de créer un chatbot répondant au doux nom de Frigondule, dédié à la présentation de ChatMD. Il ne s'agit pas de montrer toutes les possibilités de l'outil mais les fonctionnalités abordées peuvent vous inspirer et le fichier Markdown vous faciliter la vie dans la prise en main de ce chatbot.

Il faut respecter 3 étapes :

  • Créez un fichier en Markdown accessible en ligne (sur CodiMD par exemple).
  • Respectez la syntaxe pour ChatMD du fichier Markdown définissant votre chatbot.
  • Votre chatbot est alors accessible à l'adresse suivante :
    https://chatmd.forge.apps.education.fr/#URL

Vous aurez donc 3 façons de consulter votre bot :

  • Dans un nouvel onglet de votre navigateur grâce au champ précédent (solution qui conviendra à la plupart des gens).
  • Grâce à une iFrame si par exemple, vous souhaitez l'intégrer à une page web comme dans l'exemple ici.
  • Grâce à un widget. Si vous cliquez sur le bouton ci-dessous, une bulle devrait s'ouvrir en bas, à droite de l'écran. Un clic dessus et vous ouvrez ou fermer votre bot qui apparait dans une fenêtre dédiée au-dessus de votre page.

Remarque importante pour l'utilisation

  • Vous pouvez donc tester ChatMD avec le bot présent ici ou avec le widget.
  • La fausse bonne idée est de demander à une IA de rédiger le fichier Markdown à votre place... Comme Markdown est une sorte de langage non standardisé, l'IA ne saura pas quelle variante adopter. Il y a donc des chances que certaines choses ne s'affichent pas comme vous le voulez ou pas du tout. Il faut respecter certaines contraintes pour que ChatMD puisse lire votre document.
  • Je mets en téléchargement mon fichier Markdown pour que vous puissiez le modifier selon vos besoins.
    Frigondule.md
    (Télécharger le fichier et faites un glissé/déposé dans "une nouvelle note" sur codiMD pour l'ouvrir)

Tutoriel d'utilisation avec IA

En préambule : Nous allons maintenant envisager l'utilisation de l'IA avec ChatMD.
Toutes les propriètés évoquées précedemment restent valables. Là ou ChatMD va montrer tout son potentiel, c'est dans la possibilité de configurer le recours de l'IA à la demande.
J'ai créé un autre chatbot pour l'occasion. Le fonctionnement de base est identique. J'héberge le fichier de configuration au format Markdown sur CodiMD (je vous le propose en téléchargement plus bas). Pour utiliser le chatbot vous devez entrer la clé ci-dessous. SI vous avez cliquez sur "Annuler", rechargez la page simplement et entrer le code.
CLÉ D'UTILISATION DU CHATBOT PLATICHON : 123

IMPORTANT : Pour pouvoir accéder aux fonctionnalités IA, il faut avoir une clé API chez un fournisseur de LLM.
✍🏻 Comment créer une clé API ?
Selon l'utilisation, les solutions sont diverses mais si vous souhaitez simplement tester ChatMD ou que votre public est limité, certains fournisseurs peuvent proposer gratuitement des plans pour la création de clés API.
Voici une liste avec quelques propositions gratuites pour créer votre clé : Free LLM API ressources

Après avoir obtenue votre clé API, vous aller devoir la chiffrer pour ne pas qu'elle apparaisse en clair (publiquement) dans votre fichier de configuration sans quoi, elle pourrait être utilisée par nimporte qui pour faire n'importe quoi.
Voici un lien mis à disposition par les concepteur de ChatMD pour chiffre en un clic votre clé : Chiffrement de la clé API
Ensuite il faut respecter 2 choses :

  • Déclarer l'utilisation de l'IA dans l'entête YAML du fichier de configuration
  • Expliciter au chatbot quel recours à l'IA vous souhaitez (ponctuel ou prolongé)

Téléchargement : Télécharger le fichier de configuration de Platichon

Comme précédemment, si vous souhaitez plus de précision, la doc. de ChatMD est très bien faite. Je n'effleure ici, que quelques possibilités liée à l'utilisation de l'IA dans ce type de bot.
C'est parti !

🟢 Configuration du LLM dans le YAML :
Ajouter dans l'entête YAML de votre fichier de configuration le code ci-dessous complété.
Le fait de chiffrer la clé API empêche seulement que la clé soit récupérée par quelqu'un qui n'a pas le mot de passe. Mais une personne qui a le mot de passe et un peu de connaissances techniques pourrait récupérer la clé API. Ce n'est donc pas une solution parfaite et il faut alors vérifier les usages de sa clé, et la réinitialiser en cas de problème.


          useLLM:
            url: URL_API
            model: nom_du_modèle_de_langage
            encryptedAPIkey: clé_chiffrée
          

🟢 Utilisation de l'IA
ChatMD peut se connecter à un LLM en ligne ou en local. Ici, je ne traite que de l'appel en ligne. Je vous renvoie à la doc. pour l'utilisation d'un LLM local.
Ce qui me parait très intéressant avec ChatMD est que l'on peut utiliser l'IA de manière sobre et ciblée, au sein d'un parcours scénarisé dont on garde le contrôle. De plus, l'utilisateur n'aura pas besoin de créer un compte pour accéder à votre chatbot : il faudra simplement lui communiquer un mot de passe (123 ici).
Sur le plan général, l'appel et les instructions donnés au LLM dans le fichier de configuration se font comme suit :


          `!useLLM`
          Prompt
          `END !useLLM` 
          

Voici un exemple simple repris dans le bot ci-dessus :


          ## Dictée niveau quatrième
          Voici une dictée générée automatiquement par l'IA  :

          `!useLLM`

            Rédige une dictée d'environ 80 à 100 mots, destinée à des élèves de quatrième.  
            Le texte doit être rédigé au passé simple et à l'imparfait, contenir au moins trois adjectifs accordés en genre et en nombre, ainsi qu'une proposition subordonnée relative.  
            Le vocabulaire doit rester accessible pour ce niveau, et le ton peut être narratif ou descriptif.

            `END !useLLM`

            📝 Conseil à l'élève : lis d'abord la dictée une première fois en entier, puis fais-la à l'écrit sans te précipiter. Pense à bien accorder les adjectifs et les verbes, surtout à l'imparfait !

            1. [Suite ?](Poursuite)
            2. [Quitter ?](Sortir) 
            

Par défaut, l'appel à l'IA est unique et ponctuel. Autrement dit, on ne peut pas continuer la conversation avec l'IA et cette dernière n'a pas accès à l'historique de conversation. Bien sûr, ces propriètés sont parfaitement paramétrables.
Si vous choisissez de prolonger l'utilisation de l'IA, il faut penser à donner à l'utilisateur une possibilité de sortie de la conversation.

  • Soit par un bouton qui renvoie à un menu.
  • Soit une sortie automatique après un certain nombre de messages.
  • Soit une sortie si un mot clé est détecté.
  • Soit une sortie suite à l'analyse de la réponse par l'IA.
  • ...

Bref, les exemples dans le bot sont nombreux et le fichier de configuration vous montrera la syntaxe à adopter.

🟢 Le RAG
Il est important d'attirer l'attention sur un autre type d'utilisation de ChatMD : le RAG
Le RAG (Retrieval-Augmented Generation) consiste à demander à une IA générative de répondre, non pas seulement à partir des informations issues de son entraînement, mais à partir d'une base de connaissances qu'on lui a fournie.
On pourrait par exemple fournir une liste de définitions, de méthodes, de textes propres à sa discipline et son approche pédagogique. Le but est d'améliorer la pertinence du contenu généré et de forcer l'IA à répondre d'après le cadre qu'on lui donne.
Pour activer le RAG et ajouter une base de connaissance qui sera utilisée par le LLM pour produire sa réponse, on ajoute dans le YAML :


          useLLM:
            url: URL_API
            model: nom_du_modèle_de_langage
            encryptedAPIkey: clé_chiffrée
            RAGinformations: ["URL1", "URL2", "URL3"]
 
          

On le voit, il est possible de mettre plusieurs adresses de fichiers à récupérer pour constituer la base de connaissance.
Important : la base de connaissance doit être constituée de fichiers texte. Il est impossible d'utiliser le format PDF. On peut éventuellement mettre directement du texte en lieu et place des URLs dans le YAML si la base de connaissances est très succincte. A l'inverse, si la base est conséquente, on conseille de la charger avant que LLM soit sollicité afin d'améliorer les performances grâce au paramètre preload dans le YAML.

Fonctionnement du RAG :
ChatMD utilise un système de RAG simplifié qui fonctionne ainsi :

  • Préparation de la base de connaissances : ChatMD découpe en segments (chunks) la base de connaissances.
  • Recherche des passages pertinents lors d'une requête : Quand une question est posée, ChatMD fait un calcul de similarité entre la question et ces différents segments, afin d'identifier les passages les plus pertinents.
  • Construction du prompt enrichi : ChatMD ajoute les passages les plus pertinents au prompt et demande au LLM de répondre en prenant en compte ces passages.

🚀 Aspects techniques
Comme il est précisé dans la doc., Contrairement aux systèmes RAG classiques, ChatMD ne repose pas sur une vectorisation sémantique des documents à l'aide d'embeddings stockés dans une base vectorielle.
À la place, ChatMD effectue une vectorisation lexicale légère : les documents sont représentés sous forme de tokens, et la similarité entre une question et les documents est calculée à l'aide de méthodes classiques (similarité cosinus, calcul de distance lexicale, prise en compte de la taille et de la position des tokens …).
Ce choix vise à :

  • Favoriser un usage sobre de l'intelligence artificielle, en évitant les appels à des services d'API pour la vectorisation.
  • Simplifier le déploiement en supprimant la dépendance à une base de données externe ou à un moteur de recherche sémantique

Par ailleurs le parti-pris est que dans les cadres d'usages de ChatMD, notamment institutionnels ou pédagogiques, les documents utilisés pour la base de connaissance intègrent suffisamment de mots-clés pour pouvoir se passer de la vectorisation sémantique.

Pour ces raisons et bien d'autres, il est donc impératif de bien contruire ses fichiers à destination du RAG. Je conseille donc de travailler avec des fichiers texte dans lesquels le balisage Markdown est à l'oeuvre. Le balisage Markdown va permettre à ChatMD un chunking facilité. Evidemment, je vous propose le fichier du RAG présenté dans le bot ci-dessus en téléchargement :
Téléchargement du fichier pour le RAG
A vous de jouer maintenant !

Bilan : Même sans rentrer dans les détails pointus de la configuration, on sent bien que ChatMD est un outil extrêmement polyvalent, presque configurable à l'infini et dont les applications sont très variées.
Alors, oui, il faudra un petit temps d'adaptation pour apréhender la syntaxe Markdown mais le jeu en vaut vraiement la chandelle ! Le salon Tchap est très réactif si vous avez des questions, alors n'hésitez plus. Direction la documentation de ChatMD et en avant pour proposer vos propres chatbots.

Fonctionalités et nouveautés

Un chatbot pour aider à configurer ChatMD

Voici une petite astuce découverte sur le forum Tchap et proposé par Cedric Eysette et Axel Manguy.
Mistral AI permet maintenant d'ajouter un serveur MCP, même dans la version gratuite du Chat, ce qui permet d'avoir un assistant à la création d'un chatbot, connecté (c'est ce que permet le protocole MCP) à la documentation de ChatMD (elle-même préparée pour être lue par des LLM).

  • Se connecter au chat de Mistral AI : https://chat.mistral.ai/chat
  • Cliquer sur "Intelligence", puis "Connecteurs", puis "Ajouter un connecteur", puis "Connecteur MCP personnalisé"
  • Vous donnez le nom que vous voulez à ce connecteur (par exemple : ChatMD-GitMCP), et vous indiquez cette url comme "Serveur du connecteur" : https://gitmcp.io/eyssette/chatMD-docs/
  • Et voilà… Vous avez maintenant Mistrail.ai qui joue le rôle de votre assistant à la configuration de ChatMD. Il peut désormais lire la documentation sans restriction. Attention, ça n'exclut toujours pas les erreurs possibles, mais normalement il devrait y en avoir moins.

Les premiers tests on été mitigés notemment les questions sur la configuration du RAG dans ChatMD. Une solution est alors d'utiliser Context7 qui est un serveur de documentation en temps réel utilisant le protocole MCP.

  • Même procédure pour l'installer, sauf que pour le serveur, il faut mettre : https://mcp.context7.com/mcp
  • Pour l'utiliser (une fois qu'on a activé le connecteur), il faut mettre "use context7" à la fin de son prompt (et il faut bien qu'il y ait "ChatMD" dans le prompt, car c'est un serveur MCP qui renvoie à plein d'applis possibles et pas seulement à ChatMD).

Les tests suivants ont été bien meilleurs. N'hésitez pas à passer par le formulaire de contact (lien en bas de page) si vous avez des questions ou inscrivez-vous sur le forum Tchap.