L'architecture technique d'Enguerrand 1072 V1
Bienvenue dans les coulisses d'Enguerrand 1072, notre chatbot chevalier tout droit sorti du XIe siècle. Créer un chatbot convaincant est déjà un défi, mais lui faire parler un ancien français authentique, tout en respectant le contexte historique de 1072, a nécessité une architecture technique spécifique et un processus de spécialisation complexe du modèle Mistral Large.
Cet article détaille le workflow complet de ce projet expérimental, de la collecte des données au fine-tuning d'un modèle Mistral et à l'architecture temps réel.
Le modèle fine-tuné (spécialisé) n'incarne pas le personnage : il agit uniquement comme un traducteur spécialisé Français Moderne vers Ancien Français. La persona (chevalier en 1072) et la logique de réponse sont orchestrées par l'architecture globale décrite ci-dessous.
Il s'agit d'une première version. La complexité de la langue médiévale (variabilité des orthographes, évolution grammaticale) fait que des erreurs de traduction ou des tournures imparfaites peuvent subsister. Nous travaillons activement à améliorer la précision linguistique.
L'objectif était double :
Les modèles de langue généralistes ne maîtrisant pas nativement ces subtilités, nous avons dû spécialiser un modèle et l'intégrer dans un système complexe.
Un modèle d'IA n'est efficace que si les données d'entraînement sont de qualité.
Nous avons rassemblé un vaste corpus de textes médiévaux authentiques, en nous appuyant sur des ressources académiques reconnues :
Nous avons créé un dataset massif d'environ 50 000 paires de phrases pour l'entraînement de la V1.
Ce processus a combiné génération assistée par IA et validation humaine :
Avec notre dataset prêt, nous avons procédé au fine-tuning (ajustement fin) du modèle Mistral Large.
Le fine-tuning consiste à spécialiser un modèle généraliste sur une tâche spécifique. Pour rappel, ce modèle fine-tuné n'est pas responsable de la personnalité d'Enguerrand. Son rôle unique est d'agir comme un traducteur spécialisé.
Bien que les résultats de cette V1 soient prometteurs pour l'immersion stylistique, nous travaillons déjà sur de nouvelles configurations d'entraînement pour augmenter la précision grammaticale dans les prochaines versions.
L'architecture repose sur une approche de double génération enrichie par des systèmes RAG (Retrieval-Augmented Generation).
Cette approche nécessite deux appels successifs aux modèles (un pour la logique, un pour la traduction), orchestrés par le backend. Cela augmente la latence totale. Pour maintenir une bonne expérience utilisateur, nous utilisons le streaming progressif côté front, affichant la réponse mot par mot dès qu'elle est générée.
Voici ce qui se passe étape par étape :
Extrait de code
Deux systèmes RAG travaillent en parallèle pour assurer la qualité des réponses.
Ce système garantit qu'Enguerrand reste en 1072. Si vous lui demandez qui est son suzerain, le RAG injecte l'information qu'il est vassal de Joscelin Ier de Courtenay avant que la réponse ne soit formulée, évitant les anachronismes.
Ce RAG intervient juste avant la traduction pour s'assurer que le vocabulaire le plus authentique est utilisé, en puisant dans le dictionnaire Godefroy.
Exemple d'indices injectés :
Ces indices ne sont pas affichés à l'utilisateur ; ils guident le modèle de traduction.
Impact :
L'utilisation de textes historiques authentiques pose un défi : le décalage entre les normes sociales de l'époque (violence, préjugés marqués) et nos valeurs contemporaines.
Nous avons réalisé un effort significatif d'alignement. Cela implique d'entraîner le modèle à ne pas reproduire ces comportements et de mettre en place des garde-fous stricts (via le prompt engineering et le filtrage des sorties).
Les contenus historiques potentiellement sensibles sont contextualisés et filtrés. Enguerrand décrit son époque, il n'encourage pas les comportements problématiques.
Enguerrand 1072 commet encore des erreurs de traduction (conjugaisons imparfaites, syntaxe parfois trop moderne).
Nous prenons la confidentialité de vos échanges au sérieux. Les messages sont traités en mémoire et ne sont pas stockés durablement au-delà de la durée nécessaire au fonctionnement (100 jours). Conformément à la réglementation RGPD, vous pouvez demander l'effacement et l'export de vos échanges via notre formulaire de contact.
Enguerrand 1072 est un système complexe qui combine :
Cette approche permet d'offrir une expérience immersive, démontrant comment les techniques avancées d'IA peuvent redonner vie à l'histoire.
Alignement : Processus visant à s'assurer que le comportement d'un modèle d'IA correspond aux intentions de ses concepteurs et aux valeurs éthiques attendues (ex: éviter les réponses toxiques ou biaisées).
Embeddings / TF-IDF : Méthodes de représentation numérique des mots ou des phrases. Les Embeddings (utilisés ici pour le RAG Historique) capturent le sens sémantique, permettant une recherche par similarité de concept. Le TF-IDF se base sur la fréquence des mots clés.
Fine-Tuning : Processus consistant à prendre un modèle d'IA déjà entraîné (modèle généraliste) et à poursuivre son entraînement sur un dataset plus petit et spécifique, afin de le spécialiser sur une tâche précise (ici, la traduction en ancien français).
RAG : Retrieval-Augmented Generation - Architecture d'IA qui améliore la qualité des réponses générées en allant chercher (Retrieval) des informations pertinentes dans une base de connaissances externe avant de générer (Generation) la réponse.
Streaming : Technique permettant d'envoyer la réponse générée par l'IA de manière progressive (mot par mot) vers l'interface utilisateur, au lieu d'attendre que la réponse complète soit générée. Cela améliore la perception de la vitesse.
Enguerrand 1072 est un projet personnel conçu et développé par Benoit Blanco.
Contact : [email protected]
Nous remercions les équipes de recherche qui maintiennent la Base de Français Médiéval (BFM) pour leur travail indispensable.