Почему существует этот бенчмарк и что он проверяет

Анализ крови с помощью ИИ всё чаще используется в потребительских и клинических рабочих процессах, однако воспроизводимые оценочные рамки, адаптированные под лабораторную медицину, остаются редкостью. В этом контексте важны не те вопросы, которые охватываются общими бенчмарками по медицинскому вопросно-ответному поиску: может ли движок отличить железодефицит от талассемии при одинаковом среднем объёме эритроцитов, не ставит ли он чрезмерный диагноз синдрома Жильбера как гепатит и не «конструирует» ли он патологию в полностью нормальной панели скрининга?

Диаграмма потока рубрики с предварительной регистрацией, показывающая, как Kantesti AI Engine оценивается по замороженным критериям выставления баллов
Рисунок 1: Архитектура бенчмарка — каждый случай, каждое ключевое слово, каждая система подсчёта баллов зафиксированы в исходном коде до того, как движок увидит хотя бы один PDF. Настройка рубрики постфактум невозможна по замыслу.

Один анализ крови в виде панели обычно содержит достаточно сигналов, чтобы поддерживать несколько конкурирующих интерпретаций, и задача врача, выполняющего расшифровку, — сопоставить эти интерпретации между собой, а не извлечь «правильный ответ» из учебника. Двигатель, который хорошо справляется с задачами из учебников, всё равно может провалиться на тех случаях, которые важнее всего: на типичных ловушках дифференциальной диагностики, на доброкачественных вариантах, которые по отдельности выглядят тревожно, и на полностью нормальных панелях, которые провоцируют уверенных ассистентов «изобретать» патологию.

Этот бенчмарк был построен именно вокруг таких режимов отказа. Все пятнадцать случаев были отобраны по конкретному диагностическому признаку: железодефицитная микроцитозность, которую нужно отличать от носительства бета-талассемии при одинаковом среднем объёме эритроцитов, клиническая картина синдрома Жильбера, где единственным отклонением является изолированная непрямая гипербилирубинемия, и скрининговая панель из пятнадцати параметров, в которой каждый показатель находится в пределах референсного диапазона. Критерий поощряет двигатели, которые читают каждый случай в его собственных терминах, и штрафует двигатели, которые пытаются поставить уверенный диагноз там, где такой диагноз не обоснован.

Как Томас Кляйн, доктор медицины, я выбрал эту панель случаев, потому что именно эти паттерны чаще всего ошибочно интерпретируют ассистенты в лабораторной медицине. Дорогой режим отказа — это не "пропустить редкое заболевание"; это выдумать рутинную патологию у пациентов, у которых её нет. Наш Медицинская валидация hub описывает более широкую рамку; эта страница описывает его прикладной результат на движке V11.

Последний референсный запуск — V11 (апрель 2026)

Референсный прогон за апрель 2026 года для Kantesti AI Engine V11 дал составной балл 99.12% по предварительно зарегистрированной рубрике из пятнадцати случаев. Оба случая-ловушки гипердиагностики набрали максимум. Индекс Ментцера был применён корректно в дифференциальной диагностике железодефицита и талассемии.

Составной 99.12% 15 из 15 случаев набрали
0.998 Структурный балл
0.998 Клинический балл
20,17 с Средняя задержка
0 / 13 Ложноположительные срабатывания в ловушках

Формула составного балла объединяет три компонента: структурное соответствие с семью обязательными разделами отчёта и шестнадцатью обязательными подразделами, клиническая точность измеряется как полнота по ключевым словам плюс полнота по системе оценивания плюс проверка валидности вероятностного распределения, и задержка ответа относительно целевого показателя первичного сервиса 20 секунд. Точное разложение показано в формуле рубрики ниже.

Составной = 0.35 × Структурный + 0.55 × Клинический + 0.10 × Задержка

Оставшиеся 0,88 процентного пункта «запаса» почти полностью разлагаются на потери из‑за задержки — три резервных вызова Phase 2 с вкладом примерно по 0,60 из дефицита в 0,88 каждый, — а не на клиническое содержание. Движок не упустил правильный диагноз ни в одном из пятнадцати случаев; там, где он не дотянул, это происходило из‑за того, что в небольшой доле вызовов он занимал чуть больше времени, чем целевое значение в 20 секунд для основного пути.

