Verdict
Deux gagnants, selon ce qu'on mesure
Le prompt pose une règle impérative : toute personne et toute organisation doit porter exactement un attribut main ou secondary. Le classement ci-dessous est celui de cette règle — la mesure la plus dure qu'on puisse faire sans référence, et elle sépare les huit modèles en deux groupes que rien ne recouvre. Sous chaque score figure l'exactitude mesurée contre un étalon annoté à la main : elle ne classe pas dans le même ordre, et ce désordre résiste à un second annotateur indépendant.
1er
gemma_4_12b_it
97,3 %
exactitude 70,8 %
Couvre tout, dans les six langues. Seul défaut propre : 37 attributs mal formés.
2e
ministral_3_14b_2512
93,9 %
exactitude 66,8 %
Le seul généré avec le prompt corrigé. Régulier partout sauf en français, sa langue la plus faible à 88,9 %.
3e
qwen3_next_80b_a3b
92,2 %
exactitude 70,8 %
Les meilleurs contextes du banc, et le plus rapide. Mais il rend l'exemple du prompt sur 31 % des dépêches.
4e
gemma_4_26b_a4b_it
91,3 %
exactitude 79,4 % ←
Le plus proche du gagnant : 85,1 % d'accord avec lui, l'entente la plus forte du banc.
5e
qwen3_32b
89,4 %
exactitude 66,0 %
Solide sur les personnes, mais colle un attribut interdit à une location sur cinq.
6e
llama_4_scout_17b_16e
72,9 %
exactitude 41,9 %
Laisse 27 % des entités sans étiquette et recopie l'exemple du prompt sur 14 % des dépêches.
7e
gemma_3_12b_it
62,7 %
exactitude 45,1 %
Abandonne la tâche à mi-chemin : 87 % des dépêches ressortent sans concepts_abstraits.
8e
glm_4_7_flash
59,4 %
exactitude 45,1 %
Dernier partout, et vingt-cinq fois plus lent que le plus rapide. Aucune raison de le retenir.
La flèche marque le meilleur sur l'étalon annoté. Un neuvième modèle, nemotron_3_nano_30b_a3b, a été testé puis écarté : sa génération s'est arrêtée à 635 dépêches, et il laissait 78 % des entités sans attribut.
Méthode
Comment on mesure sans vérité terrain
Personne n'a annoté ce corpus à la main, donc aucune de ces mesures n'est un score d'exactitude. Elles portent sur trois choses vérifiables sans référence : le respect des règles écrites dans le prompt, la cohérence interne des sorties, et l'ancrage des attributs dans le texte source.
Le banc est une campagne unique : les huit générations, les mesures et l'annotation de l'étalon se sont déroulées du 21 août au 4 septembre 2026, sur le corpus que l'AFP nous a transmis et sans que celui-ci change en cours de route.
La comparaison est appariée : le NER est calculé une seule fois, puis soumis aux huit modèles. Les listes d'entités sont identiques à l'entité près, ce qui élimine le principal facteur de confusion.
Une seule réserve, et elle est circonscrite : les sept premiers modèles ont reçu la même version du prompt, le huitième a reçu la version corrigée décrite plus loin. Les règles portant sur les entités sont identiques d'une version à l'autre, donc tout le classement de conformité et l'exactitude restent comparables ; seules les deux lignes sur les concepts_abstraits — recopie de l'exemple, formulations distinctes — mesurent ministral_3_14b contre un autre texte que les sept autres. Elles sont signalées comme telles.
ner/641 dépêches annotées
→
prompt LLMmain · secondary · speaking · context
→
format_corpus.pyconsolidation REM
→
compare_llms.pyrègles · cohérence · ancrage
Les deux proxys d'ancrage se lisent depuis le corpus NER, commun aux huit modèles : une entité main est censée être citée plusieurs fois et tôt dans la dépêche ; une entité speaking est censée apparaître près de guillemets ou d'un verbe de parole, puisque le prompt exclut explicitement le discours indirect.
Accord inter-modèles sur l'importance d'une entité : sur les vingt-huit paires, vingt-et-une tombent entre 59 % et 73 %. Six détonnent, et ce sont exactement les six paires internes au groupe de tête — 85,1 % entre gemma_4_12b et gemma_4_26b, 83,9 % entre gemma_4_12b et qwen3_next, 81,9 % entre gemma_4_12b et ministral_3_14b, 80,7 % entre qwen3_next et gemma_4_26b, 80,5 % entre qwen3_next et ministral_3_14b, 76,0 % entre gemma_4_26b et ministral_3_14b. Les modèles qui respectent le prompt se ressemblent ; les autres divergent chacun à leur façon, et le huitième modèle rejoint le groupe de tête sur ce critère comme sur les autres.
Langues
Qui tient dans les six langues
Le corpus est également réparti entre six langues, et la règle impérative se mesure langue par langue. C'est là que se joue l'écart entre un modèle utilisable en production et un modèle qui ne l'est que sur les dépêches occidentales.
La coupure est la même que sur le tableau précédent, et elle est franche. Les cinq premiers sont plats d'une langue à l'autre — trois points d'amplitude pour gemma_4_12b, trois pour qwen3_next, cinq pour qwen3_32b, dix pour gemma_4_26b. ministral_3_14b tient dans sept points, mais son minimum est là où personne d'autre ne l'a : le français, 88,9 %, cinq points sous sa moyenne — tous les autres modèles réussissent le français mieux que la plupart des langues. C'est une anomalie propre à ce modèle, pas un effet du corpus. Les trois derniers s'effondrent hors des langues occidentales : gemma_3 perd 33 points entre le français et l'arabe, glm_4_7_flash en perd 27 entre le portugais et l'allemand. Un banc mené uniquement sur des dépêches françaises les aurait classés bien plus haut qu'ils ne le méritent.
Exactitude
Ce que dit un étalon annoté
Tout ce qui précède mesure la discipline. Pour mesurer le jugement, il faut une référence : 30 dépêches, 5 par langue, dont chaque personne et chaque organisation a été annotée en main ou secondary, avec un booléen speaking. 277 entités, dont 24 écartées parce que le NER s'était trompé — un lieu pris pour un club de football, une personne classée en organisation, un nom absent du texte. Restent 253 entités scorables.
Les 30 dépêches ne sont pas tirées au hasard. Dans chaque langue, les candidates sont classées selon l'ampleur du désaccord entre les modèles, et une est prise à chacun des 90e, 70e, 50e, 30e et 10e percentiles. Un tirage aléatoire de 30 donnerait des intervalles trop larges pour départager quoi que ce soit ; ne garder que les cas contestés fausserait les valeurs absolues. Le jeu est donc délibérément plus dur que la moyenne du corpus : ce sont les écarts qui comptent, pas les niveaux.
Le corpus a été annoté deux fois, indépendamment, par deux modèles différents et sans que le second voie les réponses du premier. La première ligne du tableau donne l'exactitude contre la première annotation, la seconde contre l'autre.
Le classement n'est pas celui de la conformité, et il ne dépend pas de l'annotateur. gemma_4_26b_a4b_it, troisième sur les règles du prompt, arrive premier sur l'exactitude — sous les deux annotations. gemma_4_12b_it, qui domine toutes les règles, passe derrière lui et derrière le vote majoritaire. Les niveaux absolus, eux, bougent beaucoup : la seconde annotation est plus généreuse en main et donne à tous les modèles dix points de plus. C'est l'ordre qui tient, pas les valeurs.
Et tous se trompent de la même façon. Sur main, la précision plafonne entre 44 et 71 % quand le rappel monte à 83-92 % : les modèles posent l'étiquette sur presque toutes les entités qui la méritent, et sur beaucoup qui ne la méritent pas. Le miroir exact sur secondary, où la précision atteint 79 à 98 % pour un rappel de 28 à 77 %. Autrement dit, ils promeuvent en acteur principal des entités qui ne font que commenter : un ministre qui réagit, un syndicaliste cité une fois, un joueur mentionné en passant. gemma_4_26b gagne parce qu'il est le plus sobre des huit sur ce point, et ministral_3_14b arrive dernier du groupe de tête parce qu'il est le plus prodigue : 92,2 % de rappel sur main, le meilleur du banc, pour 51,8 % de précision — il promeut presque tout.
Le contraste sur speaking est instructif : gemma_4_12b y atteint 100 % de précision pour 40,6 % de rappel — il ne se trompe jamais, il rate simplement six cas sur dix. gemma_4_26b, à 92,4 % de précision pour 72,3 % de rappel, produit une sortie bien plus utile en aval.
La définition de speaking se transmet, celle de main beaucoup moins. Un kappa de 0,85 sur le discours direct veut dire que la règle est écrite assez précisément pour qu'un second annotateur la reproduise presque à l'identique. Les 0,61 de la décision main/secondary disent l'inverse : la notion d'acteur central reste sous-spécifiée, et c'est là qu'il faut écrire des règles plutôt que des exemples.
Le désaccord est unidirectionnel : 43 entités classées secondary par le premier annotateur et main par le second, contre 3 dans l'autre sens. Ni « tout locuteur est principal » ni « une seule mention suffit » ne résument cette différence — parmi les 43, 28 sont citées et 15 non, 22 ont une mention et 21 plusieurs. C'est le jugement de centralité lui-même qui diverge. Et un décalage systématique de cette nature déplace tous les scores dans le même sens en préservant l'ordre, ce qui explique que le classement survive.
La détection des erreurs de NER, elle, est solide : les deux annotations s'accordent sur la totalité des cas retenus par la première, et la seconde en signale neuf de plus — des spans tronqués ou mal résolus. Le taux d'erreur du NER en entrée, autour de 8 % des entités, est en soi une mesure du bruit que les huit modèles subissent également.
Les 277 entités ont été annotées par deux modèles Claude, sur demande explicite et après avoir signalé le problème : une référence produite par des LLM ne peut pas mesurer des LLM de façon indépendante. Chaque fichier porte un champ annotated_by, et l'outil de scoring affiche un avertissement à chaque exécution.
La double annotation lève une inquiétude et pas l'autre. Elle montre que le classement ne dépend pas de la convention retenue — deux jugements produits séparément, dont l'un est nettement plus généreux, donnent le même ordre. Elle ne montre pas que ce jugement est le bon : deux modèles de la même famille peuvent se tromper ensemble, de façon cohérente, là où un journaliste trancherait autrement. Un accord de 0,61 mesure la stabilité d'une convention, jamais sa justesse.
Ce qui manque tient en une phrase : cinq dépêches relues par quelqu'un dont c'est le métier, sur la seule question de savoir ce qui fait un acteur principal. C'est la dernière chose à faire avant qu'un de ces chiffres serve à choisir un modèle.
Suite
Le prompt corrigé, et ce qu'il a coûté
Le premier biais listé ci-dessus n'était pas un défaut de modèle, mais un défaut de prompt. Sa valeur d'exemple pour concepts_abstraits était une réponse complète, plausible et passe-partout : un modèle qui hésite la recopie, et rien dans le texte ne le lui interdisait.
Trois modifications ont suivi. L'exemple est devenu un gabarit non copiable ; la spécification du champ, réduite à une phrase jusque-là, précise désormais un nombre de concepts, un test d'ancrage — si le concept conviendrait à une dépêche sans rapport, il est trop générique — et l'interdiction explicite d'en reprendre le libellé. Le modèle a été régénéré à chaque version.
La recopie est éliminée, et de façon reproductible. De 199 dépêches sur 641 à deux, puis zéro. Les deux runs v2 donnent le même résultat, ce n'était donc pas un coup de chance de tirage. Les concepts qui restent sont propres à leur dépêche : la formule la plus fréquente du corpus passe de 184 occurrences à 19.
Mais toucher au prompt se paie ailleurs. La v2 allongeait la section métadonnées de onze lignes ; le reste du prompt s'en est trouvé dilué, et la moitié entités a perdu environ un point partout. La v3 dit la même chose en cinq lignes et rend au bloc de vérification final sa forme d'origine : les effets de bord se résorbent, sans que la recopie ne revienne. Le prix résiduel se lit sur la ligne des formulations distinctes — 82 % contre 92 % en v2 : en supprimant l'exemple travaillé, on a aussi supprimé le modèle de ce à quoi ressemble un bon concept, et les réponses dérivent vers des paires abstraites courtes.
Ce prix résiduel n'en est peut-être pas un. Le huitième modèle du banc, ministral_3_14b, a été généré avec la v3 — et il produit 92 % de formulations distinctes, exactement le niveau que la v2 avait atteint sur qwen3_next, avec des concepts un peu plus longs que les siens. Cinq versions du prompt n'ont pas réussi à faire remonter qwen3_next au-dessus de 82 % ; un autre modèle y arrive sans qu'on touche à rien. La richesse des concepts se lit donc au moins autant sur le modèle que sur le prompt, et il n'y a pas de v6 à écrire pour aller la chercher.
Cette expérience a produit un chiffre plus utile que les autres : deux régénérations du même modèle, sur le même corpus, avec exactement le même prompt, ne s'accordent que sur 93,1 % des entités. Autrement dit, 6,9 % des étiquettes changent d'un run à l'autre sans qu'on ait rien modifié. C'est le plancher en dessous duquel aucun écart mesuré ici n'est interprétable — et c'est aussi ce qui a permis de trancher : la dégradation de la v2 était réelle sur les deux mesures dont le bruit inter-run est nul, et du bruit sur les autres.
Reproduire
Rejouer sur d'autres modèles
Les deux scripts prennent des noms de répertoires en argument — rien n'est codé en dur. Pour ajouter un modèle, il suffit qu'il ait tourné sur le même corpus NER. C'est ainsi que le huitième a rejoint le banc : deux commandes, aucune ligne de code à écrire.
python -m tests.format_corpus ministral_3_14b_instruct_2512
python -m tests.compare_llms gemma_3_12b_it gemma_4_12b_it llama_4_scout_17b_16e_instruct \
qwen3_next_80b_a3b_instruct qwen3_32b gemma_4_26b_a4b_it \
glm_4_7_flash ministral_3_14b_instruct_2512 \
-p tests/data/prompt-v1.j2 -e 4
python -m tests.score_gold <les mêmes huit modèles>
compare_llms accepte deux modèles ou plus, se restreint aux dépêches communes, aligne les entités par nom, et sort une matrice de confusion par paire. -e imprime N exemples réels de chaque type d'erreur. -p désigne la version du prompt avec laquelle le corpus a été généré : les formules interdites y sont relues, donc la mesure de recopie suit toute modification du prompt — mais un corpus doit être mesuré contre le sien, jamais contre un autre. La commande ci-dessus mélange volontairement deux versions : c'est la mesure de recopie, et elle seule, qui en dépend — le huitième modèle ne recopie ni l'exemple de la v1 ni le gabarit de la v3, il lit 0 % dans les deux cas.