Для технических специалистов

Что внутри: устройство платформы

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

Как это устроено

Слева входит обращение, справа выходит результат. Всё, что между, — это ядро: приём, разбор, проверка и модуль под конкретную задачу.

Откуда приходит

Мессенджерытекст, голосовые, фотографии
Почтаваш ящик, входящие и папки
Сайтчат, формы, виджет
Ваши системысобытия по вебхуку

Ядро

Приём и очередьодно сообщение — одна обработка, повторы отсекаются
Разбор: правила + модельправила решают, модель понимает язык
Проверка полноты и правчего не хватает — спрашиваем; чего нельзя — не делаем
Модуль под задачу108 готовых в девяти направлениях

Что выходит

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

Как устроен один цикл работы

Помощник не «отвечает на сообщения». Он ведёт разговор к проверяемому результату и останавливается, когда упирается.

1
Обращение

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

2
Разбор

Извлекаются позиции, объёмы, сроки, контакты — по правилам вашей предметной области, а не общими фразами.

3
Проверка полноты

Чего не хватает — то и спрашивается, по одному вопросу. Обязательные поля пропустить нельзя.

4
Подтверждение человеком на той стороне

Итог показывается клиенту его же словами: «всё верно?». Только после согласия заявка уходит дальше.

5
Передача ответственному

Готовая карточка сотруднику — со всем, что собрано, и с пометками, что осталось уточнить.

6
Остановка, если не получается

Разговор встал — он не теряется: передаётся человеку с тем, что успели собрать. Молча похоронить обращение система не может.

Что делает машина, а что остаётся человеку

Граница проходит не по сложности задачи, а по цене ошибки. Там, где ошибка дорогая, решение принимает человек — даже если машина справилась бы быстрее.

Машина делает сама

  • Принимает обращения и собирает из них заявку по вашей форме
  • Разбирает голосовые сообщения и текст с фотографий
  • Проверяет полноту: без обязательных полей заявка дальше не идёт
  • Отвечает по вашей базе знаний — и только по ней
  • Следит за сроками и напоминает ответственным
  • Готовит проекты писем и документов

Решает человек

  • Цены и условия сделки
  • Отправка письма клиенту — только после подтверждения
  • Всё, что меняет обязательства перед клиентом
  • Спорные и нестандартные обращения
  • Изменения на работающем контуре

Почему помощник не выдумывает

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

Отвечает по вашей базе знаний и только по ней

Под вопрос подбирается нужный кусок ваших материалов и подставляется в запрос. Чего в базе нет — того в ответе не будет: помощник говорит «не знаю» и передаёт человеку. Это скучный ответ, но он честный.

Ответ модели проверяется кодом

Там, где модель раскладывает фразу человека на пункты, её результат принимается только если каждое значимое слово осталось из его же фразы. Не сошлось или не ответила за шесть секунд — берётся результат правил. Модель предлагает, решает код.

Запреты живут вне модели

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

Короткий контекст вместо «загрузим всё»

В запрос кладётся одна–три тысячи токенов отобранного, а не вся база целиком. Меньше материала для фантазии, дешевле и в разы быстрее — почему именно быстрее, видно в разделе про скорость.

Разговоры вычитываются каждый день

Отдельная проверка читает вчерашние диалоги и сверяет с правилами: не назвал ли помощник цену, не повторил ли вопрос, не принял ли продавца за покупателя, не завис ли клиент без ответа. Замечаний нет — молчит.

И честно: полностью исключить нельзя

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

Где что выполняется

Три варианта размещения. Выбор зависит от требований к данным, а не от размера компании.

Наша площадка

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

Ваш сервер

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

Полная изоляция

Без выхода в интернет вообще. Установка с носителя, модель поставляется вместе с дистрибутивом, право на использование проверяется подписью офлайн — лицензионный сервер наружу не нужен.

Про модели

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

Что нужно от сервера

