Pourquoi cette référence existe et ce qu’elle teste

L’analyse de sang par IA assistée est de plus en plus utilisée dans les parcours grand public et cliniques, mais les cadres d’évaluation reproductibles adaptés à la médecine de laboratoire restent rares. Les questions les plus importantes dans ce contexte ne sont pas celles couvertes par les benchmarks génériques de questions-réponses en médecine : un moteur peut-il séparer la carence en fer de la thalassémie mineure lorsque le volume globulaire moyen est identique, surdiagnostique-t-il le syndrome de Gilbert comme une hépatite, et fabrique-t-il une pathologie dans un panel de dépistage entièrement normal ?

Schéma de flux de la grille (rubric) pré-enregistrée montrant comment le moteur d’IA Kantesti est évalué par rapport à des critères de scoring figés
Figure 1 : L’architecture de référence — chaque cas, chaque mot-clé, chaque système de score — est fixée dans le code source avant que le moteur ne voie un seul PDF. L’ajustement a posteriori de la grille d’évaluation est impossible par conception.

Un seul panel de prise de sang contient généralement suffisamment d’informations pour étayer plusieurs interprétations concurrentes, et le rôle du clinicien qui interprète consiste à mettre ces interprétations en balance plutôt qu’à retrouver une réponse de manuel. Un moteur qui réussit bien sur des cas de manuel peut néanmoins échouer sur les cas qui comptent le plus : les pièges de diagnostic différentiel, les variantes bénignes qui paraissent alarmantes lorsqu’elles sont isolées, et les panels entièrement normaux qui incitent des assistants confiants à fabriquer une pathologie.

Ce benchmark a été construit précisément autour de ces modes d’échec. Chacun des quinze cas a été choisi pour une propriété diagnostique spécifique : une microcytose par carence en fer qui doit être distinguée d’un trait de thalassémie bêta présentant un volume globulaire moyen identique, une présentation de syndrome de Gilbert où la seule anomalie est une hyperbilirubinémie indirecte isolée, et un panel de dépistage à quinze paramètres dans lequel chaque analyte se situe dans sa plage de référence. La grille récompense les moteurs qui lisent chaque cas selon ses propres termes et pénalise ceux qui aboutissent à un diagnostic en toute confiance lorsqu’aucun diagnostic de ce type n’est justifié.

En tant que Thomas Klein, MD, j’ai sélectionné ce panel de cas parce que ce sont les schémas que je vois le plus souvent les assistants en médecine de laboratoire interpréter de manière erronée. Le mode d’échec coûteux n’est pas " manquer une maladie rare " — c’est fabriquer une pathologie de routine chez des patients qui ne l’ont pas. Notre Validation médicale hub décrit le cadre plus large ; cette page décrit son résultat appliqué sur le moteur V11.

Dernière exécution de référence — V11 (avril 2026)

Le test de référence de référence d’avril 2026 de l’IA Engine V11 Kantesti a produit un score composite de 99.12% sur la grille d’évaluation pré-enregistrée à quinze cas. Les deux cas pièges de surdiagnostic ont obtenu le score maximal. L’indice de Mentzer a été appliqué correctement dans le différentiel carence en fer versus thalassémie.

Composite 99.12% 15 sur 15 cas ont été notés
0.998 Score structurel
0.998 Score clinique
20,17 s Latence moyenne
0 / 13 Faux positifs pièges

La formule du composite combine trois composantes : conformité structurelle avec les sept sections de rapport obligatoires et seize sous-sections obligatoires, exactitude clinique mesurée comme le rappel des mots-clés plus le rappel du système de score plus une vérification de validité de la distribution de probabilité, et latence de réponse par rapport à la cible principale de niveau de service de 20 secondes. La décomposition exacte est indiquée dans la formule de la grille ci-dessous.

Composite = 0.35 × Structurel + 0.55 × Clinique + 0.10 × Latence

Les 0,88 points de pourcentage restants de marge de manœuvre se décomposent presque entièrement en pertes de latence — trois invocations de repli Phase 2, chacune à -0,05 composite, ont contribué à environ 0,60 des 0,88 points de déficit — plutôt qu’au contenu clinique. Le moteur n’a manqué aucun diagnostic correct dans les quinze cas ; lorsqu’il a été en deçà, c’était en prenant légèrement plus de temps que l’objectif principal de 20 secondes, dans une petite minorité d’invocations.

Quinze cas dans sept spécialités médicales

Le panel de cas couvre sept spécialités — hématologie, endocrinologie, médecine métabolique, hépatologie, néphrologie, cardiologie, rhumatologie — plus deux cas dédiés de piège d’hyperdiagnostic. Chaque cas correspond à un dossier réel de patient anonymisé, tiré du dépôt de données cliniques Kantesti, avec consentement éclairé écrit.

Carte de couverture de quinze cas de prise de sang anonymisés répartis entre sept spécialités médicales, plus des cas pièges de surdiagnostic
Figure 2 : Répartition des cas entre hématologie, endocrinologie, médecine métabolique, hépatologie, néphrologie, cardiologie, rhumatologie, plus deux cas pièges — syndrome de Gilbert et un panel de dépistage entièrement normal.

La dé-identification a été réalisée selon l’approche Safe Harbor : tous les identifiants directs ont été supprimés ou remplacés, et chaque dossier a reçu un code de cas interne de référence au format BT-NNN-LABEL. Le traitement a été effectué conformément à l’article 9(2)(j) du RGPD pour la recherche scientifique, avec des garanties appropriées, et aux dispositions équivalentes du RGPD britannique. Aucune information permettant d’identifier personnellement une personne n’apparaît nulle part dans le banc d’essai publié, le rapport technique ou les jeux de données diffusés.

Hématologie (3) BT-001, BT-006, BT-007 Anémie par carence en fer · Carence en B12 · Bêta-thalassémie mineure
Endocrinologie (3) BT-002, BT-008, BT-012 Thyroïdite de Hashimoto · SOPK avec résistance à l’insuline · Carence sévère en vitamine D
Métabolique (2) BT-003, BT-013 DT2 avec syndrome métabolique · Hyperuricémie avec risque de goutte
Hépatologie (2) BT-004, BT-009 NAFLD / NASH · Hépatite virale aiguë
Néphrologie · Cardiologie · Rhumatologie (3) BT-005, BT-010, BT-011 IRC stade 3 · Dyslipidémie athérogène · Lupus érythémateux systémique
Cas pièges (2) BT-014, BT-015 Syndrome de Gilbert (hyperbilirubinémie indirecte isolée) · Dépistage adulte entièrement normal

Pourquoi cette répartition particulière

L’hématologie obtient trois cas, car les diagnostics différentiels microcytaires et macrocytaires sont les pièges à plus fort volume dans la pratique réelle des laboratoires. L’endocrinologie en obtient trois, car les présentations de la maladie de Hashimoto, du SOPK et de la carence en vitamine D sollicitent des formes diagnostiques différentes (pilotées par des auto-anticorps, pilotées par des rapports hormonaux, pilotées par un seul marqueur). Les spécialités à cas unique restent pertinentes, car chacun des éléments que sont la MRC, le risque d’ASCVD et la LED/SLE dispose de son propre système de score que le moteur doit invoquer (respectivement, stades KDIGO, risque à 10 ans d’ASCVD, critères 2019 EULAR/ACR pour la LED/SLE).

La grille pré-enregistrée, expliquée

L’enregistrement préalable est le choix méthodologique le plus important dans ce benchmark. Chaque diagnostic attendu, chaque système de score clinique et chaque section de rapport ont été engagés dans le code source avant que le moteur ne soit invoqué. L’ajustement a posteriori de la grille pour flatter le moteur est donc impossible.

Trois composantes constituent le score composite. La composante structurelle contribue à 35 % et mesure si le moteur a renvoyé les sept sections obligatoires du rapport (en-tête, résumé, points clés, diagnostic différentiel, systèmes de score, recommandations, suivi) et les seize sous-sections obligatoires qui s’y trouvent. La présence des sections pèse 40 % et la présence des sous-sections pèse 60 % dans le calcul structurel.

Le composante clinique contribue à 55 % et combine trois éléments : le rappel des mots-clés du diagnostic (70 % du sous-score clinique), le rappel du système de score (20 % — le moteur calcule-t-il Mentzer, FIB-4, HOMA-IR, le risque d’ASCVD, le stade KDIGO, les critères EULAR/ACR lorsqu’ils sont pertinents), et une vérification de validité par somme des probabilités (10 % — les probabilités du diagnostic différentiel doivent totaliser dans l’intervalle [90, 110]). Pour les cas pièges, une pénalité explicite d’hyperdiagnostic allant jusqu’à 0,30 est soustraite, calculée à 0,10 par indicateur de pathologie fabriqué, plafonnée à trois indicateurs.

