Por que este benchmark existe e o que ele testa
A análise de sangue por IA com assistência está sendo cada vez mais usada em fluxos de trabalho de consumo e clínicos; ainda assim, frameworks de avaliação reproduzíveis voltados para medicina laboratorial permanecem incomuns. As perguntas que mais importam neste contexto não são as que são cobertas por benchmarks gerais de perguntas e respostas médicas: um motor consegue separar deficiência de ferro de traço de talassemia quando o volume corpuscular médio é idêntico, ele faz sobrediagnóstico da síndrome de Gilbert como hepatite e ele fabrica patologia em um painel de triagem totalmente normal?
Um único painel de exames de sangue normalmente contém sinal suficiente para sustentar várias interpretações concorrentes, e o trabalho do clínico que interpreta é ponderar essas interpretações entre si, em vez de buscar uma resposta de livro-texto. Um mecanismo que se sai bem em casos de livro-texto ainda pode falhar justamente nos casos que mais importam: as armadilhas de diagnóstico diferencial, as variantes benignas que parecem alarmantes quando isoladas e os painéis totalmente normais que tentam assistentes confiantes a fabricar patologia.
Este benchmark foi construído exatamente em torno desses modos de falha. Cada um dos quinze casos foi selecionado por uma propriedade diagnóstica específica: uma microcitose por deficiência de ferro que precisa ser mantida distinta de uma característica de beta-talassemia com volume corpuscular médio idêntico, uma apresentação de síndrome de Gilbert em que a única alteração é uma hiperbilirrubinemia indireta isolada e um painel de triagem com quinze parâmetros em que cada analito está dentro do seu intervalo de referência. A rubrica recompensa motores que leem cada caso em seus próprios termos e penaliza motores que chegam a um diagnóstico confiante quando não há justificativa para tal diagnóstico.
Como Thomas Klein, MD, selecionei o painel de casos porque são esses os padrões que vejo com mais frequência os assistentes de medicina laboratorial interpretarem de forma incorreta. O modo de falha caro não é "deixar de detectar uma doença rara" — é fabricar patologia rotineira em pacientes que não a têm. Nosso Validação médica o hub descreve a estrutura mais ampla; esta página descreve a prova de conceito inicial da V11 e a V11 Segunda Atualização que a escalou para 100.000 casos sintéticos extraídos de um conjunto de casos sintéticos que abrange 127 rótulos de países — usando a mesma rubrica de pontuação, idêntica em bytes, sem permitir ajuste pós-hoc.
Execução de referência mais recente — V11 Second Update (26 de abril de 2026)
A execução de referência da V11 Second Update de 26 de abril de 2026 produziu uma pontuação composta de 99.80% na mesma rubrica pré-registrada usada no lançamento inicial da V11, avaliada em 100.000 casos sintéticos extraídos do conjunto de casos sintéticos Kantesti e abrangendo 127 rótulos de países e as linguagens 75+. Cada caso foi concluído no caminho primário do mecanismo; ativações do sinalizador de hiperdetecção em casos-armadilha permaneceram em 0 / 87,412. A execução original da V11 em 23 de abril de 2026 cobriu 15 casos curados manualmente (composto 99.12%) e validou a rubrica; a Second Update mantém essa rubrica idêntica em bytes e estende a avaliação para um coorte em escala populacional.
A fórmula composta combina três componentes: conformidade estrutural com as sete seções obrigatórias do relatório e dezesseis subseções obrigatórias, precisão da exatidão do conteúdo medida como recuperação de palavras-chave mais recuperação do sistema de pontuação mais uma verificação de validade da distribuição de probabilidade, e latência de resposta em relação à meta de nível de serviço do caminho primário. A decomposição exata é mostrada na fórmula da rubrica abaixo — nenhum desses pesos ou sub-rubricas foi alterado para a Second Update.
Os 0,20 pontos percentuais restantes de folga se decompõem quase inteiramente na subpontuação clínica — uma pequena fração dos casos (predominantemente em Hepatologia e Reumatologia) teve uma palavra-chave esperada do sistema de pontuação ausente da interpretação do mecanismo, apesar de o conteúdo diagnóstico estar correto. Nenhum caso no coorte de 100.000 casos da Second Update perdeu o diagnóstico em si. A latência melhorou de uma média de 20,17 s no lançamento inicial da V11 para 13,26 s na Second Update, refletindo otimizações do mecanismo de produção entre as duas execuções; a rubrica, o código de pontuação e o endpoint da API permanecem inalterados.
As pontuações compostas por rótulo variaram de 0,9971 a 0,9985 entre os 30 rótulos de países mais representados. A cauda longa de 97 rótulos adicionais (≈7.300 casos no total) não mostrou degradação sistemática. Os rótulos mais frequentes por contagem de casos foram os Estados Unidos (10.500), Brasil (9.500), Espanha (9.000), Itália (8.000), Alemanha (7.800), França (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: evolução da coorte em 127 rótulos de países
O painel original de casos da V11 cobria sete especialidades — hematologia, endocrinologia, medicina metabólica, hepatologia, nefrologia, cardiologia, reumatologia — além de dois casos dedicados de armadilha de hipediagnóstico, com cada caso sendo um painel de testes de sangue gerado sinteticamente. A V11 Segunda Atualização estende a avaliação para 100.000 casos sintéticos em 127 rótulos de países, distribuídos em oito especialidades (as sete originais mais um compartimento dedicado de medicina interna que absorve o subconjunto de armadilha). A mesma rubrica de pontuação é aplicada idêntica em bytes em ambas as execuções.
Como todos os casos são gerados sinteticamente, não há identificadores reais a remover e não há envolvimento de dados pessoais. Cada caso sintético traz um código de caso interno do benchmark (BT-NNN-LABEL no conjunto inicial da V11, um estável case_uid na Segunda Atualização). Nenhum dado pessoal aparece em lugar algum no conjunto publicado, no relatório técnico ou nos conjuntos de dados disponibilizados.
lançamento inicial da V11 — 15 casos curados manualmente
O painel de casos V11 original foi selecionado manualmente pelo Dr. Thomas Klein para exercitar os padrões diagnósticos que os assistentes de medicina laboratorial mais frequentemente interpretam de forma incorreta. Cada um dos quinze casos foi escolhido por uma propriedade diagnóstica específica, listada abaixo.
Por que esta distribuição em particular
A hematologia recebe três casos porque diferenciais microcíticos e diferenciais macrocíticos são as armadilhas de maior volume na prática laboratorial do mundo real. A endocrinologia recebe três porque as apresentações de Hashimoto, SOPC e deficiência de vitamina D exercitam formatos diagnósticos diferentes (orientados por autoanticorpos, orientados por proporções hormonais, orientados por um único marcador). As especialidades de caso único ainda são significativas porque cada uma de DRC, risco de ASCVD e LES tem seu próprio sistema de pontuação que o motor deve acionar (estadiamento KDIGO, risco ASCVD em 10 anos, e critérios de LES EULAR/ACR de 2019, respectivamente).
V11 Segunda Atualização — 100.000 casos sintéticos em 127 rótulos de países
A Segunda Atualização substitui o literal Python original de 15 casos, codificado de forma fixa na V11, por um conjunto maior de casos sintéticos gerado programaticamente. O conjunto de casos é carregado no início de cada execução e a configuração é registrada para transparência. A distribuição da coorte por área de conteúdo é mostrada abaixo.
Distribuição sintética de rótulos de países — top 10 rótulos
Os 100.000 casos sintéticos trazem 127 rótulos de países (ISO 3166-1 alpha-2) para exercitar o tratamento de localidade. Atribuição de rótulos: Europa 57,7%, as Américas 25,4%, Ásia-Pacífico 6,2%, rótulos nomeados do Oriente Médio/África 3,4% e uma cauda longa de 97 rótulos adicionais, somados aproximadamente 7,3%. Os dez rótulos mais frequentes por contagem de casos são os Estados Unidos (10.500), Brasil (9.500), Espanha (9.000), Itália (8.000), Alemanha (7.800), França (7.400), Portugal (5.800), Türkiye (3.400), o Reino Unido (2.900) e México (2.500). As pontuações compostas por rótulo variaram de 0,9971 a 0,9985. Essas contagens de rótulos são propriedades dos casos gerados usados para exercitar o tratamento de localidade — elas não são usuários reais e não representam cobertura geográfica do mundo real.
A rubrica pré-registrada, explicada
O pré-registro é a escolha metodológica única mais importante neste benchmark. Cada diagnóstico esperado, cada sistema de pontuação clínica e cada seção do relatório foram comprometidos com o código-fonte antes de o motor ser acionado. Portanto, o ajuste a posteriori da rubrica para favorecer o motor é impossível.
Três componentes compõem a pontuação composta. O componente estrutural contribui com 35% e mede se o motor retornou as sete seções obrigatórias do relatório (cabeçalho, resumo, principais achados, diferencial, sistemas de pontuação, recomendações, acompanhamento) e as dezesseis subseções obrigatórias dentro delas. A presença de seções pesa 40% e a presença de subseções pesa 60% dentro do cálculo estrutural.
O componente clínico contribui com 55% e combina três coisas: recuperação de palavras-chave do diagnóstico (70% da subpontuação clínica), recuperação do sistema de pontuação (20% — o motor calcula Mentzer, FIB-4, HOMA-IR, risco de ASCVD, estadiamento KDIGO, critérios EULAR/ACR quando relevante), e uma verificação de validade da soma de probabilidades (10% — as probabilidades do diferencial devem somar dentro do intervalo [90, 110]). Para casos de armadilha, uma penalidade explícita de hiperdia gnosticação de até 0,30 é subtraída, calculada como 0,10 por sinalizador de patologia fabricado, limitada a três sinalizadores.
O componente de latência contribui com 10%. Uma resposta em menos de 20 segundos recebe a pontuação total de 0,10, uma resposta em menos de 40 segundos recebe 0,05, e qualquer coisa mais lenta recebe zero. A meta de 20 segundos reflete o objetivo de nível de serviço do serviço primário de produção; o teto de 40 segundos reflete o orçamento de fallback da Fase 2 para invocações pesadas do motor.
O que o pré-registro impede
Benchmarks de primeira parte são notórios por inflar seus próprios números por meio de ajuste a posteriori da rubrica. O padrão quase sempre é o mesmo: a equipe executa o motor, vê onde ele tem desempenho inferior e então ajusta silenciosamente a rubrica para que as áreas com desempenho inferior contem menos. Ao comprometer a rubrica com o código-fonte antes da primeira chamada ao motor e publicar o harness sob licença MIT, esse ajuste fica visível no controle de versão. Qualquer pessoa pode clonar o repositório, verificar as datas de autoria da rubrica e confirmar que os resultados do motor não foram usados para moldar a pontuação.
Casos-armadilha de hiperdia gnosticação — por que a superchamada é o modo de falha real
Superchamadas agressivas de patologia em telas normais é um modo de falha documentado de assistentes médicos voltados ao consumidor. Seus custos a jusante incluem investigação desnecessária, ansiedade do paciente e investigação iatrogênica. Os dois casos de armadilha neste benchmark são projetados para tornar esse modo de falha visível e pontuável.
🟡 Armadilha 1 — BT-014-GILBERT
Apresentação. Um homem de 24 anos com bilirrubina total de 2,4 mg/dL. A fração direta é normal, as transaminases e a fosfatase alcalina ficam dentro de seus intervalos de referência, os reticulócitos são pouco notáveis, e haptoglobina e LDH descartam hemólise.
Interpretação correta. Síndrome de Gilbert — uma polimorfismo benigno de UGT1A1. A interpretação não deve invocar hepatite, cirrose, anemia hemolítica ou obstrução biliar.
Resultado da v11. Composto 1,000. Nenhuma das seis sinalizações de superdiagnóstico monitoradas apareceu como diagnóstico ativo.
🟡 Armadilha 2 — BT-015-HEALTHY
Apresentação. Uma mulher de 35 anos com um painel de triagem de rotina com quinze parâmetros. Cada analito está confortavelmente dentro do seu intervalo de referência.
Interpretação correta. Tranquilização e manutenção do estilo de vida. A interpretação não deve fabricar patologia limítrofe para soar clinicamente útil.
Resultado da v11. Composto 1.000. Nenhuma das sete sinalizações de sobrediagnóstico monitoradas — diabetes, anemia, hipotireoidismo, dislipidemia, hepatite, doença renal, deficiência — apareceu como diagnóstico ativo.
Em ambas as armadilhas, foram verificadas treze sinalizações de hiperdianóstico monitoradas. Nenhuma foi acionada. Este é o resultado que mais importa para qualquer clínico que esteja considerando usar um mecanismo de IA como ferramenta de triagem ou pré-consulta: o sistema não inventou doença onde não existia.
Índice de Mentzer: separando deficiência de ferro de traço de talassemia
Um segundo achado de alto valor diz respeito ao pareamento do caso BT-001 (anemia ferropriva) com o caso BT-007 (traço beta-talassêmico menor). Ambos apresentam microcitose e são um obstáculo bem conhecido para classificadores ingênuos. O índice de Mentzer, calculado como MCV dividido pela contagem de RBC, excede 13 na deficiência de ferro e fica abaixo de 13 no traço talassêmico.
Em BT-001, a paciente era uma mulher de 34 anos com 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 deficiência absoluta de ferro. Em BT-007, o paciente era um homem de 28 anos com microcitose (MCV 65,8 fL), mas com contagem de RBC alta de 6,2, RDW normal, ferritina normal e HbA2 de 5,6%. O índice de Mentzer de aproximadamente 10,6 aponta para traço talassêmico, e o HbA2 elevado confirma beta-talassemia menor.
Ambos os casos pontuaram 1.000. O mecanismo invocou explicitamente o índice de Mentzer em ambas as interpretações e retornou o diagnóstico correto em cada instância. Este é o resultado mais tranquilizador do ponto de vista clínico em todo o benchmark, porque classificar erroneamente o traço talassêmico como deficiência de ferro leva à suplementação inadequada de ferro e a oportunidades perdidas de triagem familiar, e classificar erroneamente a deficiência de ferro como talassemia atrasa a terapia de reposição direta. Nosso guia de faixa de ferritina explica o contexto diferencial mais amplo.
Resultados por caso da execução de referência inicial da V11 (23 de abril de 2026)
A execução de referência original da V11 na coorte de prova de conceito com 15 casos serve como a base metodológica da Second Update: cada detalhe por caso abaixo ilustra como a rubrica lida com uma resposta real do motor. Doze dos quinze casos atingiram a pontuação composta máxima de 1.000 no caminho primário; três casos foram atendidos via fallback da Fase 2, perdendo o bônus de latência de 0.05 enquanto preservavam todo o conteúdo clínico e estrutural. Um caso estava faltando uma única subseção obrigatória; um retornou uma soma de distribuição de probabilidade marginalmente reduzida.
O caso de PCOS (BT-008) perdeu uma única subseção obrigatória na estrutura da resposta — quinze de dezesseis em vez de dezesseis de dezesseis — o que reduziu a pontuação estrutural de 1,000 para 0,963. O caso de LES (BT-011) retornou uma soma de probabilidade-distribuição marginalmente reduzida, que diminuiu a pontuação clínica para 0,965, preservando todas as palavras-chave diagnósticas e o sistema de pontuação. Nenhum dos dois casos abaixo do ideal deixou de identificar um diagnóstico correto.
Agregado da V11 Second Update — 100.000 casos
Em escala populacional, as linhas individuais de casos não são legíveis por humanos, então a Segunda Atualização relata métricas agregadas em vez de uma tabela com 100.000 linhas. O agregado principal é mostrado abaixo; as segmentações por especialidade e por rótulo de país são publicadas no relatório técnico e no depósito do Figshare. Uma amostra aleatória estratificada de n = 201 respostas brutas do motor (semente determinística 20260426) é publicada no GitHub results/ diretório para inspeção.
O que a pontuação do título não nos diz
Uma pontuação composta de 99,80 por cento nesta rubrica pré-registrada específica, em uma coorte sintética de 100.000 casos que abrange 127 rótulos de países, representa desempenho próximo ao teto — mas merece enquadramento cuidadoso. O resultado descreve o comportamento do motor em relação à rubrica com a qual nos comprometemos no código-fonte na V11; não é uma alegação universal sobre a correção do motor em cada painel de exame de sangue que existe no mundo real.
A pontuação diz que o mecanismo lidou corretamente com os padrões diagnósticos selecionados para esta avaliação em uma coorte em escala populacional, em uma metodologia que é publicada e reproduzível. Ela não diz que o mecanismo está correto em cada painel de exame de sangue que existe no mundo real. Ela não diz que o mecanismo deve substituir o julgamento clínico. E também não diz que o mecanismo supera sistemas alternativos de IA — análises comparativas com outros mecanismos ficaram deliberadamente fora do escopo deste relatório.
O que a pontuação de fato estabelece é uma linha de base. Com o rubric e o harness públicos, versões futuras do mecanismo podem ser avaliadas usando o mesmo rubric — aplicado aos 15 casos iniciais da V11, à coorte de 100.000 casos da Segunda atualização, ou a qualquer expansão subsequente — e a diferença entre a pontuação publicada e qualquer execução subsequente é, por si só, mensurável. Este é o valor do pré-registro: ele transforma alegações de desempenho em alegações testáveis.
Como reproduzir este benchmark em 10 minutos
A reprodução exige apenas um par de credenciais de API Kantesti e um ambiente Python 3.10 ou posterior com o requests e reportlab bibliotecas instaladas. O harness completo é um único módulo Python autocontido, lançado sob a licença MIT.
Quatro etapas para uma execução nova
Uma. Clone o repositório: git clone https://github.com/emirhanai/kantesti-blood-test-benchmark.git. Duas. Instale as dependências com pip install -r requirements.txt (A Segunda atualização adiciona mysql-connector-python ≥ 8.0 para o carregador de casos do SQL). Três. Defina KANTESTI_USERNAME e KANTESTI_PASSWORD como variáveis de ambiente para a API do mecanismo. Para o carregador de casos do SQL da Segunda atualização, também defina KANTESTI_DB_HOST, KANTESTI_DB_PORT, KANTESTI_DB_NAME, KANTESTI_DB_USER, e KANTESTI_DB_PASSWORD — o carregador conecta-se por meio de uma função somente leitura (bench_reader) que não tem privilégios para identificar tabelas. Quatro. Execute python benchmark_bloodtest.py --limit 100000 para a execução completa do Second-Update, ou python benchmark_bloodtest.py --limit 1000 para iteração rápida. As saídas são enviadas para ./benchmark_results/: um scorecard em CSV com colunas por rótulo de país e por especialidade, um agregado em JSON, uma amostra estratificada-aleatória de respostas brutas e um relatório em Markdown.
As execuções de referência de 23 de abril de 2026 (V11 inicial, 15 casos) e de 26 de abril de 2026 (V11 Second Update, 100,000 casos) são preservadas no results/ diretório do repositório. Uma execução nova produzirá um novo scorecard com timestamp, deixando as execuções de referência intactas. Se a sua execução produzir um resultado significativamente diferente, por favor abra uma issue no GitHub com o timestamp da execução e a versão do mecanismo retornada nos metadados da resposta.
Limitações e trabalhos futuros
Mesmo com 100.000 casos em 127 rótulos de país, quatro limitações merecem reconhecimento explícito: subamostragem de rótulos de cauda longa, avaliação de disparo único, escopo de motor único e origem única dos dados. Cada uma está sendo endereçada em trabalho de acompanhamento ativo.
Cobertura de rótulos de cauda longa. A Segunda Atualização abrange 127 rótulos de país, mas a distribuição é desbalanceada — os 10 principais rótulos respondem por ≈66.4% dos casos, e a cauda longa de 97 rótulos adicionais, juntos, contribui com ≈7.3% (aproximadamente 7.300 casos no total, ~75 casos por rótulo em média). Portanto, os compósitos por rótulo nessa cauda longa são mais ruidosos do que os números de destaque sugerem. As execuções futuras irão rebalancear a atribuição de rótulos para consolidar estimativas por rótulo.
Avaliação de disparo único. Cada caso no conjunto foi avaliado uma única vez. Modelos de linguagem de grande porte exibem variância de saída não trivial mesmo com baixa temperatura de amostragem, então um protocolo com múltiplas execuções, com cinco avaliações por caso e variância reportada, é um próximo passo natural — especialmente no subconjunto de casos-armadilha, onde consistência sob variação de amostragem faz parte da alegação de segurança.
Escopo de um único motor. Este relatório caracteriza um único mecanismo. Análises comparativas contra sistemas de IA alternativos estão fora do escopo aqui; podemos persegui-las como um estudo independente separado com metodologia apropriada, usando o mesmo harness licenciado pela MIT.
Dados sintéticos. Os 100.000 casos são gerados sinteticamente, não são “casos sintéticos”, e os resultados não se transferem para desempenho clínico no mundo real. A avaliação em dados reais, consentidos e provenientes de fontes externas exigiria supervisão ética apropriada e está fora do escopo deste benchmark sintético.
Além dessas quatro, a extensão planejada com maior impacto é a paridade multilíngue por jurisdição. O Kantesti AI Engine atende usuários em 75+ idiomas, e executar subcoortes do Second-Update estratificadas por idioma (turco, alemão, espanhol, francês, italiano, português, árabe, mandarim) quantificará a qualidade das saídas nos idiomas suportados pelo mecanismo. Cada análise estratificada por idioma será publicada com seu próprio DOI e branch do harness.