IA et automatisation

Rendre un LLM vérifiable en droit comptable français : ce que nous avons mesuré

Nous avons construit un corpus daté, un agent à outils et un benchmark pour le droit comptable français. Citations retrouvées : 98–100 % avec le harness, 57–75 % sans.

Un comptable à son bureau devant un grand livre ouvert ; des fils rouges montent vers les tiroirs numérotés d’un meuble d’archives.

Pourquoi le droit comptable est un cas difficile pour le RAG

Dans ce domaine, une règle n’est jamais seulement une règle. C’est un article, dans une version, en vigueur entre deux dates. Le corpus stocke donc un enregistrement par période de vigueur d’un article, et chaque requête porte une date de référence : celle de la session, ou celle lue dans la question. Un outil dédié renvoie, pour un identifiant et une date, la version applicable.

La recherche est hybride : un canal lexical (BM25 sur le texte français normalisé et racinisé) et un canal dense (embeddings multilingues), fusionnés par rang réciproque, filtrés selon la nature de la question (comptable, fiscale, audit, IFRS), puis reclassés par un cross-encoder. Sur les 426 questions du jeu de développement, le recall@10 de référence est de 0,869. Le détail est plus instructif que la moyenne : 0,968 quand la question nomme l’article, 0,929 quand elle emploie le vocabulaire professionnel, 0,692 quand elle est formulée comme le ferait un non-spécialiste. La difficulté n’est pas la recherche. C’est la traduction d’une formulation courante vers le vocabulaire réglementaire.

Le harness : des outils, un fichier de contexte, un format de sortie imposé

Le harness, c’est tout ce qui est construit autour du modèle :

  • Huit outils que le modèle appelle lui-même : rechercher, parcourir la table des matières, récupérer un enregistrement, convertir une citation en texte libre en identifiant, suivre les renvois, obtenir la version en vigueur à une date, lire et fixer la date de la session. Chaque outil répond par un statut typé, de sorte qu’un appel mal formé soit lisible par le modèle et corrigeable au tour suivant.
  • Un fichier de contexte transmis avec le premier message : une carte qui fait correspondre les tournures courantes au vocabulaire réglementaire, une procédure de décision, une règle de date, un format de réponse.
  • Une boucle qui autorise six appels d’outils, après quoi le modèle doit conclure avec ce qu’il a lu.
  • Un format de sortie imposé dont les citations sont des identifiants d’enregistrements, et non du texte libre.

C’est ce dernier point qui produit la vérifiabilité. Un modèle qui ne peut citer que des identifiants qu’il a ouverts ne peut pas citer un article qui n’existe pas.

Quarante-neuf leviers, sept retenus

Chaque modification du système – un levier – a été mesurée isolément, à l’aune d’un critère fixé avant la mesure : un bootstrap apparié sur les questions (10 000 tirages), avec adoption uniquement si la probabilité d’amélioration atteint 0,95 et si aucune nature ni aucune catégorie ne recule de plus de 0,05. Une métrique n’est jamais remplacée par une autre après coup.

Quarante-neuf leviers ont été mesurés ; sept ont été adoptés. Les plus grands gains viennent de la question envoyée au moteur : la réécrire pour y ajouter les termes réglementaires qu’elle implique fait passer le recall@10 de 0,672 à 0,852 (+0,180), et lire la date dans la question pour que la recherche porte sur les textes en vigueur ce jour-là apporte +0,099. Le reranker cross-encoder apporte +0,066. Deux résultats négatifs méritent d’être retenus :

  • Le fichier de contexte complet ne fait pas mieux qu’un fichier minimal au critère fixé (+0,022 sur 77 questions, p = 0,78), et un extrait de la carte du vocabulaire choisi pour chaque question dégrade la note.
  • Sur les sujets d’examen et les pièces réelles, le seul levier documentaire qui porte est une mémoire des cas réels (+0,167 sur des pièces jamais vues, confirmé une fois sur le jeu de test gelé à +0,054). La génération de cas fictifs, elle, ne porte pas.

Les leviers rejetés restent dans le code à leur valeur neutre, de sorte qu’un rejet puisse être remesuré.

Treize modèles, un seul harness

