Он-премис: платформа в контуре заказчика
Ночь 16→17.07.2026 · полная инвентаризация внешних зависимостей трёх репо + ресёрч рынка on-prem healthcare AI. Материал для обсуждения: развилки, а не готовое решение.
Светофор стека: что едет, что менять
Пять блокеров (в порядке боли)
- STT (распознавание речи). Единственный прод-STT — облачный Yandex (для ЕС ещё и юридически сомнителен). Шов для подключения альтернатив есть (интерфейс плагинов, два своих плагина как образец) — готовой локальной реализации нет. Кандидаты: faster-whisper large-v3-turbo, NVIDIA-стек. Блокер общий для «мультиклиники в ЕС» и «он-премиса». разработка
- LLM-калибровка. Шов по URL есть, но всё поведение (промпты, evals, быстрые ветки роутера) откалибровано под конкретную облачную модель. Любой вариант — EU-endpoint или self-host — означает ре-калибровку и прогон evals. работа+риск качества
- TTS для 4 языков. Все продовые TTS — облака; локальные кандидаты (Kokoro/Orpheus/Piper) — es/en есть, телефонное качество проверять ушами. Silero — наша интеграция RU + некоммерческая лицензия. подбор+пилот
- PMS-адаптер ЕС. Booking-путь весь через RU-сервисы; интерфейс CRM-адаптера есть, реализации под их PMS — ноль. Объём не оценить до ответа «какая PMS». неизвестный объём
- Дистрибутив. Сегодня инсталляция = руки+SSH+клон свежего main с github: нет пиновки версий, нет bundle, секреты местами в компоузах, прокси по HTTP. Для он-премиса нужен упакованный, версионированный, подписанный дистрибутив. инженерия поставки → развилка №5
Развилка №4 · Три глубины «он-премиса»: сравнение за 30 секунд
«Он-премис» для заказчика часто значит «данные не в чужом облаке», а не «сервер в подвале клиники». Первое, что выясняем: что им реально нужно. Сначала матрица, ниже — детали.
| Критерий | A EU-cloud | B гибрид | C полный |
|---|---|---|---|
| Время до пилота | недели | 1–2 квартала | кварталы+ |
| «Данные в контуре» буквально | нет (в ЕС, но у нас) | PII — да, текст в LLM — EU-зона | да |
| Качество диалога сегодня | текущее | ≈текущее | зависит от ре-калибровки |
| Стоимость для нас (разработка) | низкая | STT/TTS + маскинг | высокая |
| Стоимость для заказчика | подписка | подписка + немного GPU | CAPEX GPU + maintenance |
| Работа при обрыве интернета | нет | агент нем (нужен failover на людей) | да |
| Наш контроль качества/SLA | полный | совместный | зависит от их железа/сети |
Вся платформа как есть, но на EU-хостинге (местный провайдер заказчика или наш), данные в стране, DPA. Телефония локальная. По сути — переезд + комплаенс-обвязка.
- Быстрее всего до пилота (недели, не кварталы)
- Мы управляем: обновления, инциденты, качество — наш SLA честный
- GDPR-residency закрывается контрактом и регионом
- Экономика облака сохраняется
- Это не «он-премис» в строгом смысле — если требование политическое, не пройдёт
- LLM всё ещё внешний вызов (решается EU-endpoint'ом — см. LLM)
- Заказчик не получает «свою» инсталляцию как актив
Медиа-стек, БД, записи, Langfuse — на железе/в контуре заказчика. LLM — EU-зона (обработка и хранение в ЕС, вне обучения). STT/TTS — локальные.
- PII и аудио не покидают контур; наружу — только маскированный текст в EU-зону
- Не платим GPU-налог за LLM; качество ≈ текущее (модели те же)
- Промпты почти без ре-калибровки
- Типовая схема, которую юристы заказчика уже видели (DPA гиперскейлера)
- Обрыв канала наружу = агент нем на всех линиях страны. Обязателен failover: переадресация на регистратуры у телеком-оператора + место этого сценария в SLA
- Маскирование PII до отправки в LLM надо сделать доказуемым (в трейсах маскинг есть, в LLM-запросах — предмет работы)
- Двойная зона ответственности (наш софт + их сеть + гиперскейлер)
vLLM + открытая модель, локальные STT/TTS, всё на GPU заказчика. Кандидаты моделей — в таблице ниже.
- Аргумент продажи, которого нет ни у одного dental-AI конкурента (все SaaS)
- Полный суверенитет: работает даже без интернета (контраст с B)
- Фиксированная стоимость на объёме (не per-token)
- Ре-калибровка ВСЕГО под открытую модель: промпты, evals, роутер — самый большой скрытый объём
- GPU: ориентир — от 24GB на голосовой пайплайн, для прод-запаса 2×GPU на страну; совокупная стоимость владения ×3–5 на DevOps (оценка по индустрии, не наш замер)
- У сети стоматологий нет MLOps → де-факто «managed on-prem» нашими руками — закладывать в цену и штат
- Version drift: 4 страны × свои окружения — без signed-bundle поставки утонем
- Код и промпты (наш главный актив) физически у заказчика → лицензия, подписанные бандлы, IP-пункты контракта
- Качество open-модели на 4 языках — валидировать ДО подписания обязательств
Моя гипотеза (спорьте): лестница — пилот на A/B, контрактная опция C для тех, кому политически нужно. Тогда локализация STT/TTS (общая для B и C) — первая инвестиция, self-host LLM — отложенная.
Выбор LLM (внутри развилки №4)
| Текущий вендор, EU residency | EU Data Zone гиперскейлера | Self-host открытой модели | |
|---|---|---|---|
| Данные | EU-регион вендора, DPA | обработка+хранение в ЕС, вне обучения | не покидают контур |
| Промпты/evals | без изменений | почти без изменений | полная ре-калибровка |
| 4 языка (es/en/de/ru) | да | да | Qwen3 — наиболее уверенный кандидат по нашему ресёрчу (языки заявлены официально + tool-calling); альтернативы: Mistral Small (Apache 2.0), Gemma 3. Проверять на наших сценариях |
| Tool-calling | vLLM-экосистема зрелая, но тестировать на нашем графе | ||
| Экономика | per-token | per-token | GPU CAPEX; оправдано комплаенсом, не экономией |
Деталь из кода: размерность эмбеддингов зашита в схему БД — смена embedding-модели тянет миграцию векторного индекса. Мелочь, но в смету.
Голосовой стек он-премис (общее для B и C)
Как это продаётся (рынок)
Механика поставки и деньги (детали)
- Норма рынка: connected on-prem (контролируемый выход наружу: обновления, лицензии, bastion для поддержки); строгий air-gap — редкость и дорого.
- Поставка: подписанные бандлы (образы+манифесты, пин версий), локальный registry, staging у заказчика; «pre-validated bundle» (модель+промпты+конфиг тестируются как целое) — защита от «у нас на стенде работало».
- Деньги: лицензия + maintenance 18–22%/год; SLA разделять на «наш софт» и «ваша инфраструктура»; журналируемый удалённый доступ — в контракт, иначе время починки и SLA невозможны.
- IP: код и промпты в контуре заказчика — лицензионные ограничения, запрет форка, аудит использования.
- Наблюдаемость: Langfuse self-host — уже наша практика (ядро MIT); enterprise-фичи (audit log, retention, masking) — платная лицензия, для меддомена может понадобиться.
Развилка №5 · Объединять ли проекты под он-премис
Факт из кода: hub и core сцеплены намертво (hub генерирует .env/compose ядра, знает его структуру каталогов и 35+ admin-ручек), но версионного контракта нет — деплой всегда клонирует свежий main. Voice связан слабее (комнаты LiveKit + соглашение об именах).
- Структура команд и зоны владения (voice/core) не ломаются
- Версионный контракт появляется там, где его нет: релиз = зафиксированная тройка версий + миграции + промпты
- Он-премис получает главное (воспроизводимость) без реорганизации
- Ещё один репозиторий/пайплайн, дисциплина релизов
- Интеграционные тесты тройки нужно строить (их нет)
- Атомарные изменения через границы, один версионный номер
- Проще единый CI и релиз
- Большая миграция процессов ради проблемы, которую решает и вариант A
- Смешение зон ответственности команд; история/CI переезжают болезненно
- Ноль затрат сейчас
- Он-премис без пиновки версий = 4 страны × уникальные «снежинки»-инсталляции; поддержка съест команду
- «У нас на стенде работало» превращается в спор с заказчиком
Моя гипотеза (спорьте): вариант A — дистрибутив без слияния репо; монорепо не решает ничего, чего не решил бы bundle.
Право — минимум, который надо знать до продажи
- AI Act Art. 50 — с 02.08.2026: голосовой бот обязан представляться ботом (голосом) в начале взаимодействия; обязанность на провайдере; штрафы до €15M/3%. Касается любых планов на ЕС уже сейчас.
- Запись звонков (Испания): уведомление-locución в начале; данные здоровья — special category (art.9 GDPR, основание 9(2)(h)); вторичное использование записей — только с явного согласия; практика retention: аудио ≤6 мес.
- DPIA — до запуска (health data в масштабе + новая технология = двойной триггер); у клиник в Испании обязателен DPO.
- Не давать агенту оценивать симптомы/срочность — иначе medical device (MDR) и high-risk категория AI Act.
- Телефония: 902 запрещён для обслуживания в здравоохранении (Ley 11/2022) → 900/geo; geo-DID требуют местного юрадреса; в каждой стране свои правила (пример: Франция — HDS-сертификация хостинга медданных).
- Хостинг медданных — country-by-country чек всех 4 стран до контракта.
Чеклист вопросов заказчику (первая встреча)
- Что для вас «он-премис»: свой ЦОД / серверная / местный EU-провайдер / «не чужое облако»? (Ответ выбирает вариант A/B/C.)
- Допустим ли контролируемый выход наружу (обновления, лицензии, bastion поддержки) или строгий air-gap?
- Какая PMS в клиниках и есть ли к ней API изнутри контура? (Блокер №4.)
- Есть ли GPU/бюджет и кто оперирует (их IT? мы как managed?)
- Языковой микс реальных звонков по странам?
- Пиковая одновременность звонков и режим 24/7? (Сайзинг железа.)
- Кто DPO, кто делает DPIA, в какие сроки?
- Политика записи звонков и retention по каждой стране?
- Телефония: чьи номера, какие операторы, порт существующих номеров?
- Куда эскалируем звонок и что происходит при недоступности агента (failover-маршрут)?
- Канал и каденс обновлений (авто/ручной аппрув/физический перенос)? Staging у заказчика?
- Критерии успеха пилота: клиники, метрики, ответственный со стороны сети.
Риски предложения
- Продать вариант C, не провалидировав открытую LLM на 4 языках — качество диалога = наш главный актив, терять нельзя. Валидация до обязательств.
- Version drift / «снежинки»: 4 страны × свои окружения без signed-bundle = экспоненциальная поддержка.
- Секрет-гигиена перед выносом кода наружу: в репо есть закоммиченные секреты и HTTP-прокси — до передачи заказчику чистить обязательно (/adjustment).
Ещё 7 рисков
- SLA-парадокс: заказчик ждёт SLA как от SaaS, а железо/сеть — его. Разделять SLA в контракте.
- Время починки без доступа: air-gap-ожидания несовместимы с быстрой поддержкой — журналируемый bastion в контракт.
- Кадры заказчика: у сети нет MLOps — реально это managed on-prem нашими руками; закладывать в цену.
- Экономика: полный он-премис дороже облака — цена продаёт комплаенс, не экономию. Не обещать «дешевле».
- Лицензии весов моделей: XTTS мёртв юридически; у turn-detector кастомная лицензия; Silero — некоммерческая. Аудит лицензий всех весов до контракта.
- DPIA-сроки: пилот не стартует до DPIA заказчика — влияет на воронку продажи.
- Расползание функций в сторону мед. триажа — регуляторная мина (MDR/high-risk).
Что уже готово (наши козыри)
- Медиа-стек полностью self-hosted (LiveKit+Asterisk) — не зависит от LiveKit Cloud.
- Langfuse self-hosted с промптами/трейсами/judge — наблюдаемость без облака уже наша практика.
- Изоляция «клиника = контейнер + своя БД» — для он-премиса это фича (данные клиники физически отдельно).
- Швы в коде: LLM по base_url, S3-совместимое хранилище (MinIO уже в стеке), TTS-фабрика со сменными стеками, интерфейс CRM-адаптеров, Telegram через переопределяемый API-base.
- Записи звонков умеют локальный диск как fallback — переезд на MinIO тривиален.
- Мониторинг флота и алерты в hub уже есть.
Связки: мультиклиника — «что продаём», он-премис — «как поставляем»; блокеры №1–3 (STT/LLM/TTS) общие для обеих тем → делать один раз. См. /multyclinic и /adjustment (пререквизиты: секреты, версии, валидатор конфигов).