Comment nous avons appris l'ancien français à une IA

L'architecture technique d'Enguerrand 1072 V1

Retourner à la discussion

Bienvenue dans les coulisses

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.

Point clé

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.

Version 1

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.

Le défi : Authenticité et cohérence

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.

1. La pierre angulaire : Le corpus d'entraînement

Un modèle d'IA n'est efficace que si les données d'entraînement sont de qualité.

Constitution de la base de données

Nous avons rassemblé un vaste corpus de textes médiévaux authentiques, en nous appuyant sur des ressources académiques reconnues :

Création des paires de traduction

Nous avons créé un dataset massif d'environ 50 000 paires de phrases pour l'entraînement de la V1.

Français moderne → Ancien français "Je vais au château" → "Jo vois al chastel" "Tu as de beaux vêtements" → "Tu as bels vestemenz"

Ce processus a combiné génération assistée par IA et validation humaine :

2. Le Fine-Tuning de Mistral Large

Avec notre dataset prêt, nous avons procédé au fine-tuning (ajustement fin) du modèle Mistral Large.

Objectif du Fine-Tuning

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.

3. L'architecture temps réel : Le workflow complet

L'architecture repose sur une approche de double génération enrichie par des systèmes RAG (Retrieval-Augmented Generation).

Note sur la performance

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.

Le pipeline de traitement

Voici ce qui se passe étape par étape :

Schéma de l'architecture

Extrait de code

Architecture du système

Message Utilisateur
Backend
RAG Historique
Contexte ajouté
Mistral Large (Personnalité)
Réponse Moderne (Invisible)
RAG Godefroy
Indices Vocabulaire
Modèle Fine-tuné (Traduction)
Traduction Médiévale (Visible)
Streaming vers Frontend
  1. Réception du message de l'utilisateur.
  2. RAG Historique : Recherche d'informations pertinentes dans la base de connaissances (contexte de 1072, biographie).
  3. Génération moderne (Mistral Large) : Le modèle standard reçoit la question ET le contexte. Il génère une réponse en français moderne, incarnant la personnalité d'Enguerrand.
    Exemple (interne/invisible) : "Par Saint Michel ! Coincé dans cette boîte de sorcellerie ? Je vais mieux que les serfs qui labourent sous la pluie, je suppose."
  4. RAG Godefroy (Linguistique) : Analyse de la réponse moderne et recherche de termes équivalents en ancien français pour fournir des indices de traduction.
  5. Traduction médiévale (Modèle Fine-Tuné) : Le modèle spécialisé traduit le texte en ancien français, guidé par les indices du RAG Godefroy.
    Exemple (visible) : "Par Saint Michiel ! Enserré en ceste boiste de sorcerie ? Melz que li serf ki laborent soz la pluie, jo suppose."
  6. Streaming : La réponse est envoyée mot par mot à l'utilisateur.

4. Le rôle crucial des systèmes RAG

Deux systèmes RAG travaillent en parallèle pour assurer la qualité des réponses.

RAG Historique : La cohérence du personnage

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.

RAG Godefroy : L'authenticité du vocabulaire

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 :

- Lexique : se déshabiller → se despoiller ; vêtements → vestemenz. - Intensif : très → moult. - Tournure : comme je le dis → si com je di.

Ces indices ne sont pas affichés à l'utilisateur ; ils guident le modèle de traduction.

Impact :

5. Alignement et éthique : Un défi historique

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.

6. Limitations de la V1 et évolutions futures

Enguerrand 1072 commet encore des erreurs de traduction (conjugaisons imparfaites, syntaxe parfois trop moderne).

Pistes pour la V2 :

7. Vie privée (RGPD)

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.

Conclusion

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.

Glossaire Technique

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.

Crédits

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.