Пятнадцать случаев по семи медицинским специальностям

Панель случаев охватывает семь специальностей — гематологию, эндокринологию, метаболическую медицину, гепатологию, нефрологию, кардиологию, ревматологию — плюс два выделенных случая‑ловушки для гипердиагностики. Каждый случай представляет собой анонимизированную реальную историю болезни пациента, взятую из репозитория клинических данных Kantesti при наличии письменного информированного согласия.

Карта покрытия пятнадцати анонимизированных случаев анализа крови, распределённых по семи медицинским специальностям, плюс случаи ловушек гипердиагностики
Рисунок 2: Распределение случаев по гематологии, эндокринологии, метаболической медицине, гепатологии, нефрологии, кардиологии, ревматологии, плюс два случая‑ловушки — синдром Жильбера и полностью нормальная скрининговая панель.

Деидентификация была выполнена по подходу Safe Harbor: все прямые идентификаторы были удалены или заменены, и каждому набору данных был присвоен внутренний код случая‑бенчмарка в формате BT-NNN-LABEL. Обработка выполнялась в соответствии с GDPR, статья 9(2)(j) для научных исследований с соответствующими мерами предосторожности, а также с эквивалентными положениями UK GDPR. Никакая персонально идентифицирующая информация не встречается нигде в опубликованном стенде, техническом отчёте или выпущенных наборах данных.

Гематология (3) BT-001, BT-006, BT-007 Железодефицитная анемия · дефицит B12 · бета‑талассемия малая
Эндокринология (3) BT-002, BT-008, BT-012 Тиреоидит Хашимото · СПКЯ с инсулинорезистентностью · тяжёлый дефицит витамина D
Метаболическая (2) BT-003, BT-013 СД2 с метаболическим синдромом · гиперурикемия с риском подагры
Гепатология (2) BT-004, BT-009 НАЖБП / НАСГ · острый вирусный гепатит
Нефрология · Кардиология · Ревматология (3) BT-005, BT-010, BT-011 ХБП стадия 3 · атерогенная дислипидемия · системная красная волчанка
Случаи‑ловушки (2) BT-014, BT-015 Синдром Жильбера (изолированная непрямая гипербилирубинемия) · полностью нормальный скрининг у взрослых

Почему именно такое распределение

Гематология получает три кейса, потому что микоцитарные дифференциалы и макроцитарные дифференциалы — это ловушки с наибольшим объёмом в реальной лабораторной практике. Эндокринология получает три, потому что проявления болезни Хашимото, СПКЯ и дефицита витамина D имеют разные диагностические «формы» (обусловленные аутоантителами, обусловленные соотношениями гормонов, обусловленные одним маркером). Специализации с одним кейсом всё равно остаются значимыми, потому что у ХБП, риска ASCVD и СКВ (SLE) есть собственные системы подсчёта, которые движок должен вызывать (стадирование KDIGO, 10-летний риск ASCVD, критерии EULAR/ACR 2019 для СКВ соответственно).

Предварительно зарегистрированная рубрика — объяснение

Предрегистрация — это единственный самый важный методологический выбор в этом бенчмарке. Каждая ожидаемая диагностика, каждая клиническая система скоринга и каждый раздел отчёта были зафиксированы в исходном коде до того, как был вызван движок. Поэтому постфактум «настройка» рубрики, чтобы льстить движку, невозможна.

Три компонента составляют итоговый составной балл. структурный компонент даёт 35 процентов и измеряет, вернул ли движок семь обязательных разделов отчёта (заголовок, сводка, ключевые находки, дифференциал, системы скоринга, рекомендации, последующее наблюдение) и шестнадцать обязательных подразделов внутри них. Наличие раздела оценивается в 40 процентов, а наличие подраздела — в 60 процентов в рамках структурного расчёта.

The клинический компонент даёт 55 процентов и объединяет три вещи: воспроизведение (recall) диагностических ключевых слов (70 процентов клинического подбалла), воспроизведение (recall) системы скоринга (20 процентов — вычисляет ли движок Mentzer, FIB-4, HOMA-IR, риск ASCVD, стадирование KDIGO, критерии EULAR/ACR там, где это уместно), и проверку валидности суммы вероятностей (10 процентов — вероятности в дифференциале должны суммироваться в пределах интервала [90, 110]). Для кейсов-ловушек из результата вычитается явный штраф за гипердиагностику до 0.30, рассчитываемый как 0.10 за каждый сфабрикованный флаг патологии, с ограничением максимум тремя флагами.

