Zašto ovaj benchmark postoji i šta testira
AI-potpomognuto tumačenje krvne slike sve se više koristi u potrošačkim i kliničkim radnim tokovima, ali okviri za ponovljivu evaluaciju prilagođeni laboratorijskoj medicini ostaju neuobičajeni. Pitanja koja su najvažnija u ovom kontekstu nisu ona obuhvaćena općim benchmarkovima za medicinsko odgovaranje na pitanja: može li engine razdvojiti anemiju zbog nedostatka željeza od osobine talasemije kada je srednji volumen eritrocita identičan, dijagnosticira li prekomjerno Gilbertovu bolest kao hepatitis i stvara li patologiju u potpuno normalnom skrining panelu?
Jedan panel krvnih pretraga obično sadrži dovoljno signala da podrži više konkurentskih interpretacija, a zadatak ljekara koji tumači nalaze je da te interpretacije međusobno odmjeri, umjesto da izvuče jedno „tačno“ rješenje iz udžbenika. Motor koji se dobro pokazuje na slučajevima iz udžbenika i dalje može zakazati na onim slučajevima koji su najvažniji: na zamkama diferencijalne dijagnoze, na bezazlenim varijantama koje same po sebi izgledaju alarmantno i na potpuno normalnim panelima koji navode samouvjerene asistente da „izmisle“ patologiju.
Ovaj benchmark je izgrađen upravo oko tih načina neuspjeha. Svih petnaest slučajeva odabrano je zbog određene dijagnostičke osobine: mikrocitoza zbog nedostatka željeza koju treba jasno razlikovati od osobine beta-talasemije s identičnim prosječnim volumenom eritrocita, prezentacija Gilbertove bolesti u kojoj je jedina abnormalnost izolovana indirektna hiperbilirubinemija i panel za skrining s petnaest parametara u kojem se svaki analit nalazi unutar svog referentnog raspona. Rubrika nagrađuje motore koji svaki slučaj čitaju prema njegovim vlastitim karakteristikama, a kažnjava motore koji posegnu za samouvjerenom dijagnozom tamo gdje takva dijagnoza nije opravdana.
Kao Thomas Klein, dr. med., odabrao sam panel slučajeva jer su to obrasci koje laboratorijsko-medicinski asistenti najčešće pogrešno razumiju. Skup način neuspjeha nije "propustiti rijetku bolest" — nego izmišljati rutinsku patologiju kod pacijenata koji je nemaju. Naš Medicinska validacija hub opisuje širi okvir; ova stranica opisuje početni proof-of-concept V11 i V11 Drugo ažuriranje koje ga je skaliralo na 100.000 sintetičkih slučajeva izvedenih iz sintetičkog skupa slučajeva koji obuhvata 127 oznaka zemalja — koristeći istu rubriku bodovanja, byte-identičnu, bez dopuštenog naknadnog podešavanja (post-hoc).
Najnovije referentno pokretanje — V11 Drugo ažuriranje (26. april 2026.)
Referentno pokretanje V11 Drugog ažuriranja od 26. aprila 2026. proizvelo je kompozitni rezultat od 99.80% na istoj unaprijed registriranoj rubrici koja je korištena u V11 početnom izdanju, procijenjeno na 100.000 sintetičkih slučajeva izvedenih iz Kantesti sintetičkog skupa slučajeva i obuhvatajući 127 oznaka zemalja i 75+ jezike. Svaki slučaj je završen na primarnom putu motora; aktivacije zastavice hiperdijagnostičke „trap-case“ hiperdijagnoze ostale su na 0 / 87,412. Originalno V11 pokretanje od 23. aprila 2026. obuhvatilo je 15 ručno kuriranih slučajeva (kompozit 99.12%) i potvrdilo rubriku; Drugo ažuriranje zadržava tu rubriku bajt-identičnom i proširuje evaluaciju na kohortu na nivou populacije.
Kompozitna formula kombinuje tri komponente: strukturna usklađenost sa sedam obaveznih sekcija izvještaja i šesnaest obaveznih podsekcija, tačnost sadržaja mjerena kao prepoznavanje ključnih riječi plus opoziv iz sistema bodovanja plus provjera valjanosti na osnovu raspodjele vjerovatnoća, i kašnjenje odgovora u odnosu na cilj usluge na primarnom putu. Tačna razrada prikazana je u formuli rubrike ispod — nijedna od ovih težina ili podrubrika nije mijenjana za Drugo ažuriranje.
Preostalih 0,20 procentnih poena „headroom“-a razlaže se gotovo u cijelosti na klinički podrezultat — mali dio slučajeva (pretežno u Hepatologiji i Reumatologiji) imao je jednu očekivanu ključnu riječ sistema bodovanja odsutnu iz interpretacije motora, iako je dijagnostički sadržaj bio ispravan. Nijedan slučaj u kohorti od 100.000 slučajeva V11 Drugog ažuriranja nije promašio samu dijagnozu. Latencija se poboljšala s prosjeka od 20,17 s u V11 početnom izdanju na 13,26 s u Drugom ažuriranju, što odražava optimizacije proizvodnog motora između ta dva pokretanja; rubrika, kod za bodovanje i API endpoint su nepromijenjeni.
Kompozitni rezultati po oznaci kretali su se od 0.9971 do 0.9985 među 30 najzastupljenijih oznaka zemalja. Dugačak rep od 97 dodatnih oznaka (≈7.300 slučajeva ukupno) nije pokazao nikakvu sistematsku degradaciju. Najčešće oznake prema broju slučajeva bile su Sjedinjene Američke Države (10.500), Brazil (9.500), Španija (9.000), Italija (8.000), Njemačka (7.800), Francuska (7.400), Portugal (5.800), Türkiye (3.400), Ujedinjeno Kraljevstvo (2.900) i Meksiko (2.500).
Od 15 slučajeva do 100.000: evolucija kohorte kroz 127 oznaka zemalja
Originalni V11 panel slučajeva obuhvatao je sedam specijalnosti — hematologiju, endokrinologiju, metaboličku medicinu, hepatologiju, nefrologiju, kardiologiju, reumatologiju — plus dva posvećena slučaja zamke za hiperdijagnozu, pri čemu je svaki slučaj sintetički generiran panel krvnih testova. V11 Drugo ažuriranje proširuje evaluaciju na 100.000 sintetičkih slučajeva kroz 127 oznaka zemalja, raspoređenih u osam specijalnosti (originalnih sedam plus namjenska interna-medicinska grupa koja apsorbuje podskup „trap“). Ista rubrika za bodovanje primjenjuje se bajt-identično u oba pokretanja.
Budući da su svi slučajevi sintetički generirani, ne postoje stvarni identifikatori za uklanjanje i ne uključuju se lični podaci. Svaki sintetički slučaj nosi interni kod slučaja za benchmark (BT-NNN-LABEL u početnom skupu V11, stabilan case_uid u Drugom ažuriranju). Nigdje u objavljenom harnessu, tehničkom izvještaju ili objavljenim skupovima podataka ne pojavljuju se lični podaci.
V11 početnim izdanjem — 15 ručno kuriranih slučajeva
Originalni V11 panel slučajeva ručno je odabrao dr. Thomas Klein kako bi se ispitali dijagnostički obrasci koje asistenti u laboratorijskoj medicini najčešće pogrešno tumače. Svaki od petnaest slučajeva odabran je za određeno dijagnostičko svojstvo, navedeno u nastavku.
Zašto baš ova raspodjela
Hematologija dobija tri slučaja jer su mikrocitne diferencijale i makrocitne diferencijale najčešće “zamke” visokog obima u realnoj laboratorijskoj praksi. Endokrinologija dobija tri slučaja jer se prezentacije Hashimotovog tireoiditisa, PCOS-a i nedostatka vitamina D razlikuju po dijagnostičkim oblicima (vođeno autoantitijelima, vođeno omjerima hormona, vođeno jednim markerom). Specijalnosti s jednim slučajem i dalje su značajne jer svaka od CKD-a, rizika za ASCVD i SLE-a ima svoj sistem bodovanja koji motor treba da pozove (KDIGO stadijum, ASCVD 10-godišnji rizik, te 2019 EULAR/ACR SLE kriterije, redom).
V11 Drugo ažuriranje — 100.000 sintetičkih slučajeva kroz 127 oznaka zemalja
Drugo ažuriranje zamjenjuje originalni V11 hardkodirani Python literal od 15 slučajeva većim, programski generiranim sintetičkim skupom slučajeva. Skup slučajeva učitava se na početku svakog izvođenja, a konfiguracija se bilježi radi transparentnosti. Raspodjela kohorte po području sadržaja prikazana je ispod.
Sintetička raspodjela oznaka zemalja — top 10 oznaka
100.000 sintetičkih slučajeva nosi 127 oznaka zemalja (ISO 3166-1 alpha-2) kako bi se ispitalo rukovanje lokalitetom. Dodjela oznaka: Evropa 57.7%, Amerike 25.4%, Azija-Pacifik 6.2%, imenovane oznake Bliski istok/Afrika 3.4% i dugi rep od 97 dodatnih oznaka približno 7.3% ukupno. Deset najčešćih oznaka prema broju slučajeva su Sjedinjene Američke Države (10.500), Brazil (9.500), Španija (9.000), Italija (8.000), Njemačka (7.800), Francuska (7.400), Portugal (5.800), Türkiye (3.400), Ujedinjeno Kraljevstvo (2.900) i Meksiko (2.500). Kompozitni rezultati po oznaci kretali su se od 0.9971 do 0.9985. Ovi brojevi oznaka svojstva su generiranih slučajeva korištenih za ispitivanje rukovanja lokalitetom — nisu stvarni korisnici i nisu stvarno geografsko pokrivanje.
Unaprijed registrisana rubrika, objašnjena
Predregistracija je jedina najvažnija metodološka odluka u ovom benchmarku. Svaka očekivana dijagnoza, svaki klinički sistem bodovanja i svaki odjeljak izvještaja bili su predani izvornom kodu prije nego što je motor pozvan. Naknadno “podešavanje” rubrike kako bi se uljepšao učinak motora stoga je nemoguće.
Tri komponente čine kompozitni rezultat. strukturna komponenta doprinosi 35 posto i mjeri da li je motor vratio sedam obaveznih odjeljaka izvještaja (zaglavlje, sažetak, ključni nalazi, diferencijala, sistemi bodovanja, preporuke, praćenje) i šesnaest obaveznih pododjeljaka unutar njih. Prisutnost odjeljaka nosi 40 posto, a prisutnost pododjeljaka 60 posto unutar strukturnog izračuna.
The klinička komponenta doprinosi 55 posto i kombinuje tri stvari: prisjećanje dijagnoze po ključnim riječima (70 posto kliničkog podrezultata), prisjećanje sistema bodovanja (20 posto — da li motor izračunava Mentzer, FIB-4, HOMA-IR, ASCVD rizik, KDIGO stadijum, EULAR/ACR kriterije gdje je relevantno) i provjeru valjanosti zbroja vjerovatnoća (10 posto — diferencijalne vjerovatnoće trebaju da se zbroje u intervalu [90, 110]). Za slučajeve “zamke” oduzima se eksplicitna penalizacija za hiperdijagnozu do 0.30, izračunata kao 0.10 po izmišljenoj zastavici patologije, ograničena na tri zastavice.
The komponenta latencije doprinosi 10 posto. Odgovor ispod 20 sekundi dobija punih 0.10, odgovor ispod 40 sekundi dobija 0.05, a sve sporije dobija nula. Cilj od 20 sekundi odražava primarni cilj na nivou usluge proizvodne usluge za “primary-path”; plafon od 40 sekundi odražava budžet za “fallback” u Fazi 2 za teške pozive motora.
Šta sprječava predregistracija
Prvostepeni benchmarkovi su poznati po tome da napuhuju vlastite brojke kroz naknadno podešavanje rubrike. Obrazac je gotovo uvijek isti: tim pokrene motor, vidi gdje podbacuje, a zatim tiho prilagodi rubriku tako da područja koja podbacuju manje “broje”. Predavanjem rubrike izvornom kodu prije prvog poziva motora i objavljivanjem okvira pod MIT licencom, ta prilagodba postaje vidljiva u sistemu kontrole verzija. Svatko može klonirati repozitorij, provjeriti datume autora rubrike i potvrditi da rezultati motora nisu korišteni za oblikovanje bodovanja.
Slučajevi zamke hiperdijagnoze — zašto je pretjerano pozivanje (over-calling) pravi način neuspjeha
Agresivno “prezivanje” patologije na normalnim pregledima je dokumentovan način neuspjeha kod medicinskih asistenata usmjerenih na potrošače. Njegovi nizvodni troškovi uključuju nepotrebnu obradu, anksioznost pacijenta i iatrogeni dijagnostički postupak. Dva slučaja “zamke” u ovom benchmarku dizajnirana su da učine taj način neuspjeha vidljivim i mjerljivim.
🟡 Zamka 1 — BT-014-GILBERT
Prezentacija. Muškarac od 24 godine s ukupnim bilirubinom 2.4 mg/dL. Direktna frakcija je normalna, transaminaze i alkalna fosfataza su unutar svojih referentnih raspona, retikulociti su bez osobitosti, a haptoglobin i LDH isključuju hemolizu.
Ispravna interpretacija. Gilbertova bolest — benigna polimorfija UGT1A1. Interpretacija ne smije pozivati hepatitis, cirozu, hemolitičku anemiju ili bilijarnu opstrukciju.
Rezultat v11. Kompozitni 1.000. Nijedna od šest praćenih zastavica prekomjerne dijagnoze nije se pojavila kao aktivna dijagnoza.
🟡 Zamka 2 — BT-015-ZDRAV
Prezentacija. Žena od 35 godina s rutinskim panelom skrininga od petnaest parametara. Svaki analit udobno se nalazi unutar svog referentnog raspona.
Ispravna interpretacija. Uspokojavanje i održavanje životnog stila. Tumačenje ne bi trebalo da izmišlja graničnu patologiju kako bi zvučalo klinički korisno.
Rezultat v11. Kompozit 1.000. Nijedna od sedam praćenih zastavica prekomjerne dijagnostike — dijabetes, anemija, hipotireoza, dislipidemija, hepatitis, bubrežna bolest, manjak — nije se pojavila kao aktivna dijagnoza.
Na oba „trapa“ provjereno je trinaest zastavica hiperdijagnostike. Nijedna nije aktivirana. Ovo je rezultat koji je najvažniji za svakog kliničara koji razmatra korištenje AI motora kao alata za trijažu ili prije konsultacije: sistem nije izmišljao bolest tamo gdje je nije bilo.
Mentzerov indeks: razdvajanje nedostatka željeza od osobina talasemije
Drugi nalaz visoke vrijednosti odnosi se na uparivanje slučaja BT-001 (anemija zbog nedostatka željeza) sa slučajem BT-007 (beta-talasemija minor). Oba se javljaju s mikrocitozom i dobro su poznata prepreka za naivne klasifikatore. Mentzerov indeks, izračunat kao MCV podijeljen s brojem RBC, prelazi 13 kod nedostatka željeza i pada ispod 13 kod osobina talasemije.
U BT-001, pacijentica je imala 34 godine, hemoglobin 10,4 g/dL, MCV 72,4 fL, RBC 4,1 × 10¹²/L, feritin 6 ng/mL i povišen TIBC. Mentzerov indeks od približno 17,7 podržava apsolutni nedostatak željeza. U BT-007, pacijent je imao 28 godina, mikrocitozu (MCV 65,8 fL), ali visok broj RBC 6,2, normalan RDW, normalan feritin i HbA2 od 5,6 posto. Mentzerov indeks od približno 10,6 ukazuje na osobine talasemije, a povišen HbA2 potvrđuje beta-talasemiju minor.
Oba slučaja su postigla 1.000. Motor je eksplicitno koristio Mentzerov indeks u obje interpretacije i vratio tačnu dijagnozu u svakom slučaju. Ovo je jedini najviše klinički umirujući rezultat u cijelom benchmarku, jer pogrešno klasificiranje osobina talasemije kao anemije zbog nedostatka željeza dovodi do neadekvatne suplementacije željezom i propuštenih prilika za porodični skrining, a pogrešno klasificiranje anemije zbog nedostatka željeza kao talasemije odgađa jednostavnu zamjensku terapiju. Naše vodič za raspon feritina objašnjava širi diferencijalni kontekst.
Rezultati po slučaju iz V11 početnog referentnog izvođenja (23. april 2026)
Originalno V11 referentno izvođenje na kohorti od 15 slučajeva za proof-of-concept služi kao metodološka osnova za Second Update: svaki detalj po slučaju ispod pokazuje kako rubrika obrađuje stvarni odgovor motora. Dvanaest od petnaest slučajeva postiglo je maksimalni kompozitni rezultat od 1.000 na primarnoj putanji; tri slučaja su obrađena putem Phase 2 fallback-a, izgubivši bonus za latenciju od 0.05 uz očuvanje cjelokupnog kliničkog i strukturnog sadržaja. Jedan slučaj je nedostajao u jednoj obaveznoj podsekciji; jedan je vratio marginalno smanjenu sumu distribucije vjerovatnoća.
Slučaj PCOS-a (BT-008) izgubio je jednu obaveznu podsekciju u strukturi odgovora — petnaest od šesnaest umjesto šesnaest od šesnaest — što je smanjilo strukturni rezultat sa 1,000 na 0,963. SLE slučaj (BT-011) vratio je marginalno smanjeni zbir vjerojatnosno-raspodjelnih vrijednosti koji je spustio klinički rezultat na 0,965, uz očuvanje svake dijagnostičke ključne riječi i sistema bodovanja. Nijedan od ta dva slučaja ispod savršenog nije propustio tačnu dijagnozu.
V11 Second Update agregat — 100,000 slučajeva
Na razini populacije, pojedinačni redovi slučajeva nisu čitljivi ljudima, pa Drugo ažuriranje izvještava agregirane metrike umjesto tablice s 100.000 redova. Glavni agregat prikazan je ispod; razrade po specijalnosti i po oznaci zemlje objavljene su u tehničkom izvještaju i u Figshare depozitu. Stratificirani slučajni uzorak od n = 201 sirovih odgovora motora (determinističko sjeme 20260426) objavljuje se u GitHub results/ direktoriju za pregled.
Šta nam ne govori naslovni rezultat
Kompozitni rezultat od 99.80 posto prema ovoj posebnoj unaprijed registriranoj rubriki, na sintetičkoj kohorti od 100.000 slučajeva koja obuhvata 127 oznaka zemalja, predstavlja performanse gotovo do plafona — ali zaslužuje pažljivo uokvirivanje. Rezultat opisuje ponašanje motora u odnosu na rubriku kojoj smo se obavezali u izvornom kodu u V11; to nije univerzalna tvrdnja o ispravnosti motora na svakom panelu krvnih testova koji postoji u stvarnom svijetu.
Rezultat kaže da je motor ispravno obradio dijagnostičke obrasce odabrane za ovu evaluaciju na kohorti na nivou populacije, metodologijom koja je objavljena i može se reproducirati. Ne kaže da je motor ispravan na svakoj ploči krvnih testova koja postoji u stvarnom svijetu. Ne kaže da motor treba zamijeniti kliničku procjenu. I ne kaže da motor nadmašuje alternativne sisteme umjetne inteligencije — komparativne analize s drugim motorima namjerno su bile van opsega ovog izvještaja.
Ono što rezultat uspostavlja jeste osnovna linija. Kada su rubrika i harness javni, buduće verzije motora mogu se evaluirati prema istoj rubrici — primijenjenoj na početnih 15 slučajeva V11, kohortu od 100.000 slučajeva iz Drugog ažuriranja ili bilo kakvo kasnije proširenje — a razlika između objavljenog rezultata i bilo kojeg kasnijeg izvođenja mjerljiva je sama po sebi. To je vrijednost unaprijed registracije: ona pretvara tvrdnje o performansama u provjerljive tvrdnje.
Kako ponoviti ovaj benchmark za 10 minuta
Za reprodukciju potrebna je samo kombinacija API vjerodajnica Kantesti i Python 3.10 ili novije okruženje s requests i reportlab instaliranim bibliotekama. Cjelokupno okruženje je jedan samostalni Python modul objavljen pod MIT licencom.
Četiri koraka za novo izvođenje
Jedan. Klonirajte repozitorij: git clone https://github.com/emirhanai/kantesti-blood-test-benchmark.git. Dva. Instalirajte zavisnosti pomoću pip install -r requirements.txt (Drugo ažuriranje dodaje mysql-connector-python ≥ 8.0 za SQL case loader). Tri. Postavite KANTESTI_USERNAME i KANTESTI_PASSWORD kao varijable okruženja za API motora. Za SQL case loader iz Drugog ažuriranja, također postavite KANTESTI_DB_HOST, KANTESTI_DB_PORT, KANTESTI_DB_NAME, KANTESTI_DB_USER, i KANTESTI_DB_PASSWORD — loader se povezuje preko uloge samo za čitanje (bench_reader) koja nema privilegije za identifikaciju tabela. Četiri. Pokrenite python benchmark_bloodtest.py --limit 100000 za kompletno izvođenje Second-Update, ili python benchmark_bloodtest.py --limit 1000 za brzu iteraciju. Rezultati se pohranjuju u ./benchmark_results/: CSV scorecard s kolonama po zemlji-oznaci i po specijalnosti, JSON agregat, stratifikovano-slučajni uzorak sirovih odgovora i Markdown izvještaj.
Referentna izvođenja od 23. aprila 2026. (V11 početno, 15 slučajeva) i 26. aprila 2026. (V11 Second Update, 100,000 slučajeva) čuvaju se u results/ direktoriju repozitorija. Svježe izvođenje će proizvesti novi scorecard sa vremenskom oznakom, ostavljajući referentna izvođenja netaknutim. Ako vaše izvođenje daje značajno drugačiji rezultat, molimo otvorite GitHub issue sa vremenskom oznakom izvođenja i verzijom engine-a vraćenom u metapodacima odgovora.
Ograničenja i budući rad
Čak i pri 100.000 slučajeva kroz 127 oznaka za zemlje, četiri ograničenja zaslužuju eksplicitno priznavanje: nedovoljno uzorkovanje oznaka dugog repa, evaluacija u jednom pokušaju, opseg jedne mašine i porijeklo podataka iz jednog izvora. Svako od ovih se rješava u aktivnom naknadnom radu.
Pokrivenost oznaka dugog repa. Drugo ažuriranje obuhvata 127 oznaka za zemlje, ali distribucija je neuravnotežena — top 10 oznaka čini ≈66.4% slučajeva, a dugi rep od 97 dodatnih oznaka zajedno doprinosi ≈7.3% (otprilike 7.300 slučajeva ukupno, ~75 slučajeva po oznaci u prosjeku). Stoga su kompoziti po oznaci u ovom dugom repu bučniji nego što to sugerišu brojke s naslovnice. Budući runs će ponovo uravnotežiti dodjelu oznaka kako bi se učvrstile procjene po oznaci.
Evaluacija u jednom pokušaju. Svaki slučaj u kohorti evaluiran je jednom. Veliki jezički modeli pokazuju ne-trivijalnu varijansu izlaza čak i pri niskoj temperaturi uzorkovanja, pa je protokol s više izvođenja sa pet evaluacija po slučaju i prijavljenom varijansom prirodan sljedeći korak — posebno na podskupu trap-case, gdje je konzistentnost pod “jitterom” uzorkovanja dio sigurnosne tvrdnje.
Obuhvat jednog motora. Ovaj izvještaj opisuje jedan engine. Poredbene analize s alternativnim AI sistemima nisu u okviru ovdje; možemo ih razmotriti kao zasebnu nezavisnu studiju s odgovarajućom metodologijom, koristeći isti MIT-licencirani harness.
Sintetički podaci. 100.000 slučajeva je sintetički generisano, a ne sintetički slučajevi, i rezultati se ne prenose na performanse u stvarnoj kliničkoj praksi. Evaluacija na stvarnim, pristankom odobrenim, eksterno pribavljenim podacima zahtijevala bi odgovarajući etički nadzor i van je okvira ovog sintetičkog benchmarka.
Osim ova četiri, najuticajnije planirano proširenje je višejzična parnost po jurisdikciji. Kantesti AI Engine opslužuje korisnike na 75+ jezika, a izvođenje jezički stratifikovanih podkohorti Second-Update (turski, njemački, španski, francuski, italijanski, portugalski, arapski, mandarinski) kvantifikovaće kvalitet izlaza na jezicima koje engine podržava. Svaka jezički stratifikovana analiza biće objavljena sa vlastitim DOI i harness granom.