Вариант
Ориентир по железу
Ядро платформы, модель облачная
2 ядра, 4 ГБ памяти, 20 ГБ диска. Наш собственный боевой контур живёт на двух ядрах и двух гигабайтах.
Локальная модель, малая
Видеокарта 8–12 ГБ. Без видеокарты тоже работает, но заметно медленнее.
Локальная модель, большая
24 ГБ видеопамяти — и всё равно с оглядкой на длину запроса, см. ниже.

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

Скорость: откуда берутся «десять секунд»

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

Запрос разбирается до того, как попадёт в модель

1
Разбор обращения

Что спрашивают, к какой задаче относится, всё ли нужное уже названо. Это делают правила, не модель, — быстро и одинаково каждый раз.

2
Отсев: до модели доходит не всё

Типовые обращения закрываются справочником, шаблоном или готовым ответом. Модель для них не нужна — а это самая дорогая часть по времени.

3
Отбор материала

Если модель нужна, ей отдают не всю базу знаний, а найденный под вопрос кусок: одна–три тысячи токенов вместо тридцати. Общая часть запроса кешируется и не пересчитывается.

4
Разбиение сложного на короткое

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

Замеры на нашем стенде — одна видеокарта на 24 ГБ

Что происходит
Сколько занимает
Ответ без модели: правила, справочник, готовый шаблон
миллисекунды
Малая модель, уже в памяти
0,07–0,10 с целиком; первый символ через 0,014 с
Большая модель, уже в памяти
0,8–1,7 с
Первый запрос после простоя — модель выгрузили из памяти
3–13 с у малой, 31–65 с у большой
Каждая лишняя тысяча токенов на входе
примерно +0,175 с; у большой модели рост обвальный — на восьми тысячах уже минуты, дальше отказ
Вывод, который стоит проверить у себя: «думает десять секунд» — это почти всегда либо холодный старт, либо раздутый запрос, а не слабое железо. Лечится тем, что модель держат в памяти постоянно, в запрос кладут одну–три тысячи токенов отобранного вместо тридцати, общую часть кешируют, а типовые обращения до модели вообще не доводят. У нас такой отбор сделан — поэтому есть что показать замерами, а не словами. Ваши абсолютные цифры будут другими, соотношения — те же.

Данные и безопасность

Без иллюзий и без запугивания: что храним, где, что уходит наружу и чего у нас нет.

Что хранится

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

Срок хранения ограничен и настраивается. Телефоны в теле сообщений маскируются в журнале.

Где лежит

В вашем контуре — на вашем сервере, наружу не уходит ничего. На нашей площадке — в России, на технике, к которой есть доступ только у нас.

Резервные копии делаются ежедневно и складываются отдельно от рабочего сервера.

Что уходит наружу — и что не уходит никогда

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

Доступы

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

Правовая часть

Свидетельство о государственной регистрации программы № 2026668970. Заявление на включение в реестр отечественного ПО № 375145 — на рассмотрении. Разработчик — ИП в реестре операторов персональных данных.

Чего у нас нет

Аттестации ФСТЭК, сертификации по государственным стандартам защиты, формального соглашения об уровне сервиса с санкциями. Если у вас это обязательное требование — скажите на первом разговоре, мы его не закрываем и не будем делать вид.

Где внешнее облако — плохой выбор

Мы сами предлагаем облачный вариант, поэтому скажем прямо, где он не годится. Граница проходит не по «секретности», а по тому, чем вы отвечаете, если данные окажутся не там.

Внутренняя работа компании

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

Работа с клиентами

  • Переписка и заявки содержат персональные данные, и перед клиентом за них отвечаете вы, а не сервис
  • Передача третьей стороне требует основания — и обязанность объяснить её тоже ваша
  • Клиент вправе потребовать удалить свои данные: вы должны суметь сделать это везде, а не только у себя
  • Утечка на стороне сервиса становится вашей репутационной проблемой — извиняться перед клиентом будете вы
