Por que existe este benchmark e que proba
A interpretación de análise de sangue con IA asistida cada vez se usa máis en fluxos de traballo de consumo e clínicos, pero seguen sendo pouco comúns os marcos de avaliación reproducibles adaptados á medicina de laboratorio. As preguntas que máis importan neste contexto non son as que se cobren cos benchmarks xerais de preguntas e respostas médicas: pode un motor separar a deficiencia de ferro da característica de talasemia cando o volume corpuscular medio é idéntico, diagnostica en exceso o síndrome de Gilbert como hepatite e fabrica patoloxía nun panel de cribado totalmente normal?
Un único panel de análises de sangue adoita conter sinal suficiente para sustentar varias interpretacións competidoras, e o traballo do/a clínico/a intérprete é ponderar esas interpretacións entre si, en lugar de recuperar unha resposta de manual. Un motor que se desempeña ben en casos de libro aínda pode fallar nos casos que máis importan: as trampas de diagnósticos diferenciais, as variantes benignas que, vistas illadamente, parecen alarmantes, e os paneis totalmente normais que tentan asistentes seguros a fabricar patoloxía.
Este benchmark construíuse precisamente arredor deses modos de fallo. Cada un dos quince casos foi seleccionado por unha propiedade diagnóstica concreta: unha microcitose por deficiencia de ferro que debe manterse distinta dunha traza de beta-talassemia con volume corpuscular medio idéntico, unha presentación de síndrome de Gilbert na que a única anormalidade é unha hiperbilirrubinemia indirecta illada, e un panel de cribado de quince parámetros no que cada analito se sitúa dentro do seu intervalo de referencia. O baremo premia os motores que len cada caso nos seus propios termos e penaliza os motores que se lanzan a un diagnóstico seguro cando non se xustifica tal diagnóstico.
Como Thomas Klein, MD, seleccionei o panel de casos porque son os patróns que vexo que os asistentes de medicina de laboratorio equivocan con máis frecuencia. O modo de fallo caro non é "perder unha enfermidade rara": é fabricar patoloxía rutinaria en pacientes que non a teñen. O noso Validación médica o hub describe o marco máis amplo; esta páxina describe a proba de concepto inicial da V11 e a V11 Segunda Actualización que a escalou a 100.000 casos sintéticos extraídos dun conxunto de casos sintéticos que abarca 127 etiquetas de países — usando a mesma rúbrica de puntuación, byte-por-byte idéntica, sen permitir axustes post-hoc.
Execución de referencia máis recente — V11 Second Update (26 de abril de 2026)
A execución de referencia do V11 Second Update do 26 de abril de 2026 produciu unha puntuación composta de 99.80% na mesma rúbrica pre-rexistrada usada na primeira versión do V11, avaliadas en 100.000 casos sintéticos extraídos do conxunto de casos sintéticos de Kantesti e que abarcan 127 etiquetas de países e linguaxes 75+. Cada caso completouse no camiño principal do motor; as activacións do sinalizador de hiperdiagnóstico en casos trampa mantivéronse en 0 / 87,412. A execución orixinal do V11 do 23 de abril de 2026 cubriu 15 casos curados a man (composta 99.12%) e validou a rúbrica; o Second Update mantén esa rúbrica idéntica en bytes e estende a avaliación a unha cohorte a escala poboacional.
A fórmula composta combina tres compoñentes: conformidade estrutural coas sete seccións de informe obrigatorias e dezaseis subseccións obrigatorias, precisión da información medida como recuperación de palabras clave máis recuperación do sistema de puntuación máis unha comprobación de validez da distribución de probabilidades, e latencia de resposta fronte ao obxectivo de nivel de servizo do camiño principal. A descomposición exacta móstrase na fórmula da rúbrica a continuación — ningunha destas ponderacións nin sub-rúbricas foi alterada para o Second Update.
Os restantes 0.20 puntos porcentuais de marxe descomponse case por completo na subpuntuación clínica — unha pequena fracción de casos (predominantemente en Hepatoloxía e Reumatoloxía) tiña unha palabra clave esperada do sistema de puntuación ausente da interpretación do motor malia que o contido diagnóstic o era correcto. Ningún caso na cohorte de 100.000 casos do Second Update perdeu o diagnóstico en si. A latencia mellorou desde unha media de 20.17 s na primeira versión do V11 ata 13.26 s no Second Update, reflectindo optimizacións do motor de produción entre as dúas execucións; a rúbrica, o código de puntuación e o endpoint da API non cambiaron.
As puntuacións compostas por etiqueta oscilaron entre 0.9971 e 0.9985 nas 30 etiquetas de países máis representadas. A longa cola de 97 etiquetas adicionais (≈7.300 casos en conxunto) non mostrou degradación sistemática. As etiquetas máis frecuentes segundo o número de casos foron os Estados Unidos (10.500), Brasil (9.500), España (9.000), Italia (8.000), Alemaña (7.800), Francia (7.400), Portugal (5.800), Türkiye (3.400), o Reino Unido (2.900) e México (2.500).
De 15 casos a 100.000: evolución da cohorte en 127 etiquetas de países
O panel de casos orixinal da V11 cubría sete especialidades — hematoloxía, endocrinoloxía, medicina metabólica, hepatoloxía, nefroloxía, cardioloxía, reumatoloxía — ademais de dous casos dedicados de trampa de hipediagnóstico, con cada caso un panel de probas de sangue xerado sinteticamente. A V11 Segunda Actualización estende a avaliación a 100.000 casos sintéticos en 127 etiquetas de países, distribuídos en oito especialidades (as sete orixinais máis un compartimento interno de medicina dedicado que absorbe o subconxunto de trampa). A mesma rúbrica de puntuación aplícase idéntica en bytes en ambas as execucións.
Dado que todos os casos se xeran sinteticamente, non hai identificadores reais que eliminar e non se inclúen datos persoais. Cada caso sintético leva un código de caso interno do benchmark (BT-NNN-LABEL no conxunto inicial da V11, un estable case_uid na Segunda Actualización). Non aparece ningún dato persoal en ningures no armazón publicado, no informe técnico nin nos conxuntos de datos publicados.
primeira versión do V11 — 15 casos curados a man
O panel de casos V11 orixinal foi seleccionado manualmente polo doutor Thomas Klein para exercitar os patróns diagnósticos que os asistentes de medicina de laboratorio adoitan interpretar mal. Cada un dos quince casos foi escollido por unha propiedade diagnóstica específica, listada a continuación.
Por que esta distribución en particular
A hematoloxía recibe tres casos porque os diagnósticos diferenciais microcíticos e macrocíticos son as trampas de maior volume na práctica real de laboratorio. A endocrinoloxía recibe tres porque as presentacións de Hashimoto, SOP e deficiencia de vitamina D exercen formas diagnósticas distintas (impulsadas por autoanticorpos, impulsadas por razóns hormonais, impulsadas por un único marcador). As especialidades de caso único seguen sendo significativas porque cada unha de CKD, risco de ASCVD e SLE ten o seu propio sistema de puntuación que o motor debe invocar (estadificación KDIGO, risco a 10 anos de ASCVD, e criterios SLE 2019 EULAR/ACR, respectivamente).
V11 Segunda Actualización — 100.000 casos sintéticos en 127 etiquetas de países
A Segunda Actualización substitúe o literal de Python orixinal da V11, codificado de forma fixa, de 15 casos, por un conxunto de casos sintéticos máis grande xerado programaticamente. O conxunto de casos cárgase ao inicio de cada execución e a configuración rexístrase para transparencia. A distribución da cohorte por área de contido móstrase a continuación.
Distribución sintética de etiquetas de países — top 10 etiquetas
Os 100.000 casos sintéticos levan 127 etiquetas de países (ISO 3166-1 alpha-2) para exercitar o manexo de configuración local. Asignación de etiquetas: Europa 57.7%, as Américas 25.4%, Asia-Pacífico 6.2%, etiquetas nomeadas de Oriente Medio/África 3.4%, e unha longa cola de 97 etiquetas adicionais aproximadamente 7.3% en conxunto. As dez etiquetas máis frecuentes segundo o número de casos son os Estados Unidos (10.500), Brasil (9.500), España (9.000), Italia (8.000), Alemaña (7.800), Francia (7.400), Portugal (5.800), Türkiye (3.400), o Reino Unido (2.900) e México (2.500). As puntuacións compostas por etiqueta oscilaron entre 0.9971 e 0.9985. Estas cantidades de etiquetas son propiedades dos casos xerados usados para exercitar o manexo de configuración local — non son usuarios reais e non representan cobertura xeográfica real.
O baremo preinscrito, explicado
O rexistro previo é a elección metodolóxica máis importante neste benchmark. Cada diagnóstico esperado, cada sistema de puntuación clínica e cada sección do informe foron comprometidos a código fonte antes de que se invocase o motor. O axuste post-hoc da rúbrica para favorecer o motor, polo tanto, é imposible.
Tres compoñentes forman a puntuación composta. O compoñente estrutural contribúe co 35 por cento e mide se o motor devolveu as sete seccións obrigatorias do informe (cabeceira, resumo, achados clave, diferencial, sistemas de puntuación, recomendacións, seguimento) e as dezaseis subseccións obrigatorias dentro delas. A presenza de seccións pesa un 40 por cento e a presenza de subseccións pesa un 60 por cento dentro do cálculo estrutural.
O/A compoñente clínico contribúe co 55 por cento e combina tres cousas: lembranza de palabras clave do diagnóstico (70 por cento da subpuntuación clínica), lembranza do sistema de puntuación (20 por cento — se o motor calcula Mentzer, FIB-4, HOMA-IR, risco de ASCVD, estadificación KDIGO, criterios EULAR/ACR cando corresponda), e unha verificación de validez da suma de probabilidades (10 por cento — as probabilidades do diferencial deben sumar dentro do intervalo [90, 110]). Para casos trampa, restase unha penalización explícita de hiperdianóstico de ata 0,30, calculada como 0,10 por cada bandeira de patoloxía fabricada, con límite de tres bandeiras.
O/A compoñente de latencia contribúe co 10 por cento. Unha resposta por debaixo de 20 segundos obtén a puntuación completa de 0,10, unha resposta por debaixo de 40 segundos obtén 0,05, e calquera cousa máis lenta obtén cero. O obxectivo de 20 segundos reflicte o obxectivo de nivel de servizo do servizo primario de produción; o teito de 40 segundos reflicte o orzamento de respaldo da Fase 2 para invocacións pesadas do motor.
O que evita o rexistro previo
Os benchmarks de primeira parte son notorios por inflar os seus propios números mediante axustes post-hoc da rúbrica. O patrón é case sempre o mesmo: o equipo executa o motor, ve onde falla, e despois axusta en silencio a rúbrica para que as áreas que fallan conten menos. Ao comprometer a rúbrica a código fonte antes da primeira chamada ao motor e publicar o arnés baixo licenza MIT, ese axuste faise visible no control de versións. Calquera pode clonar o repositorio, comprobar as datas de autoría da rúbrica e verificar que os resultados do motor non se usaron para dar forma á puntuación.
Casos trampa de hiperdianóstico: por que a sobrechamada é o verdadeiro modo de fallo
O sobrediagnóstico agresivo de patoloxía en pantallas normais é un modo de fallo documentado de asistentes médicos orientados ao consumidor. Os seus custos posteriores inclúen investigación innecesaria, ansiedade do paciente e traballo iatroxénico. Os dous casos trampa deste benchmark están deseñados para facer visible e puntuable ese modo de fallo.
🟡 Trampa 1 — BT-014-GILBERT
Presentación. Un home de 24 anos cunha bilirrubina total de 2,4 mg/dL. A fracción directa é normal, as transaminases e a fosfatase alcalina están dentro dos seus intervalos de referencia, os reticulocitos non presentan particularidades e a haptoglobina e a LDH descartan a hemólise.
Interpretación correcta. Síndrome de Gilbert — unha polimorfia benigna de UGT1A1. A interpretación non debe invocar hepatite, cirrose, anemia hemolítica nin obstrución biliar.
Resultado V11. Composta 1.000. Ningunha das seis bandeiras de sobrediagnóstico monitorizadas apareceu como diagnóstico activo.
🟡 Trampa 2 — BT-015-SAUDABLE
Presentación. Unha muller de 35 anos cun panel rutinario de cribado de quince parámetros. Cada analito está cómodamente dentro do seu intervalo de referencia.
Interpretación correcta. Tranquilidade e mantemento do estilo de vida. A interpretación non debe fabricar patoloxía limítrofe para parecer clinicamente útil.
Resultado V11. Composto 1.000. Ningunha das sete alertas de sobrediagnóstico monitorizadas — diabetes, anemia, hipotiroidismo, dislipidemia, hepatite, enfermidade renal, deficiencia — apareceu como diagnóstico activo.
En ambas as dúas trampas, revisáronse trece alertas de hiperdianóstico monitorizadas. Non se activou ningunha. Este é o resultado que máis importa para calquera clínico que estea considerando usar un motor de IA como ferramenta de triaxe ou de preconsulta: o sistema non inventou enfermidade onde non existía.
Índice de Mentzer: separar a deficiencia de ferro da traza de talasemia
Un segundo achado de alto valor está relacionado co emparellamento do caso BT-001 (anemia ferropénica) co caso BT-007 (beta-talassemia menor). Ambos presentan microcitose e son un atranco ben coñecido para clasificadores inxenuos. O índice de Mentzer, calculado como MCV dividido polo reconto de RBC, supera 13 na deficiencia de ferro e cae por debaixo de 13 na característica de talasemia.
En BT-001, a paciente era unha muller de 34 anos con hemoglobina 10,4 g/dL, MCV 72,4 fL, RBC 4,1 × 10¹²/L, ferritina 6 ng/mL e TIBC elevado. O índice de Mentzer de aproximadamente 17,7 apoia a deficiencia absoluta de ferro. En BT-007, o paciente era un home de 28 anos con microcitose (MCV 65,8 fL) pero un reconto alto de RBC de 6,2, RDW normal, ferritina normal e HbA2 do 5,6 por cento. O índice de Mentzer de aproximadamente 10,6 apunta á característica de talasemia, e a HbA2 elevada confirma a beta-talassemia menor.
Ambos casos obtiveron 1.000. O motor invocou o índice de Mentzer de forma explícita en ambas as interpretacións e devolveu o diagnóstico correcto en cada caso. Este é o resultado máis tranquilizador a nivel clínico de todo o benchmark, porque clasificar erradamente a característica de talasemia como deficiencia de ferro leva a unha suplementación inadecuada con ferro e a oportunidades perdidas de cribado familiar, e clasificar erradamente a deficiencia de ferro como talasemia atrasa a terapia de substitución, que é directa. O noso guía de rangos de ferritina explica o contexto diferencial máis amplo.
Resultados por caso da execución de referencia inicial da V11 (23 de abril de 2026)
A execución de referencia orixinal da V11 na cohorte de proba de concepto de 15 casos serve como a base metodolóxica da Second Update: cada detalle por caso de abaixo ilustra como o baremo xestiona unha resposta real do motor. Doce de quince casos acadaron o teito da puntuación composta de 1.000 no camiño principal; tres casos servíronse mediante o fallback da Fase 2, perdendo o bono de latencia de 0.05 mentres se preservaba todo o contido clínico e estrutural. Un caso carecía dunha única subsección obrigatoria; un devolveu unha suma de distribución de probabilidades lixeiramente reducida.
O caso de PCOS (BT-008) perdeu unha única subsección obrigatoria na estrutura da resposta — quince de dezaseis en vez de dezaseis de dezaseis — o que reduciu a puntuación estrutural de 1,000 a 0,963. O caso de SLE (BT-011) devolveu unha suma de probabilidade-distribución lixeiramente reducida que baixou a puntuación clínica a 0,965, mantendo cada palabra clave diagnóstica e o sistema de puntuación. Ningún dos dous casos non perfectos perdeu un diagnóstico correcto.
Agregado da V11 Second Update — 100,000 casos
A escala poboacional, as filas individuais de casos non son lexibles por humanos, polo que a Segunda Actualización informa métricas agregadas en lugar dunha táboa de 100.000 filas. O agregado principal móstrase a continuación; as desagregacións por especialidade e por etiqueta de país publícanse no informe técnico e no depósito de Figshare. Publícase unha mostra aleatoria estratificada de n = 201 respostas crúas do motor (semente determinista 20260426) no directorio de GitHub results/ para a súa inspección.
O que non nos di a puntuación do titular
Unha puntuación composta do 99.80 por cento baixo esta rúbrica pre-rexistrada en particular, nunha cohorte sintética de 100.000 casos que abarca 127 etiquetas de países, representa un rendemento moi próximo ao teito — pero merece unha contextualización coidadosa. O resultado describe o comportamento do motor fronte á rúbrica coa que nos comprometemos no código fonte na V11; non é unha afirmación universal sobre a corrección do motor en cada panel de probas de sangue que exista no mundo real.
A puntuación indica que o motor xestionou correctamente os patróns diagnósticos seleccionados para esta avaliación en toda unha cohorte a escala poboacional, nunha metodoloxía publicada e reproducible. Non di que o motor sexa correcto en cada panel de análise de sangue que existe no mundo real. Non di que o motor deba substituír o xuízo clínico. E tampouco di que o motor supere sistemas alternativos de IA — as análises comparativas con outros motores quedaron deliberadamente fóra do alcance deste informe.
O que si establece a puntuación é unha liña de base. Coa rúbrica e o arnés públicos, as versións futuras do motor pódense avaliar fronte á mesma rúbrica — aplicada aos 15 casos iniciais de V11, á cohorte de 100.000 casos da Segunda actualización, ou a calquera expansión posterior — e a diferenza entre a puntuación publicada e calquera execución posterior é, por si mesma, medible. Este é o valor da pre-rexistración: converte as afirmacións de rendemento en afirmacións comprobables.
Como reproducir este benchmark en 10 minutos
A reproducibilidade require só un par de credenciais de API Kantesti e un entorno de Python 3.10 ou posterior co requests e reportlab bibliotecas instaladas. O banco de probas completo é un único módulo de Python autocontido, publicado baixo a licenza MIT.
Catro pasos para unha execución nova
Un. Clona o repositorio: git clone https://github.com/emirhanai/kantesti-blood-test-benchmark.git. Dous. Instala as dependencias con pip install -r requirements.txt (A Segunda actualización engade mysql-connector-python ≥ 8.0 para o cargador de casos SQL). Tres. Define KANTESTI_USERNAME e KANTESTI_PASSWORD como variables de contorno para a API do motor. Para o cargador de casos SQL da Segunda actualización, tamén define KANTESTI_DB_HOST, KANTESTI_DB_PORT, KANTESTI_DB_NAME, KANTESTI_DB_USER, e KANTESTI_DB_PASSWORD — o cargador conecta mediante un rol de só lectura (bench_reader) que non ten privilexios para identificar táboas. Catro. Executa python benchmark_bloodtest.py --limit 100000 para a execución completa de Second-Update, ou python benchmark_bloodtest.py --limit 1000 para unha iteración rápida. Os resultados gárdanse en ./benchmark_results/: unha tarxeta de puntuación CSV con columnas por país-etiqueta e por especialidade, un agregado JSON, unha mostra estratificada-aleatoria de respostas en bruto e un informe en Markdown.
As execucións de referencia de 23 de abril de 2026 (V11 inicial, 15 casos) e de 26 de abril de 2026 (V11 Second Update, 100,000 casos) consérvanse no results/ directorio do repositorio. Unha execución nova xerará un novo scorecard con marca temporal, deixando as execucións de referencia intactas. Se a túa execución produce un resultado significativamente diferente, por favor abre un problema en GitHub coa marca temporal da execución e a versión do motor devolta nos metadatos da resposta.
Limitacións e traballo futuro
Mesmo con 100.000 casos en 127 etiquetas de país, catro limitacións merecen un recoñecemento explícito: infraamostrado de etiquetas de longa cola, avaliación de disparo único, alcance dun único motor e orixe de datos dunha única fonte. Cada unha está a ser abordada en traballo de seguimento activo.
Cobertura de etiquetas de longa cola. A Segunda Actualización abarca 127 etiquetas de país, pero a distribución é desbalanceada — as 10 etiquetas principais representan ≈66,4% dos casos, e a longa cola de 97 etiquetas adicionais xuntas achega ≈7,3% (aprox. 7.300 casos combinados, ~75 casos por etiqueta en media). Polo tanto, os compostos por etiqueta nesta longa cola son máis ruidosos do que suxiren as cifras destacadas. As execucións futuras reequilibrarán a asignación de etiquetas para consolidar as estimacións por etiqueta.
Avaliación dunha soa vez. Cada caso do conxunto foi avaliado unha única vez. Os modelos de linguaxe grande presentan unha variación de saída non trivial incluso a baixa temperatura de mostreo, polo que un protocolo de múltiples execucións con cinco avaliacións por caso e a variancia reportada é un seguinte paso natural — especialmente no subconxunto de casos trampa, onde a consistencia baixo axitación de mostreo forma parte da afirmación de seguridade.
Alcance dun só motor. Este informe caracteriza un único motor. As análises comparativas fronte a sistemas de IA alternativos quedan fóra do alcance aquí; podemos abordalas como un estudo independente separado con metodoloxía adecuada, contra o mesmo arnés con licenza MIT.
Datos sintéticos. Os 100.000 casos xéranse sinteticamente, non son casos sintéticos, e os resultados non se transfiren ao rendemento clínico no mundo real. A avaliación con datos reais, con consentimento e procedentes de fontes externas requiriría unha supervisión ética adecuada e queda fóra do alcance deste benchmark sintético.
Máis aló destas catro, a extensión planificada con maior impacto é a paridade multilingüe por xurisdición. O Kantesti AI Engine atende usuarios en 75+ linguas, e executar sub-cohortes estratificadas por lingua do Second Update (turco, alemán, español, francés, italiano, portugués, árabe, mandarín) cuantificará a calidade das saídas nas linguas admitidas polo motor. Cada análise estratificada por lingua publicarase co seu propio DOI e rama do arnés.