Perché esiste questo benchmark e cosa testa
L’analisi del sangue con IA assistita è sempre più utilizzata in contesti consumer e clinici, tuttavia restano rare le framework di valutazione riproducibili adattate alla medicina di laboratorio. Le domande che contano di più in questo contesto non sono quelle coperte dai benchmark generali di medical question-answering: un motore può distinguere la carenza di ferro dalla caratteristica talassemica quando il volume corpuscolare medio è identico, sovradiagnostica la sindrome di Gilbert come epatite e produce patologia in un pannello di screening completamente normale?
Un singolo pannello di analisi del sangue contiene in genere abbastanza segnale da supportare diverse interpretazioni concorrenti e il compito del clinico che interpreta è valutare tali interpretazioni tra loro, piuttosto che recuperare una risposta da manuale. Un motore che va bene nei casi da manuale può comunque fallire proprio nei casi che contano di più: le insidie della diagnosi differenziale, le varianti benigne che da sole sembrano allarmanti e i pannelli pienamente normali che inducono assistenti sicuri a fabbricare patologia.
Questo benchmark è stato costruito proprio attorno a queste modalità di fallimento. Ciascuno dei quindici casi è stato selezionato per una specifica proprietà diagnostica: una microcitosi da carenza di ferro che deve essere tenuta distinta da una forma portatrice di beta-talassemia con identico volume corpuscolare medio, una presentazione di sindrome di Gilbert in cui l’unica anomalia è un’iperbilirubinemia indiretta isolata e un pannello di screening di quindici parametri in cui ogni analita si trova all’interno del suo intervallo di riferimento. La rubrica premia i motori che leggono ogni caso secondo i suoi termini e penalizza i motori che arrivano a una diagnosi sicura quando non è giustificata alcuna diagnosi di questo tipo.
Come Thomas Klein, MD, ho selezionato questo pannello di casi perché sono i pattern che vedo gli assistenti di medicina di laboratorio sbagliare più spesso. La modalità di fallimento costosa non è "mancare una malattia rara": è fabbricare patologia di routine in pazienti che non ce l’hanno. Nostro Validazione medica hub descrive il quadro più ampio; questa pagina descrive il suo risultato applicato sul motore V11.
Ultima esecuzione di riferimento — V11 (aprile 2026)
L’esecuzione di riferimento di aprile 2026 del motore AI Kantesti V11 ha prodotto un punteggio composito di 99.12% nella rubrica pre-registrata a quindici casi. Entrambi i casi-trappola di iperdiagnosi hanno ottenuto il punteggio massimo. L’indice di Mentzer è stato applicato correttamente nella differenziale tra carenza di ferro e talassemia.
La formula del composito combina tre componenti: conformità strutturale con le sette sezioni di report obbligatorie e le sedici sottosezioni obbligatorie, accuratezza clinica misurata come richiamo delle parole chiave più richiamo del sistema di punteggio più un controllo di validità della distribuzione di probabilità e latenza della risposta rispetto all’obiettivo primario di livello di servizio di 20 secondi. La scomposizione esatta è mostrata nella formula della rubrica qui sotto.
I restanti 0,88 punti percentuali di margine disponibile si scompongono quasi interamente in perdita di latenza — tre invocazioni di ripiego di Fase 2 ciascuna a -0,05 compositi hanno contribuito circa 0,60 dei 0,88 punti di deficit — invece che in contenuti clinici. Il motore non ha mancato alcuna diagnosi corretta in nessuna delle quindici casistiche; dove è stato carente, lo è stato prendendo leggermente più tempo rispetto all’obiettivo primario di 20 secondi in una piccola minoranza di invocazioni.
Quindici casi in sette specialità mediche
Il pannello di casi copre sette specialità — ematologia, endocrinologia, medicina metabolica, epatologia, nefrologia, cardiologia, reumatologia — più due casi dedicati di trappola per iperdiagnosi. Ogni caso è una cartella clinica reale anonimizzata di un paziente, tratta dal repository di dati clinici Kantesti, con consenso informato scritto.
La de-identificazione è stata eseguita con l’approccio Safe Harbor: tutti gli identificativi diretti sono stati rimossi o sostituiti e a ciascun record è stato assegnato un codice interno di caso di riferimento nel formato BT-NNN-LABEL. L’elaborazione è stata condotta in conformità con GDPR Articolo 9(2)(j) per la ricerca scientifica con adeguate salvaguardie e con le disposizioni equivalenti del GDPR del Regno Unito. Nessuna informazione personale identificativa compare in nessun punto del dispositivo pubblicato, della relazione tecnica o dei dataset rilasciati.
Perché questa particolare distribuzione
L’ematologia ottiene tre casi perché le differenziali microcitiche e le differenziali macrocitiche sono le trappole a più alto volume nella pratica di laboratorio reale. L’endocrinologia ottiene tre casi perché le presentazioni di Hashimoto, PCOS e carenza di vitamina D esercitano forme diagnostiche diverse (guidate da autoanticorpi, guidate da rapporti ormonali, guidate da un singolo marcatore). Le specialità a caso singolo restano comunque significative perché ciascuna tra CKD, rischio ASCVD e LES ha il proprio sistema di punteggio che il motore dovrebbe richiamare (rispettivamente stadiazione KDIGO, rischio a 10 anni ASCVD, criteri LES 2019 EULAR/ACR).
La rubrica pre-registrata, spiegata
La preregistrazione è la scelta metodologica singola più importante in questo benchmark. Ogni diagnosi attesa, ogni sistema di punteggio clinico e ogni sezione di report sono stati impegnati nel codice sorgente prima che il motore fosse invocato. La messa a punto post-hoc della rubrica per compiacere il motore è quindi impossibile.
Tre componenti costituiscono il punteggio composito. La componente strutturale contribuisce per il 35% e misura se il motore ha restituito le sette sezioni obbligatorie del report (intestazione, riepilogo, risultati chiave, differenziale, sistemi di punteggio, raccomandazioni, follow-up) e le sedici sottosezioni obbligatorie al loro interno. La presenza della sezione pesa il 40% e la presenza della sottosezione pesa il 60% nel calcolo strutturale.
IL componente clinica contribuisce per il 55% e combina tre elementi: richiamo delle parole chiave della diagnosi (70% della sottopunteggio clinico), richiamo del sistema di punteggio (20% — se il motore calcola Mentzer, FIB-4, HOMA-IR, rischio ASCVD, stadiazione KDIGO, criteri EULAR/ACR quando pertinenti) e un controllo di validità della somma delle probabilità (10% — le probabilità del differenziale devono sommarsi entro l’intervallo [90, 110]). Per i casi trappola, viene sottratta una penalità esplicita per iperdiagnosi fino a 0,30, calcolata come 0,10 per ogni flag di patologia fabbricato, con un limite massimo di tre flag.
IL componente di latenza contribuisce per il 10%. Una risposta sotto i 20 secondi ottiene il punteggio pieno di 0,10, una risposta sotto i 40 secondi ottiene 0,05 e qualsiasi risposta più lenta ottiene zero. L’obiettivo dei 20 secondi riflette l’obiettivo di livello di servizio del servizio di produzione primary-path; il tetto dei 40 secondi riflette il budget di ripiego della Fase 2 per invocazioni pesanti del motore.
Cosa impedisce la preregistrazione
I benchmark di prima parte sono notoriamente inclini a gonfiare i propri numeri tramite messa a punto post-hoc della rubrica. Il modello è quasi sempre lo stesso: il team esegue il motore, vede dove sottoperforma, quindi regola in silenzio la rubrica affinché le aree che sottoperformano contino di meno. Impegnando la rubrica nel codice sorgente prima della prima chiamata al motore e pubblicando il collaudo con licenza MIT, questa modifica diventa visibile nel version control. Chiunque può clonare il repository, controllare le date di creazione della rubrica e verificare che i risultati del motore non siano stati usati per modellare il punteggio.
Casi “trappola” di iperdiagnosi — perché la sovrastima è la vera modalità di fallimento
Chiamate aggressive di patologia su schermate normali è una modalità di fallimento documentata degli assistenti medici per consumatori. I costi a valle includono indagini non necessarie, ansia del paziente e workup iatrogeno. I due casi trappola in questo benchmark sono progettati per rendere visibile e valutabile questa modalità di fallimento.
🟡 Trappola 1 — BT-014-GILBERT
Presentazione. Un uomo di 24 anni con una bilirubina totale di 2,4 mg/dL. La frazione diretta è normale, le transaminasi e la fosfatasi alcalina sono all’interno dei rispettivi intervalli di riferimento, i reticolociti sono nella norma e l’aptoglobina e la LDH escludono l’emolisi.
Interpretazione corretta. Sindrome di Gilbert — una polimorfismo benigno di UGT1A1. L’interpretazione non dovrebbe richiamare epatite, cirrosi, anemia emolitica o ostruzione biliare.
Risultato v11. Composito 1,000. Nessuno dei sei flag di sovradiagnosi monitorati è comparso come diagnosi attiva.
🟡 Trappola 2 — BT-015-HEALTHY
Presentazione. Una donna di 35 anni con un pannello di screening di routine a quindici parametri. Ogni analita si trova comodamente all’interno del proprio intervallo di riferimento.
Interpretazione corretta. Rassicurazione e mantenimento dello stile di vita. L’interpretazione non dovrebbe inventare patologie borderline per sembrare clinicamente utile.
Risultato v11. Composito 1.000. Nessuno dei sette segnali di sovradiagnosi monitorati — diabete, anemia, ipotiroidismo, dislipidemia, epatite, malattia renale, carenza — è comparso come diagnosi attiva.
In entrambe le prove, sono stati controllati tredici segnali di iperdiagnosi monitorati. Nessuno è stato attivato. Questo è il risultato che conta di più per qualsiasi clinico che stia valutando l’uso di un motore di IA come strumento di triage o pre-consultazione: il sistema non ha inventato una malattia laddove non ne esisteva alcuna.
Indice di Mentzer: distinguere la carenza di ferro dalla talassemia caratteristica
Un secondo riscontro ad alto valore riguarda l’abbinamento del caso BT-001 (anemia da carenza di ferro) con il caso BT-007 (beta-talassemia minor). Entrambi si presentano con microcitosi e rappresentano un ostacolo ben noto per i classificatori inesperti. L’indice di Mentzer, calcolato come MCV diviso per il conteggio di RBC, supera 13 nella carenza di ferro e scende sotto 13 nella caratteristica talassemica.
In BT-001, la paziente era una donna di 34 anni con emoglobina 10,4 g/dL, MCV 72,4 fL, RBC 4,1 × 10¹²/L, ferritina 6 ng/mL e TIBC elevata. L’indice di Mentzer di circa 17,7 supporta una carenza assoluta di ferro. In BT-007, il paziente era un uomo di 28 anni con microcitosi (MCV 65,8 fL) ma un alto conteggio di RBC di 6,2, RDW nella norma, ferritina nella norma e HbA2 del 5,6%. L’indice di Mentzer di circa 10,6 indica la caratteristica talassemica e l’HbA2 elevato conferma la beta-talassemia minor.
Entrambi i casi hanno ottenuto 1.000. Il motore ha richiamato esplicitamente l’indice di Mentzer in entrambe le interpretazioni e ha restituito la diagnosi corretta in ogni occasione. Questo è il risultato singolo più rassicurante dal punto di vista clinico nell’intero benchmark, perché classificare erroneamente la caratteristica talassemica come carenza di ferro porta a una supplementazione di ferro inappropriata e a opportunità mancate di screening familiare, mentre classificare erroneamente la carenza di ferro come talassemia ritarda una terapia sostitutiva semplice. Il nostro guida per l’intervallo della ferritina spiega il contesto più ampio della diagnosi differenziale.
Risultati per caso dell’esecuzione di aprile 2026
Dodici dei quindici casi hanno raggiunto il punteggio composito massimo di 1.000 nel percorso primario. Tre casi sono stati gestiti tramite il ripiego della Fase 2, perdendo il bonus di latenza di 0,05 pur mantenendo tutto il contenuto clinico e strutturale. Un caso mancava di una singola sottosezione obbligatoria; uno ha restituito una somma di distribuzione di probabilità ridotta in modo marginale.
Il caso di PCOS (BT-008) ha perso una singola sottosezione obbligatoria nella struttura della risposta — quindici su sedici invece di sedici su sedici — il che ha ridotto il punteggio strutturale da 1,000 a 0,963. Il caso di SLE (BT-011) ha restituito una somma della distribuzione di probabilità marginalmente ridotta che ha abbassato il punteggio clinico a 0,965, preservando ogni parola chiave diagnostica e sistema di punteggio. Nessuno dei due casi non perfetti ha mancato una diagnosi corretta.
Cosa non ci dice il punteggio in evidenza
Un punteggio composito del 99,12% in questa specifica rubrica pre-registrata rappresenta prestazioni quasi al limite massimo, ma merita un inquadramento accurato. Il risultato descrive il comportamento del motore rispetto a quindici casi anonimi selezionati con cura, valutati una sola volta ciascuno, secondo una singola rubrica. Siamo espliciti su ciò che il numero fa e non stabilisce.
Il punteggio indica che il motore V11 ha gestito correttamente i pattern diagnostici selezionati per questa valutazione, con una metodologia pubblicata e riproducibile. Non dice che il motore sia corretto su ogni pannello di analisi del sangue esistente nel mondo reale. Non dice che il motore debba sostituire il giudizio del clinico. E non dice che il motore superi sistemi AI alternativi — analisi comparative con altri motori sono state deliberatamente escluse da questo report.
Ciò che il punteggio stabilisce è una linea di base. Con rubrica e harness resi pubblici, le versioni future del motore possono essere valutate sugli stessi quindici casi e lo scarto tra il punteggio pubblicato e qualsiasi esecuzione successiva è, a sua volta, misurabile. Questo è il valore della pre-registrazione: converte affermazioni sulle prestazioni in affermazioni verificabili.
Come riprodurre questo benchmark in 10 minuti
La riproduzione richiede solo una coppia di credenziali API Kantesti e un ambiente Python 3.10 o successivo con la libreria requests E reportlab installate. L’harness completo è un singolo modulo Python autosufficiente rilasciato con licenza MIT.
Quattro passaggi per una nuova esecuzione
Uno. Clona il repository: git clone https://github.com/emirhanai/kantesti-blood-test-benchmark.git. Due. Installa le dipendenze con pip install -r requirements.txt. Tre. Imposta KANTESTI_USERNAME E KANTESTI_PASSWORD come variabili d’ambiente — le credenziali vengono lette a runtime e nulla è codificato in modo statico nello script. Quattro. Esegui python benchmark_bloodtest.py e ispeziona i quattro artefatti emessi nella directory di lavoro: una scorecard CSV, una scorecard JSON, un dump JSON completo incluso le risposte grezze del motore e un report Markdown leggibile dall’uomo.
L’esecuzione di riferimento del 23 aprile 2026 è conservata in results/ nella directory del repository. Una nuova esecuzione produrrà una nuova scorecard con timestamp, lasciando l’esecuzione di riferimento intatta. Se la tua esecuzione produce un risultato significativamente diverso, apri un issue su GitHub con il timestamp dell’esecuzione e la versione del motore restituita nei metadati della risposta.
Limitazioni e lavori futuri
Quattro limitazioni meritano un riconoscimento esplicito: dimensione del campione, valutazione a singolo passaggio, ambito di un singolo motore e origine dei dati da una singola fonte. Ciascuna di esse è affrontata in lavori di follow-up in corso.
Dimensione del campione. Quindici casi distribuiti in otto categorie specialistiche sono sufficienti per una prova di concetto ma non per l’analisi per sottogruppi all’interno di una specialità. È prevista l’espansione a cinquanta casi e includerà pannelli di coagulazione, screening di malignità ematologiche, pannelli per la gravidanza e presentazioni pediatriche.
Valutazione a singolo passaggio. Ogni caso è stato valutato una sola volta. I modelli di linguaggio di grandi dimensioni mostrano una varianza dell’output non trascurabile anche a temperature di campionamento basse, quindi un protocollo multi-run con cinque valutazioni per caso e la varianza riportata è il passo successivo naturale.
Ambito di un singolo motore. Questo report descrive un singolo motore. Le analisi comparative rispetto ad altri sistemi AI sono fuori ambito qui; potremmo perseguirle come uno studio indipendente separato con metodologia adeguata.
Origine dei dati da una singola fonte. I quindici casi sono cartelle cliniche reali anonimizzate di pazienti, tratte da un singolo repository clinico. Rappresentano un campione selezionato e non un prelievo casuale rappresentativo della popolazione. Estendere la valutazione a dati multi-centro è nella roadmap.
L’estensione pianificata più impattante è la parità multi-lingua. Il motore AI Kantesti serve utenti in 75+ lingue e l’esecuzione dello stesso harness su quindici casi in turco, tedesco, spagnolo, francese e arabo quantificherà la qualità dell’output tra le lingue supportate dal motore. Pubblicheremo ogni esecuzione specifica per lingua con il suo DOI e il relativo branch dell’harness.