Где облако нормально: открытые материалы, витрина, ответы на типовые вопросы по опубликованным документам, черновики. Правило простое: чем ближе данные к деньгам и к людям, тем ближе они должны быть к вашему контуру. Промежуточный вариант — российские модели по договору, когда данные не покидают страну; крайний — закрытый контур, где не покидают и здание.

Стыковка с вашими системами

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

Подключается штатно

  • Мессенджеры — приём и ответ, включая голосовые и фотографии
  • Почта — ваш ящик по стандартным протоколам, входящие и папки
  • Чат на сайте и виджет — в вашу вёрстку, отдельным файлом
  • Ваши системы — события забираются и отдаются по вебхукам
  • Наш API — чтобы вы могли ходить к данным сами

Требует работы проекта

  • Учётные системы: 1С — через её служебный интерфейс OData; остальное — через ваш API
  • Разграничение прав на стороне вашей системы: кто что видит и что может менять
  • Сопоставление справочников: ваша номенклатура редко совпадает с тем, как её называют клиенты
  • База знаний: собрать и поддерживать — это не разовая загрузка

Чего не умеем — говорим сразу

  • Искать кандидатов на работных сайтах «из коробки»: публичный доступ к их базам вакансий закрыт, работаем только через ваш доступ работодателя. Кто обещает иначе — либо не пробовал, либо лукавит
  • Заменять учётную систему или CRM: мы приносим в них данные, а не ведём учёт вместо них
  • Принимать решения с деньгами: не платим, не подписываем, не даём скидок
  • Работать по принципу «подключите и забудьте»: база знаний живая, и если её не поддерживать, к третьему месяцу она разойдётся с реальностью

Что это значит для сроков

  • Каналы и типовой модуль — дни
  • Стыковка с учётной системой — недели, и срок зависит от того, как быстро дадут доступ
  • Отраслевые правила разбора — считаются отдельно, по вашим примерам обращений
  • Оценка даётся после разбора процесса, а не по телефону

Протоколы и форматы

Что стыкуется
Чем
Сообщения каналов, входящие и исходящие
HTTPS, вебхуки в обе стороны
Почта
IMAP и SMTP вашего ящика, соединение шифруется
Календарь
CalDAV
Учётные системы
HTTP и JSON; для 1С — её служебный интерфейс OData
Наш интерфейс наружу
HTTP и JSON, ключ доступа в заголовке запроса
Виджет на ваш сайт
один файл скрипта, без загрузки чего-либо со стороны
Переписка и журналы
построчный JSON — одна запись в строке; читается обычными средствами, без нашей программы
Выгрузка «всё моё»
те же файлы целиком, забираются без нашего участия

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

Как запрос превращается в работающий контур

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

Путь задачи и что закрывает каждый переход

Задача от заказчикарассказал своими словами
1
Договорились, что делаемобсудили, спорное отсекли
2
Разложили на задачирешили, как делать
3
Собрали и проверилисделали и написали проверки
4
Принялисверили с критериями
Переход 1 — записанозапрос словами заказчикакто заказчик
Переход 2 — записаноцель, а не пересказ просьбыкритерии приёмки, проверяемыеот чего отказались и почемузаказчик подтвердил
Переход 3 — записанота же цель, слово в словоте же критерии и отказысписок задач
Переход 4 — записаночто измененокакие проверки написаныкакие из них прошли
Переход не закрыт — движения дальше нет, возврат на шаг назад с названной причиной. Молча пропустить нельзя: незакрытый переход виден, а «вроде договорились» — нет. На приёмке по каждому критерию ставится отдельный вердикт и отдельно отмечается, был ли откат.

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

Почему список один, а не два документа

Сдающий видит «что я обязан произвести»

  • Цель, по которой меня будут принимать
  • Критерии, которые будут проверять — до того, как я начал
  • То, от чего договорились отказаться
  • Проверки, которые я обязан написать