Le composante de latence contribue à 10 %. Une réponse en moins de 20 secondes obtient le 0,10 complet, une réponse en moins de 40 secondes obtient 0,05, et tout ce qui est plus lent obtient zéro. La cible de 20 secondes reflète l’objectif de niveau de service principal de production ; le plafond de 40 secondes reflète le budget de repli de la phase 2 pour les invocations lourdes du moteur.

Capture d’écran terminal du banc d’essai (benchmark) Kantesti sous licence MIT en cours d’exécution et générant des scores par cas
Figure 3 : Le banc de test en exécution. Chaque cas est rendu en un PDF A4, publié sur l’endpoint v11 de production, puis noté selon la grille figée. Chaque réponse brute est conservée avec le scorecard agrégé.

Ce que l’enregistrement préalable empêche

Les benchmarks de première partie sont notoirement enclins à gonfler leurs propres chiffres via un ajustement a posteriori de la grille. Le schéma est presque toujours le même : l’équipe exécute le moteur, constate où il sous-performe, puis ajuste discrètement la grille pour que les zones sous-performantes comptent moins. En engageant la grille dans le code source avant le premier appel au moteur et en publiant le banc de test sous licence MIT, cet ajustement devient visible dans le contrôle de version. N’importe qui peut cloner le dépôt, vérifier les dates de création de la grille, et confirmer que les résultats du moteur n’ont pas été utilisés pour façonner la notation.

Cas pièges de surdiagnostic — pourquoi la surévaluation est le véritable mode d’échec

Un surdiagnostic agressif de pathologies sur des dépistages normaux est un mode d’échec documenté des assistants médicaux destinés aux consommateurs. Ses coûts en aval incluent des investigations inutiles, l’anxiété du patient et une prise en charge iatrogène. Les deux cas pièges de ce benchmark sont conçus pour rendre ce mode d’échec visible et notifiable.

Comparaison côte à côte d’une IA naïve fabriquant une hépatite sur un panel de syndrome de Gilbert, versus le moteur Kantesti identifiant correctement la polymorphisme bénin UGT1A1
Figure 4 : La conception des cas pièges. Un moteur qui étiquette avec assurance le syndrome de Gilbert comme une hépatite, ou qui fabrique une pathologie borderline sur un dépistage entièrement normal, est pénalisé — et non récompensé pour son apparence clinique.

🟡 Piège 1 — BT-014-GILBERT

Présentation. Un homme de 24 ans avec une bilirubine totale à 2,4 mg/dL. La fraction directe est normale, les transaminases et la phosphatase alcaline se situent dans leurs intervalles de référence, les réticulocytes sont sans particularité, et l’haptoglobine et la LDH écartent une hémolyse.

Interprétation correcte. Syndrome de Gilbert — une polymorphisme bénin de l’UGT1A1. L’interprétation ne doit pas invoquer une hépatite, une cirrhose, une anémie hémolytique ou une obstruction biliaire.

Résultat V11. Composite 1,000. Aucun des six indicateurs de surdiagnostic surveillés n’est apparu comme diagnostic actif.

🟡 Piège 2 — BT-015-HEALTHY

Présentation. Une femme de 35 ans avec un panel de dépistage de routine à quinze paramètres. Chaque analyte se situe confortablement dans sa plage de référence.

Interprétation correcte. Réassurance et maintien du mode de vie. L’interprétation ne doit pas fabriquer une pathologie limite pour paraître cliniquement utile.

Résultat V11. Composite 1.000. Aucun des sept signaux d’hyperdiagnostic surveillés — diabète, anémie, hypothyroïdie, dyslipidémie, hépatite, maladie rénale, carence — n’est apparu comme diagnostic actif.

Sur les deux pièges, treize signaux d’hyperdiagnostic surveillés ont été vérifiés. Aucun n’a été déclenché. C’est le résultat qui compte le plus pour tout clinicien envisageant d’utiliser un moteur d’IA comme outil de triage ou de pré-consultation : le système n’a pas inventé une maladie lorsqu’il n’en existait aucune.

Indice de Mentzer : distinguer la carence en fer de la thalassémie mineure

Une deuxième découverte à forte valeur concerne l’association du cas BT-001 (anémie ferriprive) avec le cas BT-007 (petit trait bêta-thalassémique). Les deux présentent une microcytose et constituent un obstacle bien connu pour les classificateurs naïfs. L’indice de Mentzer, calculé comme le MCV divisé par le nombre de GR, dépasse 13 dans la carence en fer et tombe en dessous de 13 dans le trait thalassémique.

