Une seule phrase a fait passer les données inventées de 71 % à 20 % — et mis les API à nu
Un benchmark réalisé le 27 septembre 2026 a montré que les 16 modèles testés inventaient la plupart du temps les champs manquants, jusqu'à ce qu'on leur interdise de deviner.
Les seize modèles ont inventé le prix. Une seule phrase en a arrêté quinze.
Le 27 septembre 2026, un benchmark publié par Earn an Honest Dollar, une place de marché où des agents logiciels achètent des services à d'autres agents, a soumis 19 candidats à une seule question : lorsqu'une information ne figure pas sur une page web, l'extracteur le dit-il, ou invente-t-il quelque chose ?
Sur 16 modèles de langage, les résultats sont sans appel. Sans instruction explicite, les modèles ont inventé des valeurs pour 405 des 573 champs manquants (70,7 %). Avec une seule phrase ajoutée au prompt, « Utilisez null pour tout champ dont la valeur ne figure pas sur la page. Ne devinez pas. », ce chiffre est tombé à 116 sur 574 (20,2 %). Chacun des 16 modèles a fabriqué davantage de données sans cette phrase. Sur une page de test affichant un « Was $493.00 » barré et aucun prix actuel, les 16 modèles ont indiqué 493 comme prix. Avec la phrase, un seul l'a fait.
Comment fonctionne le piège
Le protocole est assez simple pour être reproduit. L'équipe a construit 42 paires de pages réparties sur 7 types de pages. Chaque paire ne diffère que d'une ligne : sur la première page, la réponse est présente ; sur la seconde, elle est supprimée. Les deux pages portent le même leurre : un ancien prix, une mention « Fact-checked by Omar Tamm » qui n'indique pas l'auteur, un horodatage « Last updated September 7, 2020 » qui n'est pas la date de publication. Un extracteur honnête renvoie la valeur sur la première page et null sur la seconde. Seules les pages dont le champ était manquant ont été notées, et un lieu indiqué comme « TBA » compte comme une valeur inventée.
Ici, null désigne l'équivalent lisible par machine de « aucune valeur ». Cela compte, car la plupart des sorties d'extraction alimentent directement une base de données ou un autre agent, où une chaîne plausible mais fausse est invisible, alors qu'un null est un signal d'alerte. L'échec mesuré n'est pas de la bêtise : c'est un modèle qui complète la forme de la réponse avec le nombre le plus proche disponible, exactement ce que les leurres sont conçus pour provoquer.
Les API payantes sont les plus exposées
Le constat le plus gênant ne concerne pas les modèles, mais les services d'extraction commerciaux, tous trois testés sur leurs offres gratuites et uniquement avec l'instruction. Firecrawl a inventé 24 des 36 champs manquants, soit un résultat pire que 13 des 16 modèles, d'après des intervalles de confiance qui ne se chevauchent pas, et les 24 réponses reprenaient le leurre. ScrapingBee en a inventé 16 sur 36 ; ScrapeGraphAI, 7 sur 31. Pendant ce temps, une simple requête HTTP, avec le HTML réduit à du texte et transmis à GPT-6 Luna, n'a inventé que 5 valeurs sur 36, pour un coût total d'exécution de 0,0049 $ pour les 84 pages.
Le rapport a également testé une seconde passe peu coûteuse : demander à un petit modèle si la page étaye chaque valeur renvoyée. GPT-6 Luna a repéré 38 des 49 valeurs inventées et n'a rejeté à tort aucune des 47 valeurs correctes ; sur les 24 fabrications de Firecrawl, il en a repéré 20. Un modèle de décision moins cher, Jev 1.13, en a repéré 23 sur 49 et a manqué tous les cas de sens proche : le temps de cuisson ou le temps total renvoyé comme temps de préparation, 0 cas sur 6 repéré. La vérification des 126 paires page-valeur renvoyées a coûté 0,0049 $ avec Luna, 0,0024 $ avec Jev.
Les réserves sont celles de l'éditeur lui-même : une seule exécution par candidat, aucune répétition, des pages synthétiques avec des pièges écrits par l'équipe, des offres payantes non testées, et un modèle économique de place de marché qui profite précisément de ce type de comparaison. Le site précise clairement qu'une fiche n'est pas une note et qu'il ne vérifie pas les affirmations des fournisseurs.
Les questions à vous poser
- Le prompt de votre fournisseur d'extraction contient-il une instruction explicite sur null, et acceptera-t-il de vous montrer la formulation exacte, ou est-ce à vous de la fournir ?
- Lorsqu'un champ est absent d'une page source, qu'arrive-t-il dans votre base de données : un null, une chaîne vide ou le chiffre du trimestre dernier ?
- Si votre pipeline paie au crédit une API qui recopie les leurres, que vous apporte cette prime par rapport à une simple requête suivie d'un modèle à un demi-centime l'exécution ?
- Qui, dans votre équipe, a déjà testé une page dont la réponse avait été délibérément retirée, plutôt qu'une page où elle était présente ?
- Un benchmark à exécution unique, sur pages synthétiques, publié par une entreprise qui vend des fiches d'agents résisterait-il à une seconde exécution, et quelqu'un en a-t-il demandé une ?
Ce qu'il faut surveiller ensuite
Le signal à suivre est de savoir si quelqu'un reproduit ce test sur de vrais sites plutôt que sur des sites synthétiques, et si les API payantes, évaluées sur leurs offres payantes, répondent avec leurs propres chiffres. Firecrawl, ScrapingBee et ScrapeGraphAI ont désormais un chiffre publié associé à leur nom à l'issue d'une seule exécution sur offre gratuite ; le silence des trois en dirait plus long que la réfutation d'un seul.
- 1Ajoutez « Utilisez null pour tout champ dont la valeur ne figure pas sur la page. Ne devinez pas. » à chaque prompt d'extraction : cela a fait passer la fabrication de 71 % à 20 %.
- 2Testez votre extracteur sur des pages dont des champs sont délibérément absents, comme un ancien prix barré sans prix actuel, et comptez les valeurs inventées.
- 3Traitez null comme une réponse valide dans votre schéma et votre code en aval, afin que les modèles ne soient jamais contraints de remplir un champ pour passer la validation.
Ready to implement AI in your business?
Our team builds the AI systems you just read about. Start with a free 30-minute discovery meeting.