The компонент задержки даёт 10 процентов. Ответ менее чем за 20 секунд получает полные 0.10, ответ менее чем за 40 секунд — 0.05, а всё, что медленнее, — ноль. Цель в 20 секунд отражает производственную основную SLA-цель для первичного патентного сервиса; потолок в 40 секунд отражает резерв бюджета для сценария «fallback» на Фазе 2 при тяжёлых вызовах движка.

Конечный снимок экрана бенчмарка Kantesti с лицензией MIT: запуск и выдача баллов по каждому случаю
Рисунок 3: Исполняемый стенд (harness). Каждый кейс рендерится в A4 PDF, отправляется в production endpoint v11 и оценивается по замороженной рубрике. Каждый исходный ответ сохраняется вместе с агрегированной сводной карточкой.

Что предотвращает предрегистрация

Первичные бенчмарки печально известны тем, что раздувают собственные цифры за счёт постфактум настройки рубрики. Шаблон почти всегда один и тот же: команда запускает движок, видит, где он недотягивает, а затем тихо корректирует рубрику так, чтобы недотягивающие области учитывались меньше. Зафиксировав рубрику в исходном коде до первого вызова движка и опубликовав стенд под лицензией MIT, эта корректировка становится видимой в системе контроля версий. Любой может клонировать репозиторий, проверить даты авторства рубрики и убедиться, что результаты движка не использовались для формирования скоринга.

Сценарии ловушки гипердиагностики — почему реальный режим отказа — чрезмерные вызовы

Агрессивное «перекрикивание» патологии на нормальных экранах — задокументированный режим отказа у медицинских ассистентов для потребителей. Его последующие издержки включают ненужные обследования, тревожность пациента и ятрогенную диагностическую проработку. Два кейса-ловушки в этом бенчмарке разработаны так, чтобы сделать этот режим отказа видимым и поддающимся оценке.

Сравнение бок о бок: наивный ИИ «выдумывает» гепатит на панели при синдроме Жильбера против того, как движок Kantesti корректно выявляет доброкачественный полиморфизм UGT1A1
Рисунок 4: Дизайн кейсов-ловушек. Движок, который уверенно маркирует синдром Жильбера как гепатит, или который «изготавливает» пограничную патологию на полностью нормальном экране, получает штраф — а не награду за звучание клинически.

🟡 Ловушка 1 — BT-014-GILBERT

Проявление. Мужчина 24 лет с общим билирубином 2.4 мг/дл. Прямая фракция нормальная, трансаминазы и щелочная фосфатаза находятся в пределах своих референсных диапазонов, ретикулоциты без особенностей, а гаптоглобин и ЛДГ исключают гемолиз.

Правильная интерпретация. Синдром Жильбера — доброкачественный полиморфизм UGT1A1. Интерпретация не должна вызывать гепатит, цирроз, гемолитическую анемию или билиарную обструкцию.

Результат V11. Составной 1.000. Ни один из шести отслеживаемых флагов гипердиагностики не появился как активная диагностика.

🟡 Ловушка 2 — BT-015-HEALTHY

Проявление. Женщина 35 лет с рутинной скрининговой панелью из пятнадцати параметров. Каждый аналит находится вполне комфортно в пределах своего референсного диапазона.

Правильная интерпретация. Успокоение и поддержание здорового образа жизни. Интерпретация не должна «придумывать» пограничную патологию, чтобы звучать клинически полезно.

Результат V11. Композитный показатель 1.000. Ни один из семи отслеживаемых флагов гипердиагностики — диабет, анемия, гипотиреоз, дислипидемия, гепатит, заболевание почек, дефицит — не проявился как активный диагноз.

В обоих «ловушках» были проверены тринадцать отслеживаемых флагов гипердиагностики. Ни один не сработал. Это результат, который важнее всего для любого клинициста, рассматривающего использование ИИ-двигателя как инструмента триажа или предварительной консультации: система не выдумала заболевание там, где его не было.

Индекс Ментцера: разграничение дефицита железа и носительства талассемии