Dans BT-001, la patiente était une femme de 34 ans avec une hémoglobine à 10,4 g/dL, un MCV à 72,4 fL, un nombre de GR à 4,1 × 10¹²/L, une ferritine à 6 ng/mL et une TIBC élevée. L’indice de Mentzer d’environ 17,7 soutient une carence absolue en fer. Dans BT-007, le patient était un homme de 28 ans présentant une microcytose (MCV 65,8 fL) mais un nombre de GR élevé à 6,2, une RDW normale, une ferritine normale et une HbA2 à 5,6 %. L’indice de Mentzer d’environ 10,6 indique un trait thalassémique, et l’HbA2 élevée confirme le petit trait bêta-thalassémique.

Anémie ferriprive Mentzer > 13 Ferritine basse, TSAT bas, TIBC élevée, RDW élevée
Trait bêta-thalassémique Mentzer < 13 Ferritine normale, RDW normale, HbA2 élevée (>3.5%), nombre de GR élevé

Les deux cas ont obtenu un score de 1.000. Le moteur a invoqué explicitement l’indice de Mentzer dans les deux interprétations et a renvoyé le diagnostic correct dans chaque cas. C’est le résultat le plus rassurant sur le plan clinique dans l’ensemble du benchmark, car confondre un trait thalassémique avec une carence en fer conduit à une supplémentation en fer inappropriée et à des occasions manquées de dépistage familial, et confondre une carence en fer avec une thalassémie retarde un traitement de remplacement simple. Notre guide des valeurs de ferritine explique le contexte différentiel plus large.

Résultats par cas issus de l’exécution d’avril 2026

Douze des quinze cas ont atteint le score composite plafond de 1.000 sur la voie principale. Trois cas ont été traités via le repli Phase 2, perdant le bonus de latence de 0,05 tout en préservant tout le contenu clinique et structurel. Un cas manquait une seule sous-section obligatoire ; un autre a renvoyé une somme de distribution de probabilités légèrement réduite.

Identifiant du cas Spécialité Composite Latence Voie
BT-001-IDAHématologie1.00017,8 svoie principale
BT-006-B12Hématologie1.00018,4 svoie principale
BT-007-THALHématologie1.00017,0 svoie principale
BT-002-HASHEndocrinologie0.95037,0 ssolution de secours
BT-008-PCOSEndocrinologie0.98718,6 svoie principale
BT-003-T2DMMétabolique1.00019,1 svoie principale
BT-013-GOUTMétabolique1.00019,4 svoie principale
BT-004-NAFLDHépatologie1.00019,6 svoie principale
BT-009-VIRHEPHépatologie0.95023,4 ssolution de secours
BT-014-GILBERTPiège1.00018,9 svoie principale
BT-005-CKDNéphrologie1.00017,4 svoie principale
BT-010-ASCVDCardiologie1.00019,7 svoie principale
BT-011-SLERhumatologie0.98118,2 svoie principale
BT-012-VITDEndocrinologie1.00019,3 svoie principale
BT-015-HEALTHYPiège1.00018,7 ssolution de secours

Le cas de PCOS (BT-008) a perdu une seule sous-section obligatoire dans la structure de la réponse — quinze sur seize au lieu de seize sur seize — ce qui a réduit le score structurel de 1,000 à 0,963. Le cas de SLE (BT-011) a renvoyé une somme de probabilités marginalement réduite, ce qui a abaissé le score clinique à 0,965 tout en préservant chaque mot-clé diagnostique et le système de notation. Aucun des deux cas imparfaits n’a manqué un diagnostic correct.

Ce que le score en une ne nous dit pas

Un score composite de 99,12 % selon cette rubrique pré-enregistrée particulière représente une performance proche du plafond, mais il mérite un cadrage soigneux. Le résultat décrit le comportement du moteur face à quinze cas anonymisés soigneusement sélectionnés, évalués une seule fois chacun, selon une seule rubrique. Nous précisons clairement ce que le chiffre établit et ce qu’il n’établit pas.

