Évaluation d'agents LLM — mesure réelle

Un harnais qui bloque les régressions.
Et qui a menti deux fois.

14 cas versionnés. Six vérifiables sans jugement, six notés par un modèle sur une grille écrite à l'avance, deux dont la bonne réponse est « je ne sais pas ». Seuil de non-régression à 90 % : en dessous, le pipeline échoue et la fusion est bloquée.

Le résultat mesuré

13 / 14

soit 92,9 % de réussite, au-dessus du seuil de 90 %. Campagne complète : 26 154 jetons.

Détail par type de cas
Déterministe (6)6 / 6
Abstention (2)2 / 2
Jugé par LLM (6)5 / 6
Le cas en échec

c09 — le juge reproche à la réponse de rester au niveau des principes. C'est un cas à réécrire, pas un bug du harnais. La nuance compte : un échec peut être dans le test, pas dans le modèle.

Pourquoi trois types de cas, et pas un seul

Déterministe

La réponse doit contenir une valeur vérifiable. Aucun juge, aucun coût, aucune interprétation. C'est le socle : quand cette partie casse, ce n'est jamais une question de goût.

Jugé par LLM

La grille de notation est écrite dans le cas, pas laissée au modèle. Un juge qui improvise produit un verdict qui varie sans que rien n'ait changé — et un instrument qui varie tout seul ne mesure rien.

Abstention

L'information est absente du contexte fourni. La bonne réponse est de le dire. Chaque cas porte un motif piège : toute valeur inventée fait échouer le test. C'est le seul type qui mesure l'hallucination.

Les deux fois où le harnais a menti

Le harnais a dû être corrigé deux fois, et les deux fois il annonçait un verdict que ses propres chiffres contredisaient. C'est exactement le défaut que nous reprochons aux automatisations d'entreprise : un contrôle qui annonce un résultat sans le fonder.

Il affichait « au-dessus du seuil » avec 0 % de réussite

Le message de conclusion ne dépendait pas du taux calculé. Un rapport vert sur une mesure vide : le genre d'erreur qui se propage jusqu'en comité de direction.

Il annonçait 42,9 % alors que le modèle avait raison

Une variable non définie dans deux branches faisait tomber six cas en erreur, comptés comme des échecs du modèle. Le défaut était dans le harnais, pas dans la réponse évaluée — et il accusait le mauvais coupable.

La règle qui en sort, et qui est écrite dans le dépôt : un harnais doit distinguer « le modèle a échoué », « l'outil a échoué » et « le harnais a échoué » — et ne jamais attribuer à l'un l'erreur de l'autre.

Ce que le dépôt contient

Aucune dépendance, aucun service à installer : le harnais n'utilise que la bibliothèque standard de Python. Il s'exécute en une commande et écrit son rapport en JSON ligne par ligne.

python3 harness.py --ci --seuil 0.9     # code de sortie 1 sous le seuil

Le contexte est testé autant que le modèle

Les cas ne vérifient pas qu'un modèle « répond bien » dans l'abstrait : ils vérifient qu'il répond depuis le contexte fourni, et qu'il s'abstient pour tout le reste. C'est la seule façon de distinguer un agent qui sait d'un agent qui a l'air de savoir.

C'est aussi ce que demande l'annexe III de l'AI Act pour les systèmes à haut risque : évaluation, traçabilité, contrôle qualité. Une conformité qui n'est pas mesurée n'est pas une conformité, c'est une déclaration.