Jeu de données
Deux garde-fous de détection d'erreur sur 368 fusions de contacts proposées
96 passes de dédoublonnage déjà publiées ici, cinq garde-fous appliqués à chaque fusion proposée, et les 96 réponses brutes de celui qui a demandé des appels. Test conduit le 2026-09-12.
Cette page décrit un jeu de données, publié en entier. C'est la matière brute de notre test de deux garde-fous sur une tâche sans arithmétique : 96 passes de dédoublonnage déjà publiées ici, cinq garde-fous appliqués à chaque fusion qu'elles ont proposée, et les 96 réponses brutes du garde-fou qui a demandé des appels.
Tout ce qui est sur cette page vient de cette seule exécution. Rien n'est estimé.
Ce qu'il mesure, et ce qu'il ne prouve pas
Il ne mesure aucun modèle. Il mesure les contrôles qu'on poserait autour d'un modèle pour attraper une fusion fausse avant que deux personnes ne deviennent une seule ligne.
La question pour laquelle il a été constitué est étroite et c'est tout l'objet : le 2026-09-04, nous avons mesuré quatre garde-fous sur des extractions de factures, où il existe une identité arithmétique gratuite. Un carnet de contacts n'en a aucune. Ce jeu de données rejoue les deux garde-fous qui tenaient là-bas, sur une tâche où rien ne se recalcule, et les note de la même façon.
Chaque garde-fou porte deux grandeurs qui ne se lisent jamais l'une sans l'autre : le taux de rattrapage, la part des fusions fausses qu'il signale, et le taux de fausse alerte, la part des fusions justes qu'il signale. Un garde-fou qui signale tout affiche 100 % sur la première et ne sert à rien. Un garde-fou qui ne signale rien affiche 0 % sur la seconde et ne sert à rien non plus.
Ce qu'il ne prouve pas, dit franchement, parce qu'un jeu de données cité sans ses limites fait plus de mal que pas de jeu de données du tout :
- Les 0 % de fausse alerte de la règle des clés sont vrais par construction. Le corpus source impose à toute paire de doublons de partager un courriel ou un téléphone. Dans un carnet réel, une personne ayant changé des deux verrait sa fusion bloquée. C'est le chiffre le plus flatteur du fichier et c'est celui dont il faut se méfier en premier.
- Les partitions ont 26 jours. Elles ont été produites le 2026-08-17. Rien ici ne dit que les mêmes modèles font les mêmes fusions aujourd'hui.
- 97 fusions fausses. Tous les taux de rattrapage reposent là-dessus. Un pourcentage sur 97 éléments a une marge large : des ordres de grandeur, pas des constantes.
- 2 des 96 réponses ne sont pas du JSON valide, et 7 des 366 groupes soumis sont revenus sans verdict. Ces 7 fusions sortent de la population de l'auto-vérification, notée sur 96 fausses et 265 justes au lieu de 97 et 271. Déclaré, pas réparé.
- Un seul corpus, 96 lignes construites par script, graine fixe, déclaré comme construit dans son propre protocole. Aucune personne réelle, aucune société réelle. Les familles de pièges sont des propriétés voulues de ce corpus et leur fréquence ici n'est pas celle d'un CRM.
- Des carnets de 12 lignes, entièrement dans la fenêtre du modèle : le cas le plus favorable. Un carnet de 5000 lignes est un problème différent, non mesuré ici.
- La consigne d'auto-vérification est UNE consigne. Une autre donnerait d'autres
chiffres. Celle qui a été passée est publiée dans
verifications.json, plutôt qu'une variante flatteuse trouvée après coup. - La comparaison avec le test des factures met en regard deux tâches ET deux corpus. Ce qui change n'est pas seulement la présence d'une arithmétique, et ce jeu de données ne sait pas séparer les deux.
Les partitions sont réemployées, et voici ce que cela veut dire
Rien n'a été dédoublonné pour ce test. Les 96 partitions jugées ici sont exactement
celles publiées le 2026-08-18 sous
le jeu de données de dédoublonnage de contacts :
8 carnets de 12 lignes générés par script à partir de la graine 20260817, quatre
niveaux de désordre de présentation, trois modèles économiques, et une partition de
vérité terrain tranchée à ce moment-là.
C'est un échange délibéré et il coupe des deux côtés. Ce qu'il achète : les cinq garde-fous jugent un ensemble de fusions identique, donc la comparaison isole les garde-fous et rien d'autre. Ce qu'il coûte : rejouer les modèles le 2026-09-12 aurait mêlé leur effet à 26 jours de dérive, et ce jeu de données ne dit rien des modèles tels qu'ils sont aujourd'hui.
Ce jeu de données ne génère aucun corpus propre. Sa reproductibilité tient à la
graine du corpus source, 20260817. Régénérez-le et vous tenez les mêmes 8 carnets.
Test conduit le 2026-09-12. Les appels ont été passés par la chaîne de test automatisée de ce site : la passe d'auto-vérification et l'analyse sont des scripts, et les deux sont dans l'archive ci-dessous.
L'unité qui est notée
Ni un carnet ni un appel : une fusion proposée, c'est-à-dire une paire de lignes qu'un modèle a mises dans un même groupe.
| Nombre | |
|---|---|
| Fusions proposées sur les 96 passes | 368 |
| Justes : deux lignes, une personne | 271 |
| Fausses : deux personnes, une ligne détruite | 97 |
Les garde-fous
| Ce qu'il fait | Coût | |
|---|---|---|
| A0 | le champ notes du modèle, rempli pendant le dédoublonnage : nomme-t-il les deux lignes ? |
aucun |
| A1 | clés fortes : refuser toute fusion dont les lignes ne partagent ni courriel ni téléphone | aucun |
| A3 | auto-vérification : un appel de plus au même modèle, avec le carnet et ses propres groupes | un appel par passe |
| A4 | accord des trois modèles : signaler toute fusion que les deux autres n'ont pas proposée | deux passes de plus |
| A5 | accord avec un seul autre modèle, calculé pour les trois témoins | une passe de plus |
La consigne d'A3 ne laisse jamais entendre qu'une erreur a été trouvée et ne donne aucune vérité terrain, et le verdict est demandé groupe par groupe plutôt que sur la partition entière.
Les chiffres bruts
368 fusions jugées, 97 fausses, 271 justes.
| Garde-fou | Rattrapage | Fausse alerte | Précision | Fusions fausses manquées |
|---|---|---|---|---|
| A0 note spontanée | 73,2 % | 55,4 % | 32,1 % | 26 |
| A1 clés fortes | 72,2 % | 0,0 % | 100,0 % | 27 |
| A3 auto-vérification | 76,0 % | 20,8 % | 57,0 % | 23 |
| A4 accord des trois modèles | 62,9 % | 9,2 % | 70,9 % | 36 |
A5 avec gpt-4o-mini seul |
25,5 % | 8,7 % | 44,8 % | 38 |
A5 avec gemini-2.5-flash-lite seul |
40,0 % | 3,9 % | 78,8 % | 39 |
A5 avec claude-haiku-4.5 seul |
65,4 % | 2,8 % | 91,1 % | 27 |
| A1 et A4 ensemble | 90,7 % | 9,2 % | 77,9 % | 9 |
| A1 et A3 ensemble | 92,7 % | 20,8 % | 61,8 % | 7 |
| A3 et A4 ensemble | 87,6 % | 27,4 % | 53,8 % | 12 |
Les mêmes garde-fous sur la tâche des factures
| Garde-fou | Factures, 2026-09-04 | Contacts, 2026-09-12 |
|---|---|---|
| Auto-vérification | 97,6 % rattrapés / 39,0 % de fausses | 76,0 % rattrapés / 20,8 % de fausses |
| Accord des trois modèles | 92,9 % rattrapés / 11,0 % de fausses | 62,9 % rattrapés / 9,2 % de fausses |
| La règle mécanique gratuite | 59,5 % rattrapés / 22,0 % de fausses | 72,2 % rattrapés / 0,0 % de fausses |
Par modèle, sur le garde-fou d'accord
| Modèle | Fusions fausses proposées | Rattrapage A4 | Précision A4 |
|---|---|---|---|
openai/gpt-4o-mini |
46 sur 133 | 73,9 % | 87,2 % |
google/gemini-2.5-flash-lite |
32 sur 124 | 62,5 % | 66,7 % |
anthropic/claude-haiku-4.5 |
19 sur 111 | 36,8 % | 41,2 % |
Par niveau de désordre
| Niveau | Fusions proposées | Fausses | A1 rattrape | A3 rattrape | A4 rattrape | Fausse alerte A4 |
|---|---|---|---|---|---|---|
| N1 propre | 82 | 18 | 66,7 % | 88,2 % | 83,3 % | 10,9 % |
| N2 casse et espaces | 95 | 26 | 69,2 % | 65,4 % | 53,8 % | 8,7 % |
| N3 formats de téléphone mélangés | 104 | 33 | 72,7 % | 78,8 % | 63,6 % | 2,8 % |
| N4 colonnes fusionnées | 87 | 20 | 80,0 % | 75,0 % | 55,0 % | 14,9 % |
Charge de relecture pour 1000 fusions proposées
Dans une population où 264 d'entre elles sont fausses, ce qui est la proportion de ce corpus et non celle d'un carnet réel.
| Garde-fou | À relire | Fusions fausses trouvées | Manquées | Lectures par fusion trouvée |
|---|---|---|---|---|
| A1 | 190 | 190 | 73 | 1,0 |
| A3 | 355 | 202 | 64 | 1,8 |
| A4 | 234 | 166 | 98 | 1,4 |
| A1 et A4 | 307 | 239 | 25 | 1,3 |
Coûts
La passe d'auto-vérification, 96 appels : 0,07469 USD, 96 lus, 94 JSON valides,
359 verdicts rendus pour 366 groupes soumis. Pour 1000 appels d'auto-vérification :
gpt-4o-mini 0,196 USD, gemini-2.5-flash-lite 0,161 USD, claude-haiku-4.5
1,977 USD.
Chaque verdict a été apparié à son groupe par égalité des ensembles de lignes, 359
fois sur 359, et jamais par le rang. Un appariement par rang aurait été une
hypothèse ; il est compté à part dans chiffres.json et il vaut zéro.
Ce que contient l'archive
Huit fichiers, 492862 octets décompressés. L'inventaire est ici pour que vous sachiez ce que vous téléchargez avant de le télécharger.
| Fichier | Ce qu'il contient | Taille |
|---|---|---|
corpus.json |
les 8 carnets, la vérité terrain et l'explication de chaque paire, graine 20260817 |
40,6 Kio |
degrader.py |
les quatre niveaux de présentation, nécessaires pour redonner au modèle le carnet exact qu'il a vu | 3,6 Kio |
resultats-bruts.json |
les 96 partitions jugées, publiées le 2026-08-18 | 213,3 Kio |
auto-verifier.py |
la passe d'auto-vérification, un appel par partition | 7,5 Kio |
verifications.json |
les 96 réponses brutes d'auto-vérification, avec la consigne employée | 172,8 Kio |
analyser.py |
les cinq garde-fous, leurs combinaisons et la charge de relecture | 15,6 Kio |
chiffres.json |
tous les chiffres calculés | 14,4 Kio |
PROTOCOLE.md |
le protocole, la lecture des chiffres et les limites | 13,5 Kio |
corpus.json, degrader.py et resultats-bruts.json sont recopiés sans
modification du jeu de données du 2026-08-18, pour que cette archive tienne seule
sans aller en chercher une autre.
Les scripts et leurs commentaires sont en français, qui est la langue de travail derrière ce site. La clé d'API est lue dans une variable d'environnement et n'apparaît dans aucun de ces fichiers.
Rejouez-le
L'analyse n'appelle aucun modèle : elle rejoue à coût nul sur les réponses brutes
livrées dans l'archive. Seul auto-verifier.py dépense quelque chose.
unzip 2026-09-deduplication-guardrails.zip
python3 auto-verifier.py --resultats resultats-bruts.json --corpus corpus.json \
--sortie verifications.json
python3 analyser.py --resultats resultats-bruts.json \
--verifications verifications.json --sortie chiffres.jsonUne règle de garde-fou que vous contestez peut être changée dans analyser.py puis
rejouée sur les mêmes 96 réponses sans payer un seul appel.
Chaque réponse brute est une entrée de verifications.json, exactement telle que le
modèle l'a rendue, avant toute notation. Celle-ci porte les deux sens de l'échec
dans une seule réponse : la fusion de deux personnes différentes est confirmée, et
la fusion de deux lignes qui partagent une adresse de courriel est rejetée.
{"modele": "openai/gpt-4o-mini", "carnet": "carnet-01", "niveau": 1,
"lu": true, "json_valide": true,
"groupes_soumis": [[4, 5], [3, 8], [6, 9], [1, 10]],
"verdicts": [{"rows": [4, 5], "same_person": true},
{"rows": [3, 8], "same_person": true},
{"rows": [6, 9], "same_person": false},
{"rows": [1, 10], "same_person": false}]}Vérifiez ce que vous avez téléchargé avant de lui faire confiance :
shasum -a 256 2026-09-deduplication-guardrails.zip
# 245aa5fb0be4b00f99793ec677118123d56c9a8669695f4e1d4f98cf0c9c407bComment citer ce jeu de données
Copiez l'une des deux formes ci-dessous. La référence pointe vers cette page, qui est l'adresse stable de ce jeu de données ; l'archive est ce que cette adresse sert.
Think AI First (2026). Deux garde-fous de détection d'erreur sur 368 fusions de contacts proposées, 96 réponses brutes d'auto-vérification.
Think AI First. Test conduit le 2026-09-12, publié le 2026-09-12.
https://think-ai-first.com/fr/donnees/garde-fous-dedoublonnage-2026-09. Sous licence CC BY 4.0.@dataset{thinkaifirst2026garde,
author = {{Think AI First}},
title = {Deux garde-fous de detection d'erreur sur 368 fusions de contacts proposees, 96 reponses brutes d'auto-verification},
year = {2026},
publisher = {Think AI First},
url = {https://think-ai-first.com/fr/donnees/garde-fous-dedoublonnage-2026-09},
note = {Test conduit le 2026-09-12. Sous licence CC BY 4.0. Archive SHA-256 245aa5fb0be4b00f99793ec677118123d56c9a8669695f4e1d4f98cf0c9c407b}
}Licence et réutilisation
Publié sous CC BY 4.0. Servez-vous en, citez-le, contredisez-le. Si vous rejouez ce test et trouvez autre chose, dites-le nous par le formulaire de contact : les corrections sont publiées sur l'article lui-même, datées.
Télécharger le jeu de données (zip, 48,3 Kio, 8 fichiers)
Les autres jeux de données publiés ici
Chacun est un test distinct, avec son corpus, ses réponses brutes et son archive. Celui-ci juge les fusions du deuxième.
- Extraction de factures par trois modèles économiques, 288 réponses brutes, test conduit le 2026-08-10.
- Dédoublonnage de contacts par trois modèles économiques, 96 réponses brutes, test conduit le 2026-08-17.
- Extraction des actions d'un compte rendu par trois modèles économiques, 96 réponses brutes, test conduit le 2026-08-18.
- Répétabilité d'une étape LLM à température 0, 360 réponses brutes, test conduit le 2026-08-25.
- Quatre garde-fous de détection d'erreur sur 288 extractions de factures, 288 réponses brutes d'auto-vérification, test conduit le 2026-09-04.
- Prix contre justesse en extraction de factures, six modèles, 864 réponses brutes avec leur coût facturé, test conduit le 2026-09-06.
- Rapprochement facture et bon de commande par quatre modèles, 672 décisions brutes, test conduit le 2026-09-14.