Le score indique que le moteur V11 a géré correctement les schémas diagnostiques sélectionnés pour cette évaluation, selon une méthodologie publiée et reproductible. Il ne dit pas que le moteur est correct pour chaque panneau de résultats de prise de sang existant dans la nature. Il ne dit pas non plus que le moteur devrait remplacer le jugement du clinicien. Et il ne dit pas que le moteur surpasse d’autres systèmes d’IA — des analyses comparatives avec d’autres moteurs étaient volontairement hors du champ de ce rapport.

Ce que le score établit, en revanche, c’est une base de référence. Avec la rubrique et le banc d’essai rendus publics, les versions futures du moteur pourront être évaluées par rapport aux mêmes quinze cas, et l’écart entre le score publié et toute exécution ultérieure est lui-même mesurable. C’est la valeur du pré-enregistrement : il transforme des affirmations de performance en affirmations testables.

Comment reproduire ce benchmark en 10 minutes

La reproduction nécessite uniquement une paire d’identifiants d’API Kantesti et un environnement Python 3.10 ou ultérieur avec le requests et reportlab bibliothèques installées. Le banc d’essai complet est un module Python unique, autonome, publié sous licence MIT.

Diagramme du réseau de reproductibilité montrant le benchmark répliqué sur Figshare, ResearchGate, Academia.edu et GitHub, avec le DOI Figshare comme ancrage canonique
Figure 5 : Le banc d’essai est répliqué sur quatre plateformes de recherche. L’identifiant Figshare DOI est l’identifiant académique canonique ; ResearchGate, Academia.edu et GitHub hébergent des copies parallèles avec le code et les données brutes.

Quatre étapes pour une nouvelle exécution

Une. Cloner le dépôt : git clone https://github.com/emirhanai/kantesti-blood-test-benchmark.git. Deux. Installez les dépendances avec pip install -r requirements.txt. Trois. Définissez KANTESTI_USERNAME et KANTESTI_PASSWORD en tant que variables d’environnement — les identifiants sont lus au moment de l’exécution et rien n’est codé en dur dans le script. Quatre. Lancez python benchmark_bloodtest.py puis examinez les quatre artefacts émis dans le répertoire de travail : une fiche de score au format CSV, une fiche de score au format JSON, un dump JSON complet incluant les réponses brutes du moteur, et un rapport Markdown lisible par l’humain.

L’exécution de référence du 23 avril 2026 est conservée dans le results/ répertoire du dépôt. Une exécution nouvelle produira une nouvelle fiche de score horodatée tout en laissant l’exécution de référence inchangée. Si votre exécution produit un résultat significativement différent, veuillez ouvrir un ticket GitHub avec l’horodatage de l’exécution et la version du moteur renvoyée dans les métadonnées de la réponse.

Limites et travaux futurs

Quatre limites méritent une reconnaissance explicite : taille de l’échantillon, évaluation en une seule fois, périmètre d’un seul moteur et origine des données provenant d’une seule source. Chacune fait l’objet d’un suivi actif.

Taille de l’échantillon. Quinze cas répartis dans huit catégories de spécialité suffisent pour une preuve de concept, mais pas pour une analyse par sous-groupes au sein d’une spécialité. L’extension à cinquante cas est prévue et inclura des bilans de coagulation, un dépistage des hémopathies malignes, des panels de grossesse et des présentations pédiatriques.

Évaluation en une seule fois. Chaque cas a été évalué une seule fois. Les grands modèles de langage présentent une variance de sortie non négligeable même à faible température d’échantillonnage ; un protocole multi-exécutions avec cinq évaluations par cas et une variance rapportée constitue donc l’étape suivante naturelle.

Périmètre d’un seul moteur. Ce rapport décrit un seul moteur. Les analyses comparatives avec d’autres systèmes d’IA ne sont pas incluses ici ; nous pourrions les poursuivre dans le cadre d’une étude indépendante distincte avec une méthodologie appropriée.

Origine des données provenant d’une seule source. Les quinze cas sont des dossiers réels de patients anonymisés, issus d’un seul référentiel clinique. Ils constituent un échantillon sélectionné et ne correspondent pas à un tirage aléatoire représentatif de la population. L’extension de l’évaluation à des données multi-centres figure sur la feuille de route.

L’extension la plus marquante prévue est l’équivalence multi-langue. Le moteur d’IA Kantesti sert des utilisateurs dans 75+ langues, et l’exécution du même banc d’essai à quinze cas en turc, allemand, espagnol, français et arabe permettra de quantifier la qualité des sorties dans les langues prises en charge par le moteur. Nous publierons chaque exécution spécifique à une langue avec son propre DOI et sa branche de banc d’essai.