Jev, un juge pour fact-checker le rédacteur

Les posts de mon dernier lot ont été écrits par un grand modèle et vérifiés par un petit qui ne sait pas écrire une phrase.
Ce n'est pas un slogan, c'est l'architecture. Le grand modèle, c'est Claude Opus 5.5, qui coûte 4 $ par million de tokens en entrée. Le petit, c'est Jev, d'une société appelée TypeSafe, qui coûte 0,042 $ par million de tokens en entrée, les tokens en sortie étant gratuits. Environ 95 fois moins cher à l'entrée. Et la partie qui fait le calcul n'est ni l'un ni l'autre. C'est du code.
Voici comment ça marche, ce que ça a trouvé, et où ça échoue encore.
Un modèle qui ne fait que répondre à des questions
Jev est ce que TypeSafe appelle un modèle System One. Il ne génère ni texte ni explications. Tu lui donnes un état, un morceau de texte ou un objet JSON, et une ou plusieurs questions typées. Il renvoie des réponses typées : la probabilité qu'une question oui/non soit oui, un choix parmi des options que tu définis avec une probabilité pour chacune, ou un score sur des niveaux que tu décris.
Ça paraît limité jusqu'à ce que tu remarques à quel point une grande partie du fact-checking a exactement cette forme. Cette phrase est-elle une affirmation factuelle ? Ce passage confirme-t-il cette affirmation, la contredit-il, ou n'en dit-il rien ? Ce sont des jugements, pas de la rédaction.
Le pipeline
J'ai construit le vérificateur le 22 septembre, après avoir fait le même travail pour mon lot de septembre avec un workflow de 36 agents tournant sur des modèles coûteux. Il fonctionne en cinq étapes.
D'abord, le tri. Jev lit le brouillon phrase par phrase et dit lesquelles affirment quelque chose de vérifiable. Les opinions, les questions et les hypothèses sont écartées.
Ensuite, les preuves. Pour chaque affirmation, le code extrait les trois passages de chaque source qui partagent le plus de mots et de chiffres avec elle, et les fusionne dans l'ordre des pages. Je l'ai appris à mes dépens : une phrase qui porte cinq faits répartis sur deux paragraphes ne peut jamais être confirmée par une seule fenêtre de trois phrases.
Puis, le jugement. Jev lit l'affirmation face aux preuves de chaque source et répond : confirme, contredit, ou informations insuffisantes.
Quatrième étape, les règles de conflit, écrites dans le code. Une contradiction d'une source l'emporte sur une confirmation d'une autre ; cette règle vient d'un cas réel où deux pages officielles donnaient deux dates différentes pour la même décision. Et une contradiction ne compte que si la preuve contient au moins la moitié des mots de l'affirmation, pour que le juge regarde bien le même fait. Sur mes premiers cas, les vraies contradictions se situaient à 0,71 et 0,73, les fausses à 0,36 ou moins. J'ai essayé de demander à Jev « est-ce le même fait ? » à la place. Il a noté une vraie contradiction à 0,43, donc je suis revenu à compter les mots.
Cinquième étape, et la plus importante : les chiffres ne vont jamais au modèle. Chaque chiffre d'une affirmation doit apparaître dans la preuve, ou découler de deux chiffres de la preuve par une seule opération, ou par une conversion d'unité. La tolérance est de 1,5 %, 10 % quand la phrase dit « environ ». Une affirmation dont tous les chiffres passent par le calcul est réglée par le calcul.
Ce que ça a trouvé
Sur un article réel de mon lot de septembre, déjà programmé, il a trouvé deux erreurs sur deux, sans fausse alerte. Ça a pris six secondes et coûté environ un tiers de cent.
Sur un article correct, il a déclenché une fausse alerte : un exemple que j'avais inventé pour illustrer un point, et qui était logiquement absent des sources.
Sur ce même article avec trois erreurs injectées, dont un montant faux et un nombre d'heures faux, il en a attrapé deux sur trois.
Trois articles, ce n'est pas un étalonnage. Je le dis dans la documentation et je le redis ici. C'est un début.
Il a aussi fait un plus petit travail cette semaine. Avant même d'écrire quoi que ce soit, j'ai donné à Jev les 29 titres tech de la semaine collectés par mon radar d'actu, et je lui ai demandé de noter chacun comme sujet de post pour des développeurs et des fondateurs. Vingt-neuf appels, un peu plus de douze mille tokens, et une facture en dessous d'un dixième de cent. Il a mis en tête la guerre des prix entre modèles et un procès contre OpenAI, exactement là où je les aurais mis moi-même.
Où ça échoue
Ça ne cherche pas. Ça vérifie un brouillon face aux sources que je lui donne. Une affirmation sans source revient « non confirmée », pas « fausse ».
Ça ne sait pas ce qui existe. Si un brouillon mentionne une version logicielle qui n'a jamais été publiée, Jev ne le signalera que si une source dit autre chose. La règle que j'avais déjà, vérifier chaque numéro de version avant publication, tient toujours.
Et ça a un angle mort connu. Une phrase courte qui ne porte qu'une date partage trop peu de mots avec n'importe quel passage, donc sa contradiction se fait filtrer par la règle du même fait et elle revient « non confirmée ». Quelqu'un doit les relire. Faire tourner l'outil sur ce lot-ci a fait surgir une cousine du même problème : un pourcentage correctement présent dans la source a été marqué « vérifié par calcul » via un ratio coïncidant entre deux chiffres sans rapport. Le chiffre était juste ; la preuve ne l'était pas. Celui-là va sur ma liste.
Le principe
Le design repose sur une seule idée : le modèle coûteux ne devrait voir que ce que le modèle bon marché n'a pas pu régler. Le code fait le comptage. Le juge fait la lecture. Le rédacteur fait la rédaction. Et le reste incertain, généralement court, part vers un modèle plus fort, ou vers moi.
Il y a un an, j'aurais utilisé un seul gros modèle pour tout faire et j'aurais appelé le résultat « relu ». Maintenant, la relecture coûte moins cher que le café que je bois en lisant son rapport, et elle me dit exactement quelles phrases elle n'a pas pu garantir.
Sources
- Documentation TypeSafe, « Models » (tarification de Jev, facturation à l'entrée uniquement)
- Documentation TypeSafe, « Introduction »
- Anthropic, « Introducing Claude Opus 5.5 », 22 septembre 2026 (tarification d'Opus 5.5)
- mes propres mesures, les 22 et 23 septembre 2026
