Proč tento benchmark existuje a co testuje
AI asistované rozbory krevních výsledků se stále častěji používají v spotřebitelských i klinických pracovních postupech, avšak reprodukovatelné hodnoticí rámce přizpůsobené laboratorní medicíně zůstávají neobvyklé. Otázky, které v tomto kontextu nejvíce záleží, nejsou ty, na které se zaměřují obecné benchmarky pro zodpovídání zdravotnických otázek: dokáže engine oddělit anémii z nedostatku železa od talasémie při shodném středním objemu erytrocytů, nepře-diagnostikuje Gilbertův syndrom jako hepatitidu a nevytváří patologii v plně normálním screeningovém panelu?
Jednotlivý panel krevních testů obvykle obsahuje dostatek signálu pro několik konkurenčních interpretací a úkolem interpretujícího klinika je tyto interpretace navzájem zvážit, nikoli vyhledat odpověď v učebnici. Stroj, který si dobře vede v případech z učebnic, může přesto selhat v těch případech, na kterých nejvíc záleží: v úskalích diferenciální diagnostiky, v neškodných variantách, které při izolovaném pohledu vypadají znepokojivě, a v plně normálních panelech, které svádějí sebevědomé asistenty k „vyrábění“ patologie.
Tento benchmark byl postaven přesně na těchto typech selhání. Každý z patnácti případů byl vybrán pro konkrétní diagnostickou vlastnost: mikrocystóza z nedostatku železa, kterou je nutné udržet odděleně od znaku beta-talasémie se shodným průměrným objemem krvinek, prezentace Gilbertova syndromu, kde je jedinou odchylkou izolovaná nepřímá hyperbilirubinémie, a screeningový panel o patnácti parametrech, v němž se každá analyta nachází v rámci referenčního rozmezí. Hodnoticí kritérium odměňuje motory, které čtou každý případ podle jeho vlastních podmínek, a penalizuje motory, které sáhnou po sebevědomé diagnóze, pokud taková diagnóza není opodstatněná.
Jako Thomas Klein, MD, jsem vybral panel případů, protože to jsou vzorce, které asistenti v laboratorní medicíně nejčastěji chybují. Drahé selhání není "přehlédnout vzácné onemocnění" — je to vymýšlení běžné patologie u pacientů, kteří ji nemají. Náš Lékařské ověřování hub popisuje širší rámec; tato stránka popisuje počáteční proof-of-concept V11 a V11 druhou aktualizaci, která jej škálovala na 100 000 syntetických případů čerpaných ze syntetické sady případů pokrývající 127 štítků zemí — pomocí stejného hodnoticího schématu, byte-identicky, bez povoleného dodatečného dolaďování (post-hoc).
Nejnovější referenční spuštění — V11 Second Update (26. dubna 2026)
Referenční spuštění V11 Second Update ze dne 26. dubna 2026 vygenerovalo kompozitní skóre 99.80% na stejné předem registrované rubrice použité v prvním vydání V11, vyhodnocené na 100 000 syntetických případů čerpaných ze syntetické sady případů Kantesti a pokrývajících 127 štítků zemí a jazyky 75+. Každý případ byl dokončen na primární cestě enginu; aktivace příznaku hyperdiagnostické „trap-case“ zůstaly na 0 / 87,412. Původní spuštění V11 ze dne 23. dubna 2026 pokrývalo 15 ručně kurátorovaných případů (kompozitní 99.12%) a ověřilo rubriku; Second Update ponechává tuto rubriku bajtově identickou a rozšiřuje vyhodnocení na kohortu v měřítku populace.
Kompozitní vzorec kombinuje tři složky: strukturální shoda se sedmi povinnými oddíly hlášení a šestnácti povinnými pododdíly, přesnost obsahu měřená jako součet zapamatování klíčových slov, zapamatování v rámci bodovacího systému a kontrola validity pravděpodobnostního rozdělení, a latence odpovědi vůči primárnímu cíli úrovně služby pro primární cestu. Přesné rozložení je uvedeno ve vzorci rubriky níže — žádné z těchto vah ani dílčích rubrik nebyly pro Second Update změněny.
Zbývajících 0.20 procentního bodu rezervy se rozkládá téměř celé do klinického dílčího skóre — malá část případů (převážně v hepatologii a revmatologii) měla jedno očekávané klíčové slovo systému skórování chybějící v interpretaci enginu, přestože diagnostický obsah byl správný. Žádný případ v kohortě 100 000 případů Second Update nezmeškal samotnou diagnózu. Latence se zlepšila z průměru 20.17 s v prvním vydání V11 na 13.26 s v Second Update, což odráží optimalizace produkčního enginu mezi oběma spuštěními; rubrika, kód pro skórování a koncový bod API se nezměnily.
Kompozitní skóre podle štítku se pohybovala od 0,9971 do 0,9985 napříč 30 nejčastěji zastoupenými štítky zemí. Dlouhý ocas 97 dalších štítků (≈7 300 případů dohromady) nevykázal žádnou systematickou degradaci. Nejčastější štítky podle počtu případů byly Spojené státy (10 500), Brazílie (9 500), Španělsko (9 000), Itálie (8 000), Německo (7 800), Francie (7 400), Portugalsko (5 800), Türkiye (3 400), Spojené království (2 900) a Mexiko (2 500).
Od 15 případů k 100 000: vývoj kohorty napříč 127 štítky zemí
Původní panel případů V11 pokrýval sedm specializací — hematologii, endokrinologii, metabolickou medicínu, hepatologii, nefrologii, kardiologii, revmatologii — plus dva vyhrazené případy hyperdiagnostické pasti, přičemž každý případ byl synteticky vygenerovaný panel krevních testů. Druhá aktualizace V11 rozšiřuje hodnocení na 100 000 syntetických případů napříč 127 štítky zemí, rozdělených do osmi specializací (původních sedm plus vyhrazená interně-medicínská kategorie, která absorbuje podmnožinu trap-case). Stejná rubrika skórování se aplikuje bajtově identicky v obou spuštěních.
Protože jsou všechny případy synteticky vygenerované, neexistují žádné reálné identifikátory k odstranění a nejsou zapojena žádná osobní data. Každý syntetický případ nese interní kód případu benchmarku (BT-NNN-LABEL v počáteční sadě V11, stabilní case_uid ve Druhé aktualizaci). Žádná osobní data se nikde nevyskytují v publikovaném prostředí, technické zprávě ani v uvolněných datových sadách.
původním vydáním V11 — 15 ručně kurátorovaných případů
Původní panel případů V11 byl ručně kurátorsky vybrán doktorem Thomasem Kleinem tak, aby procvičoval diagnostické vzorce, které laboratorní medicínští asistenti nejčastěji chybují. Každý z patnácti případů byl vybrán pro konkrétní diagnostickou vlastnost, uvedenou níže.
Proč právě toto rozložení
Hematologie získá tři případy, protože mikrocytární diferenciály a makrocytární diferenciály jsou v reálné laboratorní praxi nejčastější „pastí“ s největším objemem. Endokrinologie získá tři případy, protože projevy Hashimotovy choroby, PCOS a nedostatku vitamínu D mají různé diagnostické „tvary“ (řízené autoprotilátkami, řízené poměry hormonů, řízené jedním markerem). Jednopřípadové specializace jsou však stále smysluplné, protože každý z CKD, rizika ASCVD a SLE má vlastní bodovací systém, který by měl engine vyvolat (KDIGO staging, ASCVD 10letové riziko, resp. kritéria SLE 2019 EULAR/ACR).
V11 druhá aktualizace — 100 000 syntetických případů napříč 127 štítky zemí
Druhá aktualizace nahrazuje původní V11 hard-coded 15případový Python literál větší sadou syntetických případů generovanou programově. Sada případů se načítá na začátku každého běhu a konfigurace se loguje pro transparentnost. Rozložení kohorty podle tematické oblasti je uvedeno níže.
Syntetické rozložení štítků zemí — top 10 štítků
100 000 syntetických případů nese 127 štítků zemí (ISO 3166-1 alpha-2) pro otestování práce s lokalitou. Přiřazení štítků: Evropa 57,7%, Americké kontinenty 25,4%, Asie a Tichomoří 6,2%, pojmenované štítky Blízký východ/Afrika 3,4% a dlouhý ocas 97 dalších štítků dohromady zhruba 7,3%. Deset nejčastějších štítků podle počtu případů jsou Spojené státy (10 500), Brazílie (9 500), Španělsko (9 000), Itálie (8 000), Německo (7 800), Francie (7 400), Portugalsko (5 800), Türkiye (3 400), Spojené království (2 900) a Mexiko (2 500). Kompozitní skóre podle štítku se pohybovala od 0,9971 do 0,9985. Tyto počty štítků jsou vlastnosti vygenerovaných případů používaných k otestování práce s lokalitou — nejsou to reální uživatelé ani reálné pokrytí geografických oblastí.
Předem registrovaná hodnoticí kritéria — vysvětleno
Předregistrace je v tomto benchmarku jediná nejdůležitější metodologická volba. Každá očekávaná diagnóza, každý klinický bodovací systém a každá část reportu byly zavázány ke zdrojovému kódu ještě předtím, než byl engine vyvolán. Dodatečné (post-hoc) dolaďování rubriky tak, aby lichotila enginu, je proto nemožné.
Složené skóre tvoří tři komponenty. strukturální komponenta přispívá 35 procenty a měří, zda engine vrátil sedm povinných částí reportu (hlavička, shrnutí, klíčová zjištění, diferenciál, bodovací systémy, doporučení, follow-up) a šestnáct povinných podsekcí v rámci nich. Přítomnost sekce váží 40 procent a přítomnost podsekce váží 60 procent v rámci strukturálního výpočtu.
The klinická komponenta přispívá 55 procenty a skládá se ze tří věcí: vybavení diagnóz podle klíčových slov (70 procent klinického dílčího skóre), vybavení bodovacích systémů (20 procent — zda engine vypočítá Mentzer, FIB-4, HOMA-IR, riziko ASCVD, staging KDIGO, kritéria EULAR/ACR, je-li relevantní), a kontrolu validity součtu pravděpodobností (10 procent — diferenciální pravděpodobnosti by se měly sčítat v intervalu [90, 110]). U „trap“ případů se odečítá explicitní penalizace za hyperdiagnózu až 0.30, vypočtená jako 0.10 za každý zfalšovaný příznak patologie, s maximem tří příznaků.
The komponenta latence přispívá 10 procenty. Odpověď do 20 sekund získá plných 0.10, odpověď do 40 sekund získá 0.05 a cokoli pomalejšího získá nulu. Cílových 20 sekund odráží produkční primární cíl úrovně služby pro path; strop 40 sekund odráží rozpočtovou rezervu pro fallback ve Fázi 2 při náročných vyvoláních enginu.
Co předregistrace brání
První-stranové benchmarky jsou proslulé tím, že nafukují vlastní čísla pomocí post-hoc dolaďování rubriky. Vzor je téměř vždy stejný: tým spustí engine, uvidí, kde podává horší výkon, a pak potichu upraví rubriku tak, aby oblasti s horším výkonem „počítaly méně“. Tím, že se rubrika zaváže ke zdrojovému kódu před prvním voláním enginu a že se testovací prostředí zveřejní pod licencí MIT, stane se tato úprava viditelnou v systému verzí. Každý si může repozitář naklonovat, zkontrolovat data autorů rubriky a ověřit, že výsledky enginu nebyly použity k formování skórování.
Pasti hyperdiagnózy — proč je skutečným selháním „přehnané volání“
Agresivní přehnané označování patologie na normálních obrazovkách je zdokumentovaný režim selhání u spotřebitelských zdravotnických asistentů. Jeho následné náklady zahrnují zbytečné vyšetřování, úzkost pacienta a iatrogenní rozpracování. Dva „trap“ případy v tomto benchmarku jsou navrženy tak, aby tento režim selhání byl viditelný a ohodnotitelný.
🟡 Trap 1 — BT-014-GILBERT
Prezentace. Muž, 24 let, s celkovým bilirubinem 2.4 mg/dL. Přímá frakce je v normě, transaminázy a alkalická fosfatáza jsou v rámci referenčních rozmezí, retikulocyty jsou bez pozoruhodností a haptoglobin a LDH vylučují hemolýzu.
Správná interpretace. Gilbertův syndrom — benigní polymorfismus UGT1A1. Interpretace by neměla vyvolávat hepatitidu, cirhózu, hemolytickou anémii ani biliární obstrukci.
Výsledek V11. Kompozitní 1.000. Žádný z šesti sledovaných příznaků přehnané diagnózy se neobjevil jako aktivní diagnóza.
🟡 Trap 2 — BT-015-HEALTHY
Prezentace. Žena, 35 let, s patnáctiparametrovým rutinním screeningovým panelem. Každý analyt pohodlně leží v rámci svého referenčního rozmezí.
Správná interpretace. Ujištění a udržování životního stylu. Interpretace by neměla uměle vytvářet hraniční patologii, aby působila klinicky užitečně.
Výsledek V11. Kompozit 1.000. Žádná ze sedmi sledovaných vlajek nadměrné diagnostiky — diabetes, anémie, hypotyreóza, dyslipidémie, hepatitida, onemocnění ledvin, nedostatek — se neobjevila jako aktivní diagnóza.
Ve obou „trapech“ bylo zkontrolováno třináct sledovaných vlajek hyperdiagnostiky. Neaktivovala se žádná. Toto je výsledek, na kterém nejvíc záleží pro každého klinika, který zvažuje použití AI jako triážního nebo předkonzultačního nástroje: systém nevymyslel nemoc tam, kde žádná nebyla.
Mentzerův index: jak odlišit nedostatek železa od znaku thalasémie
Druhým vysoce hodnotným zjištěním je spárování případu BT-001 (anémie z nedostatku železa) s případem BT-007 (beta-talasémie minor). Oba se projevují mikrocytózou a jde o dobře známý problém pro naivní klasifikátory. Mentzerův index, vypočtený jako MCV dělené počtem RBC, je u nedostatku železa vyšší než 13 a u talasémie je nižší než 13.
V BT-001 byla pacientka 34letá žena s hemoglobinem 10,4 g/dl, MCV 72,4 fL, RBC 4,1 × 10¹²/l, feritinem 6 ng/ml a zvýšeným TIBC. Mentzerův index přibližně 17,7 podporuje absolutní nedostatek železa. V BT-007 byl pacient 28letý muž s mikrocytózou (MCV 65,8 fL), ale s vysokým počtem RBC 6,2, normálním RDW, normálním feritinem a HbA2 5,6 procenta. Mentzerův index přibližně 10,6 ukazuje na talasémii minor a zvýšený HbA2 potvrzuje beta-talasémii minor.
Oba případy dosáhly skóre 1.000. Stroj použil Mentzerův index výslovně v obou interpretacích a v každém případě vrátil správnou diagnózu. Toto je jediné klinicky nejvíc uklidňující zjištění v celém benchmarku, protože chybné zařazení talasémie minor jako anémie z nedostatku železa vede k nevhodnému podávání železa a k přehlédnutí možností rodinného screeningu, zatímco chybné zařazení anémie z nedostatku železa jako talasémie oddaluje jednoduchou substituční léčbu. Naše rozmezí pro feritin vysvětluje širší diferenciální kontext.
Výsledky po jednotlivých případech z V11 počáteční referenčního běhu (23. dubna 2026)
Původní V11 referenční běh na 15případové proof-of-concept kohortě slouží jako metodologický základ pro Second Update: každý detail po jednotlivých případech níže ukazuje, jak rubrika zpracuje reálnou odpověď enginu. Dvanáct z patnácti případů dosáhlo stropního složeného skóre 1.000 na primární cestě; tři případy byly obslouženy přes fallback Phase 2, čímž se ztratila bonusová latence 0.05, ale zachoval se veškerý klinický a strukturální obsah. Jeden případ postrádal jedinou povinnou podsekci; jeden vrátil jen mírně snížený součet pravděpodobnostních rozdělení.
Případ PCOS (BT-008) ztratil v odpovědní struktuře jednu povinnou podsekci — patnáct ze šestnácti místo šestnácti ze šestnácti — což snížilo strukturální skóre z 1,000 na 0,963. Případ SLE (BT-011) vrátil jen mírně snížený součet pravděpodobnostních rozdělení, který snížil klinické skóre na 0,965, přičemž zachoval každé diagnostické klíčové slovo a systém bodování. Ani jeden z těchto ne zcela perfektních případů nezmeškal správnou diagnózu.
Agregát V11 Second Update — 100,000 případů
Ve velkém měřítku populace nejsou jednotlivé řádky případů čitelné pro člověka, takže Druhá aktualizace uvádí agregované metriky místo tabulky o 100 000 řádcích. Hlavní agregát je uveden níže; rozpisy podle specializace a podle štítku země jsou publikovány v technické zprávě a v depozitáři Figshare. Stratifikovaný náhodný vzorek n = 201 surových odpovědí enginu (deterministické seed 20260426) je publikován v repozitáři GitHub results/ pro účely kontroly.
Co nám hlavní skóre neříká
Kompozitní skóre 99,80 procenta podle tohoto konkrétního předem registrovaného hodnoticího schématu, na syntetické kohortě 100 000 případů pokrývající 127 štítků zemí, představuje výkon téměř na strop — ale zaslouží si pečlivé zasazení do kontextu. Výsledek popisuje chování motoru vůči hodnoticímu schématu, ke kterému jsme se zavázali v zdrojovém kódu ve V11; nejde o univerzální tvrzení o správnosti motoru na každém existujícím panelu krevních testů v reálném světě.
Skóre říká, že engine správně zpracoval diagnostické vzorce vybrané pro toto hodnocení napříč kohortou v měřítku populace, na metodologii, která je publikovaná a reprodukovatelná. Neříká, že engine je správný na každém panelu výsledků krevních testů, který se v praxi vyskytuje. Neříká, že by engine měl nahradit klinické úsudky. A neříká, že engine překonává alternativní systémy AI — srovnávací analýzy proti jiným enginům byly záměrně mimo rozsah této zprávy.
To, co skóre skutečně stanovuje, je výchozí linie. Jakmile budou metodika a testovací prostředí veřejné, budoucí verze enginu lze hodnotit podle stejné metodiky — aplikované na V11 počátečních 15 případů, Druhou aktualizaci kohorty 100 000 případů, nebo jakékoli následné rozšíření — a rozdíl mezi publikovaným skóre a jakýmkoli následným během je sám o sobě měřitelný. To je hodnota předregistrace: převádí tvrzení o výkonu na testovatelná tvrzení.
Jak tento benchmark zopakovat za 10 minut
Reprodukce vyžaduje pouze dvojici přihlašovacích údajů Kantesti API a prostředí Python 3.10 nebo novější s requests a reportlab nainstalovanými knihovnami. Celé testovací prostředí je jeden samostatný modul Python vydaný pod licencí MIT.
Čtyři kroky pro nové spuštění
Jeden. Naklonujte repozitář: git clone https://github.com/emirhanai/kantesti-blood-test-benchmark.git. Dva. Nainstalujte závislosti pomocí pip install -r requirements.txt (Druhá aktualizace přidává mysql-connector-python ≥ 8.0 pro SQL case loader). Tři. Nastavte KANTESTI_USERNAME a KANTESTI_PASSWORD jako proměnné prostředí pro API enginu. Pro SQL case loader v Druhé aktualizaci také nastavte KANTESTI_DB_HOST, KANTESTI_DB_PORT, KANTESTI_DB_NAME, KANTESTI_DB_USERa KANTESTI_DB_PASSWORD — loader se připojuje přes roli pouze pro čtení (bench_reader) která nemá oprávnění k identifikaci tabulek. Čtyři. Spusťte python benchmark_bloodtest.py --limit 100000 pro celý běh Second-Update, nebo python benchmark_bloodtest.py --limit 1000 pro rychlou iteraci. Výstupy se ukládají do ./benchmark_results/: CSV scorecard s sloupci pro jednotlivé země/štítky a specializace, JSON agregát, stratifikovaný náhodný vzorek surových odpovědí a Markdown report.
Referenční běhy z 23. dubna 2026 (V11 initial, 15 případů) a 26. dubna 2026 (V11 Second Update, 100,000 případů) jsou zachovány v results/ adresáři repozitáře. Nový běh vygeneruje nový časově označený scorecard, přičemž referenční běhy zůstanou nedotčené. Pokud váš běh vytvoří významně odlišný výsledek, otevřete prosím issue na GitHubu s časovým razítkem běhu a verzí enginu uvedenou v metadatech odpovědi.
Omezení a další práce
I při 100 000 případech napříč 127 štítky zemí si zaslouží explicitní uznání čtyři omezení: nedostatečné vzorkování dlouhého ocasu štítků, jednorázové vyhodnocení, omezení na jeden engine a původ dat z jednoho zdroje. Každé z nich je řešeno v probíhajících navazujících pracích.
Pokrytí štítků s dlouhým ocasem. Druhá aktualizace zahrnuje 127 štítků zemí, ale rozložení je nevyvážené — prvních 10 štítků tvoří ≈66.4% případů a dlouhý ocas 97 dalších štítků dohromady přispívá ≈7.3% (zhruba 7 300 případů dohromady, ~75 případů na štítek v průměru). Kompozity na úrovni jednotlivých štítků v tomto dlouhém ocasu jsou proto hlučnější, než naznačují titulní hodnoty. Budoucí běhy znovu vyváží přiřazování štítků, aby se zpřesnily odhady pro jednotlivé štítky.
Jednorázové vyhodnocení. Každý případ v kohortě byl vyhodnocen jednou. Velké jazykové modely vykazují nezanedbatelnou variabilitu výstupu i při nízké teplotě vzorkování, takže vícenásobný protokol s pěti vyhodnoceními na případ a uvedenou variancí je přirozeným dalším krokem — zejména na podmnožině trap-case, kde je konzistence při jitteru vzorkování součástí bezpečnostního tvrzení.
Rozsah jednoho enginu. Tato zpráva popisuje jeden engine. Srovnávací analýzy proti alternativním systémům AI jsou mimo rozsah; případně je můžeme řešit jako samostatnou nezávislou studii s odpovídající metodologií, proti stejnému MIT-licencovanému harness.
Syntetická data. Těch 100 000 případů je synteticky generováno, nikoli jde o „syntetické případy“ — výsledky se nepřenášejí na výkon v reálné klinické praxi. Vyhodnocení na reálných, souhlasem podložených, externě získaných datech by vyžadovalo odpovídající etický dohled a je mimo rozsah tohoto syntetického benchmarku.
Nad rámec těchto čtyř je nejvýznamnějším plánovaným rozšířením vícejazyčná parita napříč jurisdikcemi. Kantesti AI Engine slouží uživatelům v 75+ jazycích a spuštění jazykově stratifikovaných podkohort Second-Update (turečtina, němčina, španělština, francouzština, italština, portugalština, arabština, mandarínština) kvantifikuje kvalitu výstupů napříč jazyky, které engine podporuje. Každá jazykově stratifikovaná analýza bude publikována s vlastním DOI a větví harness.