Второе высокозначимое наблюдение касается сочетания случая BT-001 (железодефицитная анемия) с случаем BT-007 (бета-талассемия малая). Оба состояния проявляются микроцитозом и являются хорошо известной «подводной камнем» для наивных классификаторов. Индекс Ментцера, рассчитываемый как MCV, делённый на количество RBC, превышает 13 при железодефиците и опускается ниже 13 при талассемийном признаке.

В BT-001 пациентке было 34 года; гемоглобин 10,4 г/дл, MCV 72,4 фл, RBC 4,1 × 10¹²/л, ферритин 6 нг/мл и повышенный TIBC. Индекс Ментцера примерно 17,7 поддерживает абсолютный железодефицит. В BT-007 пациент — мужчина 28 лет — имел микроцитоз (MCV 65,8 фл), но высокое число RBC 6,2, нормальный RDW, нормальный ферритин и HbA2 5,6 процента. Индекс Ментцера примерно 10,6 указывает на талассемийный признак, а повышенный HbA2 подтверждает бета-талассемию малую.

Железодефицитная анемия Ментцер > 13 Низкий ферритин, низкий TSAT, высокий TIBC, повышенный RDW
Признак бета-талассемии Ментцер < 13 Нормальный ферритин, нормальный RDW, повышенный HbA2 (>3.5%), высокое число RBC

Оба случая набрали 1.000. Двигатель явно использовал индекс Ментцера в обоих интерпретациях и вернул правильный диагноз в каждом случае. Это самый клинически обнадёживающий результат во всём бенчмарке, потому что ошибочная классификация признака талассемии как железодефицита приводит к неуместной терапии препаратами железа и упущенным возможностям обследования членов семьи, а ошибочная классификация железодефицита как талассемии задерживает простую заместительную терапию. Наш руководство по диапазонам ферритина объясняет более широкий дифференциальный контекст.

Результаты по каждому случаю из запуска в апреле 2026 года

Двенадцать из пятнадцати случаев достигли потолка композитного балла 1.000 по первичному пути. Три случая были обработаны через резервный вариант Phase 2, потеряв бонус к задержке 0,05 при сохранении всего клинического и структурного содержания. В одном случае отсутствовал один обязательный подраздел; в одном — сумма вероятностей была снижена лишь незначительно.

Идентификатор случая Специальность Составной Задержка Путь
BT-001-IDAГематология1.00017,8 спервичный
BT-006-B12Гематология1.00018,4 спервичный
BT-007-THALГематология1.00017,0 спервичный
BT-002-HASHЭндокринология0.95037,0 срезервный вариант
BT-008-PCOSЭндокринология0.98718,6 спервичный
BT-003-T2DMМетаболический1.00019,1 спервичный
BT-013-GOUTМетаболический1.00019,4 спервичный
BT-004-NAFLDГепатология1.00019,6 спервичный
BT-009-VIRHEPГепатология0.95023,4 срезервный вариант
BT-014-GILBERTЛовушка1.00018,9 спервичный
BT-005-CKDНефрология1.00017,4 спервичный
BT-010-ASCVDКардиология1.00019,7 спервичный
BT-011-SLEРевматология0.98118,2 спервичный
BT-012-VITDЭндокринология1.00019,3 спервичный
BT-015-HEALTHYЛовушка1.00018,7 срезервный вариант

Дело о СПКЯ (BT-008) потеряло одну обязательную подпосекцию в структуре ответа — пятнадцать из шестнадцати вместо шестнадцати из шестнадцати — из-за чего структурный балл снизился с 1,000 до 0,963. Дело о СКВ (BT-011) вернуло лишь незначительно уменьшенную сумму вероятностного распределения, что снизило клинический балл до 0,965 при сохранении каждого диагностического ключевого слова и системы оценивания. Ни одно из двух случаев с несовершенством не пропустило правильный диагноз.

Что не говорит нам итоговый балл

Композитный балл 99,12 процента по данной конкретной предварительно зарегистрированной рубрике соответствует почти потолочной производительности, но его следует аккуратно интерпретировать. Результат описывает поведение движка по отношению к пятнадцати тщательно подобранным анонимизированным случаям, оцениваемым по одному разу каждый, в рамках одной рубрики. Мы прямо указываем, что это число подтверждает и чего оно не устанавливает.

Балл говорит о том, что движок V11 корректно обработал диагностические паттерны, выбранные для этой оценки, по методологии, которая опубликована и воспроизводима. Он не говорит, что движок корректен для каждой панели анализа крови, которая существует в реальном мире. Он не говорит, что движок должен заменить врачебное суждение. И он не говорит, что движок превосходит альтернативные системы ИИ — сравнительные анализы с другими движками намеренно не входили в рамки этого отчёта.

То, что этот балл действительно устанавливает, — это базовый уровень. Поскольку рубрика и «стенд» публичны, будущие версии движка можно будет оценивать по тем же пятнадцати случаям, а разрыв между опубликованным баллом и любым последующим запуском сам по себе поддаётся измерению. В этом ценность предварительной регистрации: она превращает заявления о производительности в проверяемые утверждения.

Как воспроизвести этот бенчмарк за 10 минут

Для воспроизведения достаточно пары учётных данных API Kantesti и среды Python 3.10 или более поздней с requests и reportlab библиотеками, установленными. Полный «стенд» — это один самодостаточный модуль Python, выпущенный под лицензией MIT.

Схема сети воспроизводимости, показывающая, что бенчмарк зеркально отражён на Figshare, ResearchGate, Academia.edu и GitHub, при этом DOI Figshare выступает как канонический якорь
Рисунок 5: Бенчмарк продублирован на четырёх исследовательских платформах. DOI Figshare — канонический научный идентификатор; ResearchGate, Academia.edu и GitHub размещают параллельные копии с кодом и исходными данными.

Четыре шага для нового запуска

Один. Клонируйте репозиторий: git clone https://github.com/emirhanai/kantesti-blood-test-benchmark.git. Два. Установите зависимости с помощью pip install -r requirements.txt. Три. Задайте KANTESTI_USERNAME и KANTESTI_PASSWORD в качестве переменных окружения — учётные данные считываются во время выполнения, и в скрипте ничего не зашито. Четыре. Запустите python benchmark_bloodtest.py и проверьте четыре артефакта, которые будут выведены в рабочую директорию: CSV scorecard, JSON scorecard, полный JSON-дамп, включая исходные ответы движка, и человекочитаемый отчёт в формате Markdown.

Опорный запуск от 23 апреля 2026 года сохранён в results/ директории репозитория. Новый запуск создаст новый scorecard с временной меткой, не затрагивая опорный запуск. Если ваш запуск даст существенно отличающийся результат, пожалуйста, откройте issue на GitHub с временной меткой запуска и версией движка, указанной в метаданных ответа.

Ограничения и дальнейшая работа

Четыре ограничения требуют явного признания: размер выборки, оценка за один прогон, охват одним движком и происхождение данных из одного источника. Каждое из них прорабатывается в рамках активной последующей работы.

Размер выборки. Пятнадцать случаев по восьми профильным категориям достаточно для доказательства концепции, но недостаточно для анализа подгрупп внутри специальности. Планируется расширение до пятидесяти случаев, которое будет включать панели коагуляции, скрининг гематологических злокачественных новообразований, панели для беременности и педиатрические случаи.

Оценка за один прогон. Каждый случай был оценён один раз. Большие языковые модели демонстрируют заметную вариативность выходных данных даже при низкой температуре выборки, поэтому следующим естественным шагом является протокол с несколькими прогонами: пять оценок на случай и сообщаемая дисперсия.

Охват одним движком. Этот отчёт описывает один движок. Сравнительные анализы с альтернативными ИИ-системами здесь не рассматриваются; возможно, мы займёмся ими как отдельным независимым исследованием с соответствующей методологией.

Происхождение данных из одного источника. Пятнадцать случаев — это анонимизированные реальные истории болезни пациентов, взятые из одного клинического репозитория. Они представляют собой отобранную выборку и не являются случайной выборкой, репрезентативной для популяции. Расширение оценки до данных из нескольких центров находится в планах.

Самое значимое запланированное расширение — паритет по языкам. AI Engine Kantesti обслуживает пользователей на 75+ языках, и запуск одного и того же стенда из пятнадцати случаев на турецком, немецком, испанском, французском и арабском позволит количественно оценить качество выходных данных на поддерживаемых движком языках. Мы опубликуем каждый языковой запуск со своим DOI и веткой стенда.