为什么需要这个基准测试,以及它测试什么
AI辅助的血液检查解读在消费端与临床工作流程中正被越来越多地使用,但针对实验室医学、可复现的评估框架仍然较为少见。在这种场景下最关键的问题并不包含在通用医学问答基准中: 当平均红细胞体积相同的情况下,某个引擎能否将缺铁与地中海贫血携带状态区分开?它会不会把吉尔伯特综合征误诊为肝炎?它是否会在一份完全正常的筛查面板中“编造”病理结果?
一份单独的血液检测面板通常包含足够的信号来支持多种相互竞争的解读,而解读临床医生的工作并不是去检索教科书式的标准答案,而是要在这些解读之间进行权衡。一台在教科书案例上表现出色的引擎,仍可能在最关键的病例上失败:包括鉴别诊断中的常见陷阱、那些在单独看时看起来令人警惕但本质良性的变异,以及那些完全正常的面板——它们会诱使自信的助手去“编造”病理结果。.
这个基准正是围绕这些失败模式构建的。15 个案例中的每一个都被选中以体现某种特定的诊断特性:一种缺铁性小细胞性贫血,必须与具有相同平均红细胞体积(MCV)的β地中海贫血(β-地贫)携带者特征区分开;一种吉尔伯特综合征的表现,其中唯一异常是孤立的间接胆红素升高;以及一个15 项参数的筛查面板——每一种分析指标都位于其参考范围之内。评分规则奖励能够按各自情境解读每个案例的引擎,并惩罚那些在并不适用该诊断的情况下仍给出“自信诊断”的引擎。.
作为 Thomas Klein,MD,我选择这个案例面板,因为这些是实验室医学领域的助手最常弄错的模式。. 昂贵的失败模式并不是"漏掉一种罕见疾病"——而是在那些并没有该疾病的患者身上编造常规病理。. 我们的 医学验证 hub描述了更广泛的框架;本页描述V11首次概念验证以及V11第二次更新如何将其扩展到10万例合成案例,这些案例来自一个覆盖127个国家标签的合成案例集——使用相同的评分量表、字节级一致,并且不允许进行事后调整。.
最新参考运行——V11 第二次更新(2026 年 4 月 26 日)
2026 年 4 月 26 日的 V11 第二次更新参考运行产生了一个综合评分: 99.80% 基于与 V11 初始发布相同的预先注册评分量表进行评估, 10万例合成案例 来自Kantesti合成案例集,并覆盖 127 个国家标签 和 75+ 语言。每个病例都在引擎的主要路径上完成;陷阱病例的超诊断(hyperdiagnosis)标志触发保持在 0 / 87,412. 。2026 年 4 月 23 日的原始 V11 运行覆盖了 15 个人工策划病例(综合 99.12%),并验证了该评分量表;第二次更新保持该量表在字节层面完全一致,并将评估扩展到人群规模队列。.
综合公式由三个部分组成: 结构符合度 与7个强制报告部分以及16个强制子部分,, 内容准确性 以关键词召回率 + 评分系统召回率 + 概率分布有效性校验来衡量,以及 响应延迟 达到主要路径的服务级目标。精确拆分见下方评分量表公式——第二次更新中未更改任何这些权重或子量表。.
剩余的 0.20 个百分点余量几乎全部分解到临床子评分中——少量病例(主要在肝病学与风湿病学)存在一种预期的评分系统关键词未出现在引擎的解读中,尽管诊断内容是正确的。. 在 100,000 例第二次更新队列中,没有任何病例漏掉了诊断本身。. 延迟从 V11 初始发布的平均 20.17 s 降至第二次更新的 13.26 s,反映了两次运行之间的生产引擎优化;评分量表、评分代码以及 API 端点均未改变。.
各标签的综合得分范围为 0.9971 至 0.9985,覆盖出现频率最高的 30 个国家标签。其余 97 个标签构成的长尾(合计约 7,300 个用例)未显示系统性退化。按用例数量计,出现最频繁的标签是:美国(10,500)、巴西(9,500)、西班牙(9,000)、意大利(8,000)、德国(7,800)、法国(7,400)、葡萄牙(5,800)、Türkiye(3,400)、英国(2,900)和墨西哥(2,500)。.
从15例到10万例:跨127个国家标签的队列演进
原始V11案例面板涵盖七个专科——血液学、内分泌学、代谢医学、肝病学、肾脏病学、心脏病学、风湿病学——以及两个专门的超诊断陷阱案例;每个案例均为合成生成的血液检测面板。V11第二次更新将评估扩展到 覆盖127个国家标签的10万例合成案例, ,分布在八个专科中(原七个加上一个专门的内科桶,用于吸收陷阱子集)。两次运行中均以相同的评分量表在字节层面完全一致地应用。.
因为所有案例都是合成生成的,所以没有真实标识符需要移除,也不涉及任何个人数据。每个合成案例都携带一个基准测试框架内部的案例代码(在V11首次集合中为BT-NNN-LABEL,第二次更新中为稳定的 case_uid )。在已发布的测试框架、技术报告或已发布的数据集中,任何地方都不会出现个人数据。.
V11 初始发布——15 个人工策划病例
原始V11病例面板由Thomas Klein博士手工精心挑选,旨在涵盖实验室医学助理最常出错的诊断模式。以下列出了15个病例各自被选中的特定诊断属性。.
为什么是这种特定分布
血液学之所以有三个案例,是因为在真实世界的实验室实践中,小细胞性鉴别诊断和大细胞性鉴别诊断是最高频的“陷阱”。内分泌学也有三个案例,因为甲状腺炎(Hashimoto)、多囊卵巢综合征(PCOS)以及维生素D缺乏的表现形式会呈现出不同的诊断形态(由自身抗体驱动、由激素比例驱动、由单一标志物驱动)。单一案例的专科仍然有意义,因为慢性肾脏病(CKD)、动脉粥样硬化性心血管疾病(ASCVD)风险以及系统性红斑狼疮(SLE)各自都有独立的评分体系,模型引擎应当调用(分别为KDIGO分期、ASCVD 10年风险、以及2019年EULAR/ACR SLE标准)。.
V11第二次更新——覆盖127个国家标签的10万例合成案例
第二次更新用一个更大的、通过程序生成的合成案例集,替换了原始V11中硬编码的15例Python字面量。案例集在每次运行开始时加载,并记录配置以便透明。下方展示了按内容领域划分的队列分布。.
合成国家标签分布——前 10 个标签
这 100,000 个合成用例携带 127 个国家标签(ISO 3166-1 alpha-2),用于测试地区/语言环境(locale)处理能力。标签分配:欧洲 57.7%, 美洲 25.4%, 亚太 6.2%, 命名的中东/非洲标签 3.4%,以及其余 97 个标签构成的长尾合计约 7.3%。按用例数量计,出现最频繁的十个标签是:美国(10,500)、巴西(9,500)、西班牙(9,000)、意大利(8,000)、德国(7,800)、法国(7,400)、葡萄牙(5,800)、Türkiye(3,400)、英国(2,900)和墨西哥(2,500)。各标签的综合得分范围为 0.9971 至 0.9985。这些标签计数是用于测试地区/语言环境处理的生成用例的属性——它们并非真实用户,也不代表真实世界的地理覆盖范围。.
预先注册的评分规则:解析
预注册(pre-registration)是本基准中最重要的的方法学选择。每一个预期诊断、每一个临床评分系统,以及每一个报告部分,都在调用引擎之前被提交到源代码中 之后. 。因此,为了迎合引擎而对评分量表(rubric)进行事后微调是不可能的。.
复合总分由三个部分构成。结构部分 贡献35%,并衡量引擎是否返回了七个强制报告部分(页眉、摘要、关键发现、鉴别诊断、评分系统、建议、随访)以及其中的十六个强制子部分。在结构计算中,章节存在性占40%,子章节存在性占60%。 contributes 35 percent and measures whether the engine returned the seven mandatory report sections (header, summary, key findings, differential, scoring systems, recommendations, follow-up) and the sixteen mandatory subsections within them. Section presence weighs 40 percent and subsection presence weighs 60 percent within the structural calculation.
这 临床部分 贡献55%,并将三项内容合并:诊断关键词回忆(占临床子分的70%)、评分系统回忆(20%——在相关情况下,引擎是否计算Mentzer、FIB-4、HOMA-IR、ASCVD风险、KDIGO分期、EULAR/ACR标准),以及概率求和有效性校验(10%——鉴别诊断的概率之和应落在[90, 110]区间内)。对于陷阱案例,会额外减去最高0.30的显式过度诊断惩罚,计算方式为每个伪造的病理标记扣0.10,最多不超过三个标记。.
这 延迟部分 贡献10%。响应在20秒以内得满分0.10,40秒以内得0.05,超过则得0分。20秒目标反映生产环境的主要路径服务级目标;40秒上限反映第2阶段对重引擎调用的备用预算。.
预注册所能阻止的事情
第一方基准(first-party benchmarks)以通过事后对评分量表进行微调来“抬高”自身数字而臭名昭著。其模式几乎总是相同:团队运行引擎,看到哪里表现不足,然后悄悄调整评分量表,让表现不佳的部分权重更低。通过在第一次调用引擎之前将评分量表提交到源代码,并以MIT许可证发布测试框架,这种调整就会在版本控制中变得可见。任何人都可以克隆仓库,查看评分量表作者日期,并验证引擎结果没有被用来塑造评分。.
过度诊断陷阱病例——为什么“过度报高”才是真正的失败模式
在正常筛查结果上对病理进行激进“过度判定”是面向消费者的医疗助手中已被记录的一种失败模式。其下游成本包括不必要的检查、患者焦虑以及医源性检查流程。该基准中的两个陷阱案例被设计用来让这种失败模式变得可见且可量化评分。.
🟡 陷阱1 — BT-014-GILBERT
病例呈现。. 一名24岁男性,总胆红素为2.4 mg/dL。直接胆红素分级正常,转氨酶和碱性磷酸酶位于各自参考范围内,网织红细胞无显著异常,结合珠蛋白和LDH排除溶血。.
正确解读。. 吉尔伯特综合征——一种良性的UGT1A1多态性。解读不应涉及肝炎、肝硬化、溶血性贫血或胆道梗阻。.
V11结果。. 复合得分1.000。六个被监测的过度诊断标记中,没有任何一个以活动诊断的形式出现。.
🟡 陷阱2 — BT-015-HEALTHY
病例呈现。. 一名35岁女性,常规筛查面板包含十五个参数。每一项分析指标都舒适地落在其参考范围内。.
正确解读。. 安心与生活方式维护。解读不应为了听起来在临床上“有用”而人为编造临界性病理。.
V11结果。. 复合评分 1.000。被监测的七个过度诊断警示——糖尿病、贫血、甲状腺功能减退、血脂异常、肝炎、肾脏疾病、缺乏——均未作为活动性诊断出现。.
在两个陷阱中,共检查了十三个被监测的高估诊断警示。均未触发。这是对任何考虑使用AI引擎作为分诊或就诊前工具的临床医生而言最重要的结果: 系统并未在不存在疾病的情况下编造疾病.
Mentzer指数:区分缺铁性贫血与地中海贫血携带特征
第二个高价值发现涉及病例 BT-001(缺铁性贫血)与病例 BT-007(轻型β地中海贫血)的配对。两者都表现为小细胞性改变,这是对初学分类器而言的常见绊脚石。Mentzer 指数按 MCV 除以 RBC 计,缺铁性贫血中该指数超过 13,而地中海贫血性状中则低于 13。.
在 BT-001 中,患者为34岁女性,血红蛋白 10.4 g/dL,MCV 72.4 fL,RBC 4.1 × 10¹²/L,铁蛋白 6 ng/mL,且 TIBC 升高。约 17.7 的 Mentzer 指数支持绝对缺铁。在 BT-007 中,患者为28岁男性,存在小细胞性改变(MCV 65.8 fL),但 RBC 计数高达 6.2,RDW 正常,铁蛋白正常,HbA2 为 5.6%。约 10.6 的 Mentzer 指数指向地中海贫血性状,而升高的 HbA2 证实为轻型β地中海贫血。.
两个病例的评分均为 1.000。引擎在两次解读中都明确调用了 Mentzer 指数,并在每个实例中给出了正确诊断。. 这是整个基准测试中最具临床安心感的单一结果, ,因为将地中海贫血性状误判为缺铁会导致不恰当的补铁,并错过家族筛查机会;而将缺铁性贫血误判为地中海贫血会延误直接的替代治疗。我们的 铁蛋白范围指南 解释了更广泛的鉴别诊断背景。.
来自V11初始参考运行的逐例结果(2026年4月23日)
原始V11参考运行基于15例概念验证队列,其作为 第二次更新的方法学基础:下文每个逐例细节都展示了评分规则如何处理真实的引擎响应。在主路径上,15例中的12例达到了1.000的最高综合评分;3例通过第二阶段的后备方案提供,失去了0.05的延迟奖励,但保留了所有临床与结构内容。1例缺少一个单一的必需小节;1例返回了略微降低的概率分布总和。 of the Second Update: every per-case detail below illustrates how the rubric handles a real engine response. Twelve of fifteen cases achieved the ceiling composite score of 1.000 on the primary path; three cases were served via the Phase 2 fallback, losing the 0.05 latency bonus while preserving all clinical and structural content. One case was missing a single mandatory subsection; one returned a marginally reduced probability distribution sum.
该多囊卵巢综合征(PCOS)案例(BT-008)在响应结构中丢失了一个强制性小节——从“十六个中的十五个”变为“十六个中的十六个”——这使结构得分从 1.000 降至 0.963。系统性红斑狼疮(SLE)案例(BT-011)返回了一个边际降低的概率分布求和结果,使临床得分降至 0.965,同时保留了每一个诊断关键词和评分体系。两个未达满分的案例都没有漏掉正确诊断。.
V11第二次更新汇总——10万例
在规模化人群层面,单个用例行不可读,因此第二次更新报告的是汇总指标,而不是包含 100,000 行的表格。下面展示主要汇总结果;各专科及各国家标签的细分在技术报告和 Figshare 存档中发布。分层随机抽样的 n = 201 原始引擎响应(确定性种子 20260426)会发布在GitHub results/ 目录中供检查。.
标题评分并不能告诉我们的内容
在这个特定的预先注册评分量表下,针对覆盖127个国家标签的10万例合成队列获得99.80%的综合得分,代表接近天花板的表现——但仍需要进行谨慎的界定。该结果描述的是引擎在V11中我们承诺写入源代码的评分量表下的行为;它并不是对现实世界中存在的每一个血液检测面板的普遍正确性所作的通用主张。.
该得分表明,引擎在该评估所选取的诊断模式上,能够在面向人群规模的队列中正确处理;所采用的方法学已发布且可复现。它并不表示引擎对现实世界中存在的每一项血液检查面板都一定是正确的。它也不表示引擎应当取代临床医生的判断。也不表示引擎优于其他替代的 AI 系统——本报告对与其他引擎的对比分析刻意不在范围内。.
该得分真正确立的是一个基线。随着评分规则和测试框架(harness)公开,未来版本的引擎可以在同一评分规则下进行评估——应用于 V11 初始的 15 例、第二次更新的 100,000 例队列,或任何后续扩展——而已发布得分与任何后续运行之间的差距本身就是可衡量的。这就是预先注册的价值: 它将性能主张转化为可检验的主张.
如何在10分钟内复现该基准
复现只需要一组 Kantesti API 凭证,以及一个包含以下条件的 Python 3.10 或更高版本环境: requests 和 reportlab 已安装这些库。完整的测试框架是一个在 MIT 许可下发布的单一、独立的 Python 模块。.
重新运行的四个步骤
第一步。. 克隆仓库: git clone https://github.com/emirhanai/kantesti-blood-test-benchmark.git. 第二步。. 使用以下命令安装依赖项: pip install -r requirements.txt (第二次更新增加 mysql-connector-python ≥ 8.0 用于 SQL 案例加载器)。. 三。. 设置 KANTESTI_USERNAME 和 KANTESTI_PASSWORD 作为引擎 API 的环境变量。对于第二次更新的 SQL 案例加载器,还需设置 KANTESTI_DB_HOST, KANTESTI_DB_PORT, KANTESTI_DB_NAME, KANTESTI_DB_USER, 和 KANTESTI_DB_PASSWORD — 加载器通过只读角色连接(bench_reader)该角色对识别表没有任何权限。. 四。. 运行 python benchmark_bloodtest.py --limit 100000 用于完整的 Second-Update 运行,或 python benchmark_bloodtest.py --limit 1000 用于快速迭代。输出将落在 ./benchmark_results/:一个包含按国家标签与专科列的 CSV 评分卡、一个 JSON 汇总、一个分层随机的原始响应样本,以及一份 Markdown 报告。.
2026 年 4 月 23 日的基准运行(V11 初始,15 个病例)以及 2026 年 4 月 26 日的基准运行(V11 Second Update,100,000 个病例)被保存在仓库的 results/ 目录中。新的运行将生成一个新的带时间戳的评分卡,同时不会更改基准运行。如果你的运行产生了显著不同的结果,请在 GitHub 上提交 issue,并附上运行时间戳以及响应元数据中返回的引擎版本。.
局限性与未来工作
即使在 127 个国家标签下的 100,000 个用例中,仍有四项限制值得明确承认:长尾标签的抽样不足、单次评估、单引擎范围以及单一数据来源的来源性。上述问题正在进行中的后续工作中被逐一处理。.
长尾标签覆盖。. 第二次更新覆盖 127 个国家标签,但分布不均衡——前 10 个标签占据了约 66.4% 的用例,而其余 97 个标签的长尾合计贡献约 7.3%(合计约 7,300 个用例,平均每个标签约 75 个用例)。因此,这些长尾中的各标签综合得分比标题数据所暗示的更嘈杂。未来的运行将重新平衡标签分配,以巩固各标签估计。.
单次评估。. 该队列中的每个病例仅评估一次。即使在较低的采样温度下,大语言模型也会表现出不可忽视的输出方差,因此采用多次运行协议——每个病例进行五次评估并报告方差——是自然的下一步,尤其是在陷阱病例子集上;在该子集中,采样抖动下的一致性是安全性主张的一部分。.
单引擎范围。. 本报告刻画的是一个引擎。与其他替代 AI 系统的比较分析不在此范围内;我们可能会在同一套 MIT 许可的测试框架下,使用合适的方法学,将其作为一项独立研究另行开展。.
合成数据。. 这10万例是合成生成的,而不是“合成案例”,且结果不能迁移到真实世界的临床表现。在真实的、获得同意的、外部来源数据上进行评估将需要适当的伦理监督,并且不在此合成基准的范围之内。.
除上述四点外,最具影响力的计划扩展是按司法辖区实现多语言一致性。Kantesti AI 引擎为 75+ 种语言的用户提供服务;运行按语言分层的 Second-Update 子队列(土耳其语、德语、西班牙语、法语、意大利语、葡萄牙语、阿拉伯语、普通话)将量化引擎支持语言范围内的输出质量。每个按语言分层的分析将以各自的 DOI 和测试框架分支发布。.