Le WordPress d'aujourd'hui, décodé pour les développeurs

IA & MCP

Fine-tuning léger pour trier les emails d’une association vers HubSpot

Comment ajuster un petit modèle pour classer automatiquement les emails entrants d'une association avant leur création en ticket HubSpot, sans dépendre d'un prompt à rallonge.

Par WordPress Développement • 29 mars 2024 • 4 min de lecture • Aucun commentaire
Fine-tuning léger pour trier les emails d'une association vers HubSpot

Combien d’exemples faut-il vraiment pour ajuster un petit modèle sur une tâche de classification ? Chez Les Ateliers du Partage, association qui reçoit chaque semaine plusieurs dizaines d’emails de bénévoles, de donateurs et de bénéficiaires, la réponse tenait en un chiffre modeste : cent vingt exemples annotés à la main ont suffi pour un premier ajustement exploitable, loin des dizaines de milliers d’exemples souvent évoqués pour du fine-tuning classique.

Le besoin de départ était simple : chaque email reçu sur l’adresse générique de contact devait être classé dans l’une de cinq catégories (don, bénévolat, demande d’aide, presse, autre) avant sa conversion automatique en ticket HubSpot, pour que chaque service concerné retrouve directement dans sa file les messages qui le concernent. Un prompt générique donnait des résultats corrects mais coûteux à chaque appel, avec un taux d’erreur qui augmentait légèrement à mesure que de nouveaux types d’emails, non anticipés dans le prompt, arrivaient.

Pourquoi un fine-tuning léger plutôt qu’un prompt plus long

Un prompt de classification, pour rester fiable, tend à s’allonger au fil du temps : chaque cas particulier rencontré appelle une nouvelle règle ajoutée au texte, jusqu’à obtenir un prompt de plusieurs centaines de mots qu’il faut relire et maintenir. Le fine-tuning léger d’un modèle de petite taille inverse cette logique : au lieu d’expliquer les règles, on montre des exemples, et le modèle en déduit la logique de classification lui-même.

Cette approche convient particulièrement bien à une tâche répétitive et bien délimitée comme celle-ci, avec un nombre restreint de catégories stables dans le temps. Elle serait en revanche mal adaptée à une tâche qui évolue rapidement, où chaque nouvelle catégorie exigerait un nouveau cycle d’entraînement complet.

Étape 1 : constituer le jeu d’exemples

Les cent vingt exemples ont été extraits des emails déjà archivés des six derniers mois, classés manuellement par un salarié de l’association qui connaissait bien les catégories attendues. L’attention a porté sur la diversité des formulations plutôt que sur leur seul volume : des emails courts et des emails longs, des messages bien structurés et d’autres écrits dans l’urgence, avec des fautes d’orthographe conservées telles quelles pour refléter la réalité des messages reçus.

L'essentiel à retenir : Un petit modèle ajusté surpasse un prompt long sur une tâche répétitive ; Le jeu d'entraînement doit refléter la diversité réelle des emails reçus ; Le fine-tuning ne remplace pas la configuration du CRM lui-même
{"messages": [
  {"role": "user", "content": "Bonjour, je souhaite faire un don ponctuel, comment procéder ?"},
  {"role": "assistant", "content": "don"}
]}
{"messages": [
  {"role": "user", "content": "j aimerais donner un peu de mon temps le we"},
  {"role": "assistant", "content": "benevolat"}
]}

Étape 2 : lancer l’ajustement

  1. Exporter le jeu d’exemples au format attendu par la plateforme de fine-tuning, un fichier JSONL avec une paire question-réponse par ligne.
  2. Lancer un premier entraînement avec les paramètres par défaut, sans ajustement fin des hyperparamètres à ce stade.
  3. Tester le modèle obtenu sur un jeu de validation distinct, composé de trente emails jamais vus pendant l’entraînement.
  4. Mesurer le taux de bonne classification et identifier les catégories les plus souvent confondues.

Étape 3 : corriger les confusions récurrentes

Le premier modèle confondait régulièrement « demande d’aide » et « bénévolat » sur les emails de personnes proposant à la fois leur aide et évoquant leur propre situation difficile, un cas de figure sous-représenté dans le jeu d’entraînement initial. Une vingtaine d’exemples supplémentaires, ciblés spécifiquement sur cette ambiguïté, ont suffi à faire nettement baisser le taux de confusion lors d’un second cycle d’entraînement.

Étape 4 : brancher la sortie vers HubSpot

La catégorie prédite par le modèle ajusté alimente une propriété personnalisée du ticket HubSpot créé à partir de chaque email entrant, via l’API de création de tickets. Le modèle ne fait que classer ; c’est un workflow HubSpot existant, non modifié pour ce projet, qui se charge ensuite de router le ticket vers la bonne équipe selon la valeur de cette propriété.

Un petit modèle bien ajusté sur cent exemples pertinents bat souvent un grand modèle interrogé avec un prompt générique : la qualité des exemples compte plus que la taille du modèle sur ce type de tâche bornée.

En résumé

Le fine-tuning léger n’a rien d’une opération réservée aux grandes équipes disposant de volumes massifs de données : sur une tâche de classification simple et stable, cent vingt exemples soigneusement choisis ont suffi à obtenir un modèle plus fiable et moins coûteux qu’un prompt générique appelé à chaque email. La configuration du CRM lui-même, elle, n’a pas eu besoin d’être retouchée pour accueillir ce nouveau champ de classification.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi