← На главнуюEnglish

Кейс · Демо на синтетических данных

MedRecall — память врача о звонках пациента

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

Моя роль
Продукт, привязка ответов к источнику, архитектура и разработка
Статус
Публичное демо на синтетических данных с сентября 2026
Формат
Веб-приложение

Задача

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

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

Объём первой версии

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

Что сделано

  1. ГраницыВопрос ограничен выбранным пациентом и, если выбран, одним звонком. Поиска по нескольким пациентам нет.
  2. ПоискИщутся только расшифровки этого пациента; каждое доказательство — реплика со спикером и временем начала и конца.
  3. ОтветМодель отвечает только по найденным репликам, ссылается на них и прямо говорит, если ответа в звонках нет. Ставить диагнозы и давать советы ей запрещено.
  4. Проверка ссылокДо показа сервер проверяет, что каждая ссылка относится к нужному пациенту и звонку и к репликам, найденным для этого вопроса.
  5. ДоказательствоКлик по ссылке открывает реплику в контексте и запускает запись с этого момента.

Сводка по пациенту на первом экране подготовлена заранее и проверена по хешам — это не живая генерация: формат виден сразу, без риска показать выдуманный факт.

Моя роль

Сделано мной
Продуктовая постановка, модель доказательств, поиск и проверка ссылок, API и интерфейс, синтетический датасет, развёртывание и эксплуатация.
С AI-агентами
Реализация — с AI-агентами по моим решениям; ревью кода, тесты и релизы — мои.
Медицинская экспертиза
Сценарий сложился в обсуждениях с практикующим врачом.

Ключевые решения

Два пациента по два звонка
Одна длинная история показала бы память, но не изоляцию. Два пациента показывают и то, как факты меняются со временем, и то, что в ответ никогда не попадают данные другого пациента.
Ссылки проверяет сервер, а не модель
Модель ссылается короткими метками; сервер сопоставляет их со списком найденных для запроса реплик и отклоняет всё, что выходит за пациента, звонок или выборку.
Источник — целая реплика
Ответ ссылается на целую реплику со спикером и временем, а не произвольный кусок текста: врач всегда видит, кто это сказал, и может послушать.
Платная модель с жёсткими лимитами
Когда бесплатный доступ к модели перестал отвечать, демо перешло на платный — с ограничением цены, длины ответа и размера промпта. Резервная модель подготовлена, но выключена: на смысловой проверке она приводила приветствия как доказательство того, что факта нет.

Проверка

  • Проверка поиска нашла верные доказательства для 19 из 19 тестовых вопросов — без результатов по другому пациенту.
  • В сравнении моделей 6 из 6 ответов пришли с корректными ссылками.
  • Более 100 тестов бэкенда и десятки тестов фронтенда и развёртывания.
  • Браузерные проверки рабочего демо на компьютере и телефоне: каждая ссылка открывает нужную реплику и момент записи.

Статус

Публичное демо работает на medrecall.inin.ceo с сентября 2026 года как отдельный небольшой сервис. Отдельная пилотная версия для реальных записей в разработке; с реальными данными пациентов она не использовалась.

Технологии

Фронтенд
Nuxt, Vue, TypeScript
API
Python, FastAPI, потоковый вывод (SSE)
Поиск
Нарезка LlamaIndex, эмбеддинги bge-m3, небольшой файловый индекс по каждому пациенту
AI
Один потоковый вызов LLM через OpenRouter на вопрос, с лимитами цены и размера
Данные
Синтетические звонки как реплики со спикером и временем; каталог с проверкой хешей
Инфраструктура
Docker Compose, контейнеры только для чтения с жёсткими лимитами памяти

Обсудим похожую задачу?

Напишите на почту или в Telegram — расскажу подробнее о любом решении из этого кейса.