Cinquante questions à barème, le même harness, le même juge ; 49 questions notées. Les réponses sont notées en aveugle : le juge voit la question, le barème et la réponse, jamais la citation attendue ni le nom du modèle. La chaîne de correction est calibrée sur trente réponses notées à la main.

Note /20
Meilleur modèle (GPT-5.6 Luna)18,3
Bras de référence (Qwen3.8-27B)17,9
Modèle le plus cher (Claude Sonnet 5)17,3
Note la plus basse6,4

Les sept premiers modèles se situent entre 15,8 et 18,3, à moins de deux marges de répétition les uns des autres. Nous connaissons cette marge parce qu’un bras a été rejoué à l’identique quelques heures plus tard : la même mesure a bougé de 0,07 sur une échelle de 0 à 1. Tout écart inférieur est considéré comme une égalité. La dispersion vient surtout des modèles qui ne savent pas mener une boucle d’outils : l’un fait en moyenne 16,5 appels par question et consomme 2,5 fois les tokens des autres pour la note la plus basse ; un autre s’arrête après 1,4 appel.

Côté prix, le rang de la note est corrélé au tarif catalogue des tokens de sortie (Spearman 0,62, p = 0,011), mais pas au coût mesuré par question (0,23, p = 0,23). Avec treize modèles et des axes de prix examinés après la mesure, cette tendance est indicative, pas établie.

Une remarque pratique : environ 90 % des tokens d’entrée d’une question sont ceux du fichier de contexte, renvoyé à chaque tour de la boucle. Lorsque le fournisseur met ce préfixe en cache, il est facturé au dixième du prix.

Avec et sans le harness

Les deux meilleurs modèles ont été testés dans quatre configurations : seuls, avec recherche web, avec le harness, avec les deux.

Réponses citant le texte attenduGPT-5.6 LunaQwen3.8-27B
Modèle seul44 %8 %
Avec recherche web76 %57 %
Avec le harness78 %90 %

Chaque configuration bat le modèle seul sur la note ; le harness et la recherche web sont à égalité (16,9 contre 17,6 pour Luna, 17,9 contre 18,8 pour Qwen, sous la marge de répétition). L’écart porte sur ce qui peut être vérifié : avec le harness, 98 à 100 % des citations se retrouvent dans le corpus ; sans lui, 57 à 75 %.

Que sont les citations qui ne se retrouvent pas ? En partie un artefact (le résolveur lit du texte libre là où le harness cite des identifiants), d’où notre relecture une à une : une fois cet effet corrigé, 66 à 78 % des citations sans harness désignent un texte du corpus. Le reste, ce sont des numéros de compte cités comme s’il s’agissait de textes (11 à 18 %) et, pour 11 à 16 %, des articles du Plan comptable général sous leur numérotation antérieure à 2025, des textes hors périmètre et des références introuvables.

La même expérience sur deux modèles bon marché, choisis selon une règle fixée à l’avance : seuls, 9,8 et 9,6 sur 20, avec le texte attendu cité dans 12 % des réponses ; avec le harness, 15,6 et 16,3, et 73 % et 76 %. La recherche web porte l’un d’eux à 15,5, mais il ne cite alors le texte attendu que dans 48 % des réponses, et elle n’aide presque pas l’autre (10,4 ; 14 %).

Ce que cela ne montre pas

  • Les comparaisons de modèles reposent sur 49 questions notées. Deux modèles à moins de 0,07 l’un de l’autre sont indiscernables.
  • La vérifiabilité signifie ici que la citation se retrouve dans le corpus. Elle ne dit pas que le texte cité étaye la réponse.
  • L’abstention – refuser de répondre quand les textes ne le permettent pas – n’est pas mesurée dans ces expériences : aucune des questions notées n’en exige.
  • Les deux hypothèses ont été formulées après les mesures qui les tranchent ; seuls les leviers ont été jugés à l’aune d’un critère fixé à l’avance.
  • Les tarifs catalogue évoluent ; les volumes de tokens sont publiés à côté.

La prochaine mesure découle de la deuxième limite : savoir si les citations qui se retrouvent dans le corpus étayent réellement la réponse à laquelle elles sont rattachées.

Méthode complète, tous les tableaux et l’explorateur des réponses : l’étude intégrale.

Revenir à la lecture rapide (2 min).

À lire aussi