Dlaczego istnieje ten benchmark i co sprawdza
Analiza krwi AI wspomagana przez sztuczną inteligencję jest coraz częściej stosowana w procesach konsumenckich i klinicznych, jednak ramy oceny możliwe do odtworzenia, dopasowane do medycyny laboratoryjnej, pozostają rzadkością. Najważniejsze w tym kontekście pytania nie są tymi, które obejmują ogólne benchmarki do medycznego odpowiadania na pytania: czy silnik potrafi odróżnić niedobór żelaza od cechy talasemii, gdy średnia objętość krwinki jest identyczna, czy nadmiernie diagnozuje zespół Gilberta jako zapalenie wątroby oraz czy wytwarza patologię w w pełni prawidłowym panelu przesiewowym?
Pojedynczy panel badań krwi zazwyczaj zawiera na tyle sygnału, by umożliwić kilka konkurujących interpretacji, a zadaniem interpretującego lekarza jest ważyć te interpretacje względem siebie, a nie odszukiwać odpowiedź „z podręcznika”. Silnik, który dobrze radzi sobie w przypadkach podręcznikowych, może jednak zawieść w tych, które mają największe znaczenie: w pułapkach diagnostyki różnicowej, w łagodnych wariantach wyglądających alarmująco, gdy rozpatruje się je w izolacji, oraz w pełni prawidłowych panelach, które kuszą pewnych siebie asystentów do wytwarzania patologii.
Ten benchmark został zbudowany dokładnie wokół tych trybów porażki. Każdy z piętnastu przypadków wybrano ze względu na określoną właściwość diagnostyczną: mikrocytozę z niedoboru żelaza, którą trzeba odróżnić od cechy beta-talasemii o identycznej średniej objętości krwinki (MCV), prezentację zespołu Gilberta, w której jedyną nieprawidłowością jest izolowana pośrednia hiperbilirubinemia, oraz panel przesiewowy obejmujący piętnaście parametrów, w którym każdy analit mieści się w swoim zakresie referencyjnym. Kryterium premiuje silniki, które czytają każdy przypadek na jego własnych zasadach, a karze silniki, które sięgają po pewną diagnozę tam, gdzie taka diagnoza nie jest uzasadniona.
Jako Thomas Klein, MD, wybrałem ten zestaw przypadków, ponieważ to właśnie te wzorce asystenci z obszaru medycyny laboratoryjnej najczęściej interpretują błędnie. Kosztowny tryb porażki nie polega na "pominięciu rzadkiej choroby" — polega na wytwarzaniu rutynowej patologii u pacjentów, u których jej nie ma. Nasz Walidacja medyczna hub opisuje szersze ramy; ta strona opisuje jego zastosowany wynik na silniku V11.
Najnowszy uruchomiony test referencyjny — V11 (kwiecień 2026)
Kwiecień 2026: referencyjny przebieg Kantesti AI Engine V11 wygenerował wynik złożony 99.12% w ramach wstępnie zarejestrowanego rubryka z piętnastoma przypadkami. Oba przypadki z pułapką nadrozpoznania uzyskały wynik na pułapie. Indeks Mentzera zastosowano poprawnie w diagnostyce różnicowej niedobór żelaza vs talasemia.
Wzór na wynik złożony łączy trzy składowe: zgodność strukturalna z siedmioma obowiązkowymi sekcjami raportu i szesnastoma obowiązkowymi podsekcjami, dokładność kliniczna mierzona jako przypominanie słów kluczowych plus przypominanie systemu punktacji plus test poprawności ważności rozkładu prawdopodobieństwa, oraz opóźnienie odpowiedzi względem głównego celu poziomu usługi 20 sekund. Dokładny rozkład przedstawiono we wzorze rubryki poniżej.
Pozostałe 0,88 punktu procentowego „marginesu” rozkłada się niemal w całości na straty wynikające z opóźnień — trzy awaryjne wywołania Phase 2, każde złożone na poziomie minus 0,05, wniosły około 0,60 z brakujących 0,88 punktu — a nie na treści kliniczne. Silnik nie pominął poprawnej diagnozy w żadnym z piętnastu przypadków; tam, gdzie nie sprostał, robił to, zajmując nieco więcej czasu niż główny cel 20 sekund w niewielkiej mniejszości wywołań.
Piętnaście przypadków w siedmiu specjalizacjach medycznych
Panel przypadków obejmuje siedem specjalności — hematologię, endokrynologię, medycynę metaboliczną, hepatologię, nefrologię, kardiologię, reumatologię — oraz dwa dedykowane przypadki „pułapki” do hiperdetekcji. Każdy przypadek to zanonimizowany rzeczywisty zapis pacjenta, pobrany z repozytorium danych klinicznych Kantesti na podstawie pisemnej świadomej zgody.
Zanonimizowanie wykonano w ramach podejścia Safe Harbor: usunięto lub zastąpiono wszystkie bezpośrednie identyfikatory, a każdy zapis otrzymał wewnętrzny kod przypadku w formacie BT-NNN-LABEL. Przetwarzanie przeprowadzono zgodnie z Artykułem 9(2)(j) RODO w celu badań naukowych z odpowiednimi zabezpieczeniami oraz z równoważnymi przepisami UK GDPR. Żadne dane umożliwiające identyfikację osoby nie występują nigdzie w opublikowanym zestawie testowym, raporcie technicznym ani w udostępnionych zbiorach danych.
Dlaczego właśnie taki rozkład
Hematologia otrzymuje trzy przypadki, ponieważ w praktyce laboratoryjnej w realnym świecie największymi „pułapkami” o największej częstotliwości są różnicowania mikrocytarne i makrocytarne. Endokrynologia otrzymuje trzy, ponieważ obrazy kliniczne w przebiegu choroby Hashimoto, PCOS i niedoboru witaminy D przyjmują różne kształty diagnostyczne (napędzane autoprzeciwciałami, napędzane proporcjami hormonów, napędzane pojedynczym markerem). Specjalizacje jedno-przypadkowe nadal mają znaczenie, ponieważ każdy z CKD, ryzyka ASCVD i SLE ma własny system punktacji, który silnik powinien wywołać (odpowiednio: stopniowanie KDIGO, 10-letnie ryzyko ASCVD, kryteria SLE 2019 EULAR/ACR).
Wyjaśniona rubryka wstępnie zarejestrowana
Rejestracja wstępna jest jedną z najważniejszych decyzji metodologicznych w tym benchmarku. Każda oczekiwana diagnoza, każdy kliniczny system punktacji i każda sekcja raportu zostały zobowiązane do kodu źródłowego zanim silnik został uruchomiony. Dostosowywanie post-hoc rubryki w celu „podkręcenia” wyniku silnika jest więc niemożliwe.
Trzy składowe składają się na wynik złożony. Składowa strukturalna wnosi 35 procent i mierzy, czy silnik zwrócił siedem obowiązkowych sekcji raportu (nagłówek, podsumowanie, kluczowe ustalenia, różnicowanie, systemy punktacji, zalecenia, obserwacja) oraz szesnaście obowiązkowych podsekcji w ramach tych sekcji. Obecność sekcji waży 40 procent, a obecność podsekcji waży 60 procent w obliczeniu strukturalnym.
Ten składowa kliniczna wnosi 55 procent i łączy trzy elementy: przypominanie słów kluczowych diagnozy (70 procent klinicznej podskali), przypominanie systemu punktacji (20 procent — czy silnik oblicza Mentzer, FIB-4, HOMA-IR, ryzyko ASCVD, stopniowanie KDIGO, kryteria EULAR/ACR, gdy ma to zastosowanie) oraz test poprawności sumy prawdopodobieństw (10 procent — prawdopodobieństwa w różnicowaniu powinny sumować się do wartości w przedziale [90, 110]). W przypadkach-pułapkach odejmowana jest jawna kara za nadrozpoznanie do 0,30, obliczana jako 0,10 za każdy wytworzony znacznik patologii, z limitem do trzech znaczników.
Ten składowa opóźnienia wnosi 10 procent. Odpowiedź poniżej 20 sekund otrzymuje pełne 0,10, odpowiedź poniżej 40 sekund otrzymuje 0,05, a wszystko wolniejsze otrzymuje zero. Cel 20 sekund odzwierciedla produkcyjny cel poziomu usługi dla usługi primary-path; sufit 40 sekund odzwierciedla budżet awaryjny dla Phase 2 przy ciężkich wywołaniach silnika.
Czego zapobiega rejestracja wstępna
Benchmarki pierwszoosobowe są notorycznie podatne na zawyżanie własnych wyników poprzez dostrajanie rubryki post-hoc. Wzorzec jest prawie zawsze ten sam: zespół uruchamia silnik, widzi, gdzie wypada słabiej, a następnie cicho dostosowuje rubrykę tak, by obszary słabiej wypadające liczyły się mniej. Zobowiązując rubrykę do kodu źródłowego przed pierwszym wywołaniem silnika i publikując harness na licencji MIT, to dostosowanie staje się widoczne w kontroli wersji. Każdy może sklonować repozytorium, sprawdzić daty autorów rubryki i zweryfikować, że wyniki silnika nie były użyte do kształtowania punktacji.
Przypadki pułapki hiperdiagnozy — dlaczego nadmierne „przypisywanie” jest realnym trybem porażki
Agresywne nadawanie rozpoznań patologii na prawidłowych ekranach jest udokumentowanym trybem awarii asystentów medycznych skierowanych do konsumentów. Koszty pośrednie obejmują niepotrzebne badania, niepokój pacjenta i niekorzystne działania wynikające z niepotrzebnej diagnostyki. Dwa przypadki-pułapki w tym benchmarku są zaprojektowane tak, aby ten tryb awarii był widoczny i możliwy do punktowania.
🟡 Pułapka 1 — BT-014-GILBERT
Obraz. Mężczyzna, 24 lata, z całkowitą bilirubiną 2,4 mg/dL. Frakcja bezpośrednia jest prawidłowa, transaminazy i fosfataza alkaliczna mieszczą się w swoich zakresach referencyjnych, retikulocyty są bez istotnych cech, a haptoglobina i LDH wykluczają hemolizę.
Prawidłowa interpretacja. Zespół Gilberta — łagodny polimorfizm UGT1A1. Interpretacja nie powinna wywoływać zapalenia wątroby, marskości, niedokrwistości hemolitycznej ani niedrożności dróg żółciowych.
Wynik V11. Wynik złożony 1.000. Żaden z sześciu monitorowanych znaczników nadrozpoznania nie pojawił się jako aktywna diagnoza.
🟡 Pułapka 2 — BT-015-ZDROWY
Obraz. Kobieta, 35 lat, z piętnastoparametrowym rutynowym panelem przesiewowym. Każdy analit znajduje się wygodnie w swoim zakresie referencyjnym.
Prawidłowa interpretacja. Uspokojenie i utrzymanie stylu życia. Interpretacja nie powinna wytwarzać granicznej patologii, aby brzmiała klinicznie użytecznie.
Wynik V11. Złożony wynik 1.000. Żadna z siedmiu monitorowanych flag nadmiernego rozpoznawania — cukrzyca, anemia, niedoczynność tarczycy, dyslipidemia, zapalenie wątroby, choroba nerek, niedobór — nie pojawiła się jako aktywna diagnoza.
W obu pułapkach sprawdzono trzynaście monitorowanych flag nadrozpoznawania. Żadna nie została uruchomiona. To wynik, który ma największe znaczenie dla każdego klinicysty rozważającego użycie silnika AI jako narzędzia triage lub poprzedzającego konsultację: system nie wymyślił choroby, jeśli nie istniała.
Indeks Mentzera: rozdzielanie niedoboru żelaza od cechy talasemii
Drugie wysokowartościowe ustalenie dotyczy połączenia przypadku BT-001 (anemia z niedoboru żelaza) z przypadkiem BT-007 (beta-talasemia mała). Oba przebiegają z mikrocytozą i są dobrze znaną przeszkodą dla naiwnych klasyfikatorów. Indeks Mentzera, obliczany jako MCV podzielone przez liczbę RBC, przekracza 13 w niedoborze żelaza i spada poniżej 13 w cechach talasemii.
W BT-001 pacjentką była 34-letnia kobieta z hemoglobiną 10,4 g/dL, MCV 72,4 fL, RBC 4,1 × 10¹²/L, ferrytyną 6 ng/mL oraz podwyższonym TIBC. Indeks Mentzera wynoszący około 17,7 wspiera bezwzględny niedobór żelaza. W BT-007 pacjentem był 28-letni mężczyzna z mikrocytozą (MCV 65,8 fL), ale wysoką liczbą RBC 6,2, prawidłowym RDW, prawidłową ferrytyną oraz HbA2 5,6 procent. Indeks Mentzera wynoszący około 10,6 wskazuje na cechy talasemii, a podwyższone HbA2 potwierdza beta-talasemię małą.
Oba przypadki uzyskały wynik 1.000. Silnik wyraźnie użył indeksu Mentzera w obu interpretacjach i zwrócił prawidłową diagnozę w każdym przypadku. To pojedynczy najbardziej uspokajający klinicznie wynik w całym benchmarku, ponieważ błędne zaklasyfikowanie cech talasemii jako niedoboru żelaza prowadzi do nieodpowiedniej suplementacji żelazem i pominięcia możliwości przesiewu rodzinnego, a błędne zaklasyfikowanie niedoboru żelaza jako talasemii opóźnia proste leczenie zastępcze. Nasze przewodnik po zakresie ferrytyny wyjaśnia szerszy kontekst różnicowania.
Wyniki dla każdego przypadku z uruchomienia w kwietniu 2026 r.
Dwanaście z piętnastu przypadków osiągnęło sufit złożonego wyniku 1.000 w głównej ścieżce. Trzy przypadki obsłużono przez mechanizm awaryjny Phase 2, tracąc premię 0,05 za opóźnienie, przy zachowaniu całej treści klinicznej i strukturalnej. W jednym przypadku brakowało jednej obowiązkowej podsekcji; w jednym zwrócono nieco obniżoną sumę rozkładu prawdopodobieństwa.
Przypadek PCOS (BT-008) utracił w odpowiedzi pojedynczą obowiązkową podsekcję w strukturze — piętnaście na szesnaście zamiast szesnastu na szesnaście — co obniżyło wynik strukturalny z 1,000 do 0,963. Przypadek SLE (BT-011) zwrócił nieznacznie zmniejszoną sumę rozkładu prawdopodobieństwa, przez co wynik kliniczny spadł do 0,965, przy zachowaniu każdego słowa kluczowego diagnostycznego i systemu punktacji. Żaden z przypadków nieosiągających ideału nie pominął prawidłowej diagnozy.
Co nam nie mówi wynik nagłówkowy
Złożony wynik 99,12 procent w ramach tej konkretnej, wstępnie zarejestrowanej rubryki oznacza niemal wynik maksymalny, ale wymaga to starannego osadzenia w kontekście. Wynik opisuje zachowanie silnika w odniesieniu do piętnastu starannie wybranych zanonimizowanych przypadków, ocenianych po jednym razie, w ramach jednej rubryki. Jesteśmy precyzyjni co do tego, co ta liczba potwierdza, a czego nie.
Wynik mówi, że silnik V11 poprawnie obsłużył wzorce diagnostyczne wybrane do tej ewaluacji, w oparciu o opublikowaną i możliwą do odtworzenia metodykę. Nie mówi, że silnik jest poprawny w każdej istniejącej na świecie grupie badań krwi. Nie mówi też, że silnik powinien zastępować osąd klinicysty. I nie mówi, że silnik przewyższa alternatywne systemy AI — porównawcze analizy z innymi silnikami celowo nie wchodziły w zakres tego raportu.
To, co wynik rzeczywiście potwierdza, to punkt odniesienia. Ponieważ rubryka i narzędzie są publiczne, przyszłe wersje silnika można oceniać względem tych samych piętnastu przypadków, a różnica między opublikowanym wynikiem a dowolnym kolejnym uruchomieniem jest sama w sobie mierzalna. Taka jest wartość wstępnej rejestracji: przekształca twierdzenia o wydajności w twierdzenia możliwe do przetestowania.
Jak odtworzyć ten benchmark w 10 minut
Odtworzenie wymaga jedynie pary poświadczeń API Kantesti oraz środowiska z Pythonem 3.10 lub nowszym, z requests I reportlab zainstalowanymi bibliotekami. Pełne narzędzie to pojedynczy, samowystarczalny moduł Pythona wydany na licencji MIT.
Cztery kroki do nowego uruchomienia
Jeden. Sklonuj repozytorium: git clone https://github.com/emirhanai/kantesti-blood-test-benchmark.git. Dwa. Zainstaluj zależności za pomocą pip install -r requirements.txt. Trzy. Ustaw KANTESTI_USERNAME I KANTESTI_PASSWORD jako zmienne środowiskowe — poświadczenia są odczytywane w czasie uruchomienia i nic nie jest na stałe zakodowane w skrypcie. Cztery. Uruchom python benchmark_bloodtest.py i sprawdź cztery artefakty wygenerowane w katalogu roboczym: kartę wyników CSV, kartę wyników JSON, pełny zrzut JSON obejmujący surowe odpowiedzi silnika oraz czytelny dla człowieka raport w formacie Markdown.
Uruchomienie referencyjne z 23 kwietnia 2026 r. jest zachowane w results/ w katalogu repozytorium. Nowe uruchomienie wygeneruje nową kartę wyników z odciskiem czasu, pozostawiając uruchomienie referencyjne bez zmian. Jeśli Twoje uruchomienie da znacząco inny wynik, prosimy otworzyć issue na GitHubie z podanym czasem uruchomienia oraz wersją silnika zwróconą w metadanych odpowiedzi.
Ograniczenia i prace przyszłe
Cztery ograniczenia wymagają wyraźnego uznania: wielkość próby, ocena jednorazowa, zakres jednego silnika oraz pochodzenie danych z jednego źródła. Każde z nich jest obecnie adresowane w pracach następczych.
Wielkość próby. Piętnaście przypadków w ośmiu kategoriach specjalistycznych wystarcza na dowód koncepcji, ale nie do analizy podgrup w ramach danej specjalności. Planowane jest rozszerzenie do pięćdziesięciu przypadków, obejmujące panele krzepnięcia, przesiew w kierunku nowotworów hematologicznych, panele ciążowe oraz prezentacje pediatryczne.
Ocena jednorazowa. Każdy przypadek był oceniany tylko raz. Modele wielkich języków wykazują istotną zmienność wyników nawet przy niskiej temperaturze próbkowania, więc naturalnym kolejnym krokiem jest protokół wielokrotnego uruchomienia z pięcioma ocenami na przypadek oraz raportowaną wariancją.
Zakres jednego silnika. Ten raport opisuje jeden silnik. Analizy porównawcze z alternatywnymi systemami AI nie wchodzą w zakres tego opracowania; możemy je podjąć jako osobne niezależne badanie z odpowiednią metodyką.
Pochodzenie danych z jednego źródła. Piętnaście przypadków to zanonimizowane rzeczywiste dokumentacje pacjentów pochodzące z jednego repozytorium klinicznego. Stanowią one wyselekcjonowaną próbę i nie są losowym doborem reprezentatywnym dla populacji. Rozszerzenie oceny na dane z wielu ośrodków jest w planach.
Najbardziej wpływowym planowanym rozszerzeniem jest parytet wielojęzyczny. Silnik AI Kantesti obsługuje użytkowników w 75+ językach, a uruchomienie tego samego zestawu testowego z piętnastoma przypadkami w języku tureckim, niemieckim, hiszpańskim, francuskim i arabskim pozwoli ilościowo ocenić jakość wyników w obsługiwanych językach silnika. Opublikujemy każde uruchomienie specyficzne dla języka wraz z własnym DOI i gałęzią zestawu testowego.