Принимающий видит «что мне обязаны дать»

  • Ту же цель — слово в слово, а не «по смыслу»
  • Те же критерии, по каждому отдельный вердикт
  • Те же отказы — чтобы не открывать заново закрытое
  • Те же проверки и их результат
Это буквально один и тот же объект, прочитанный с двух сторон, а не два документа, которые кто-то сверял. Читаемый человеком вид порождается из него же — значит ему нечему разъехаться. Пока «сдано» и «принято» описаны двумя текстами, между ними по построению есть зазор: формально сдано, фактически принять нельзя.

Правила, из которых это держится

Отказы записываются всегда — даже когда их нет

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

Пустой список проверок границу не проходит

Даже если рядом стоит отметка «всё прошло». Без этого правила приёмка сводится к «запустилось — значит принято», а «запустилось» не имеет отношения к тому, решена ли задача.

Замысел согласовывает переговорщик, а не переводчик

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

Проверяет не тот, кто делал — и в определённом порядке

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

Это же требование закладываем в закрытый контур: локальную модель не должна проверять она сама.

Что здесь держится кодом, а что регламентом

Сами контракты границ, порождение человекочитаемого вида из схемы и порядок проверки реализованы и проверяются тестами на нашем внутреннем стенде.

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

Где мы слабее всего

1076 автоматических проверок закрывают код, но не смысл: они не поймают случай, когда помощник ответил вежливо и неверно. Сегодня смысл ловится ежедневной вычиткой разговоров — то есть после того, как ответ уже ушёл.

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

Кто проверяет саму систему

Проверять работу помощника тем же способом, которым он сделан, бессмысленно: у проверяющего будут те же слепые зоны. Поэтому проверки устроены отдельно от него.

1076 автоматических проверок кода

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

Ежедневный разбор разговоров

Отдельная проверка читает вчерашние диалоги и сверяет их с правилами: не назвал ли помощник цену, не повторил ли вопрос, не принял ли продавца за покупателя, не завис ли клиент. Замечаний нет — молчит.

Пульс каналов

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

Внешний сторож раз в пять минут

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

Как это живёт в эксплуатации

Самая скучная часть, по которой видно, будет ли система работать через год.

Резервные копии

Делаются ежедневно и забираются на отдельное хранилище, физически не на том же сервере. Копия, лежащая рядом с рабочими данными, уходит вместе с ними — это не резервная копия, а её изображение.

Обновления и откат

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

За сколько видно поломку

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

Что мы делаем со своими падениями

Разбираем причину и превращаем в правило или в проверку. Часть таких правил — ниже, в разделе «Что учли на живых клиентах»: каждый пункт там стоил одного инцидента.

Что учли на живых клиентах

Список не полный — это примеры того, что видно только в работе, а не на демонстрации. Каждый пункт стоил одного инцидента.

Снабженцы присылают заявки фотографиями

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

Клиент называет область вместо города

«Мангистауской» — и в заявку уходит область вместо адреса доставки. Область запоминается отдельно, помощник уточняет населённый пункт.

Поставщики пишут в тот же канал, что и покупатели

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

Накопленные сообщения приходят пачкой

После восстановления связи провайдер отдаёт всё разом — и помощник задаёт один и тот же вопрос шесть раз подряд. Повтор одного текста в тот же чат блокируется окном времени.

Пересланный чужой текст выглядит как заявка

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

Ошибочная пометка должна сниматься

Любое автоматическое решение когда-нибудь срабатывает не так. Если оно необратимо, одна ошибка выключает клиента навсегда. Правило: механизм, который что-то запрещает, обязан иметь путь назад.

Канал молчал две недели, и все считали, что он работает

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

Синхронизация с сервером стёрла папку с документами

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

Сколько за этим стоит

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

Готовы обсудить ваш контур

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

Посчитать, где теряете →