Собрать помощника, который отвечает на сообщения, можно за выходные. Дальше начинается то, ради чего существует платформа: он должен работать через год, не выдумывать, не молчать неделю незамеченным и не уносить ваши данные наружу. Ниже — как это устроено, с цифрами и без обещаний.
Слева входит обращение, справа выходит результат. Всё, что между, — это ядро: приём, разбор, проверка и модуль под конкретную задачу.
Помощник не «отвечает на сообщения». Он ведёт разговор к проверяемому результату и останавливается, когда упирается.
Сообщение, голосовое или фотография из любого канала: мессенджер, почта, чат на сайте.
Извлекаются позиции, объёмы, сроки, контакты — по правилам вашей предметной области, а не общими фразами.
Чего не хватает — то и спрашивается, по одному вопросу. Обязательные поля пропустить нельзя.
Итог показывается клиенту его же словами: «всё верно?». Только после согласия заявка уходит дальше.
Готовая карточка сотруднику — со всем, что собрано, и с пометками, что осталось уточнить.
Разговор встал — он не теряется: передаётся человеку с тем, что успели собрать. Молча похоронить обращение система не может.
Граница проходит не по сложности задачи, а по цене ошибки. Там, где ошибка дорогая, решение принимает человек — даже если машина справилась бы быстрее.
Первый вопрос любого, кто работал с языковыми моделями. Отвечаем по пунктам — это не одна мера, а несколько, и каждая закрывает свою часть.
Под вопрос подбирается нужный кусок ваших материалов и подставляется в запрос. Чего в базе нет — того в ответе не будет: помощник говорит «не знаю» и передаёт человеку. Это скучный ответ, но он честный.
Там, где модель раскладывает фразу человека на пункты, её результат принимается только если каждое значимое слово осталось из его же фразы. Не сошлось или не ответила за шесть секунд — берётся результат правил. Модель предлагает, решает код.
Цены, сроки, скидки, обязательства перед клиентом — не «мы попросили её так не делать», а механизм, который отсекает это независимо от того, что модель придумала. Просьбу в подсказке можно обойти уговорами, механизм — нет.
В запрос кладётся одна–три тысячи токенов отобранного, а не вся база целиком. Меньше материала для фантазии, дешевле и в разы быстрее — почему именно быстрее, видно в разделе про скорость.
Отдельная проверка читает вчерашние диалоги и сверяет с правилами: не назвал ли помощник цену, не повторил ли вопрос, не принял ли продавца за покупателя, не завис ли клиент без ответа. Замечаний нет — молчит.
Ни у кого. Поэтому граница проходит по цене ошибки: всё, что меняет обязательства перед вашим клиентом, подтверждает человек. Не потому что машина глупая, а потому что цена такой ошибки несопоставима с экономией минуты.
Три варианта размещения. Выбор зависит от требований к данным, а не от размера компании.
Помощник работает у нас, вы подключаете каналы. Быстрый старт, подходит для задач без чувствительных данных. Инструменты регистрируются на вас, а не на нас.
Платформа разворачивается в вашем контуре. Данные, журналы и языковая модель остаются внутри периметра. Обновления — по вашему регламенту.
Без выхода в интернет вообще. Установка с носителя, модель поставляется вместе с дистрибутивом, право на использование проверяется подписью офлайн — лицензионный сервер наружу не нужен.
В облачном варианте — российские модели (данные не покидают страну). В закрытом контуре — локальные, на вашем оборудовании. Выбор модели зависит от конфигурации сервера, а не от нашего удобства.
Ориентиры, а не техусловия: точная конфигурация считается под задачу — от того, сколько обращений в час и какие из них доходят до модели.
Частая жалоба на месте: «модель думает больше десяти секунд, надо железо помощнее». Обычно дело не в железе, а в том, что до модели доехало лишнее. Сначала — что происходит с запросом ДО неё, потом замеры.
Что спрашивают, к какой задаче относится, всё ли нужное уже названо. Это делают правила, не модель, — быстро и одинаково каждый раз.
Типовые обращения закрываются справочником, шаблоном или готовым ответом. Модель для них не нужна — а это самая дорогая часть по времени.
Если модель нужна, ей отдают не всю базу знаний, а найденный под вопрос кусок: одна–три тысячи токенов вместо тридцати. Общая часть запроса кешируется и не пересчитывается.
Длинную задачу выгоднее разложить на несколько коротких обращений, чем отправить одним большим: на длинном входе время растёт не пропорционально, а обвально — это видно в последней строке таблицы.
Без иллюзий и без запугивания: что храним, где, что уходит наружу и чего у нас нет.
Переписка по подключённым каналам, вложения, журнал обращений и событий системы. Отдельно — то, что вы попросили собирать в заявке: позиции, объёмы, контакты.
Срок хранения ограничен и настраивается. Телефоны в теле сообщений маскируются в журнале.
В вашем контуре — на вашем сервере, наружу не уходит ничего. На нашей площадке — в России, на технике, к которой есть доступ только у нас.
Резервные копии делаются ежедневно и складываются отдельно от рабочего сервера.
В облачном варианте наружу уходит текст запроса — в российскую модель. Фотографии и сканы не уходят: текст с изображений распознаётся на месте, локально. В закрытом контуре наружу не уходит вообще ничего.
Владелец и сотрудники видят разное. Ключи доступа не лежат в файлах, которые браузер отдаёт кому угодно, — служебные разделы проверяются на сервере при каждом обращении. Инструменты и учётные записи оформляются на вас: уходим мы — доступы остаются у вас.
Свидетельство о государственной регистрации программы № 2026668970. Заявление на включение в реестр отечественного ПО № 375145 — на рассмотрении. Разработчик — ИП в реестре операторов персональных данных.
Аттестации ФСТЭК, сертификации по государственным стандартам защиты, формального соглашения об уровне сервиса с санкциями. Если у вас это обязательное требование — скажите на первом разговоре, мы его не закрываем и не будем делать вид.
Мы сами предлагаем облачный вариант, поэтому скажем прямо, где он не годится. Граница проходит не по «секретности», а по тому, чем вы отвечаете, если данные окажутся не там.
Помощник почти никогда не работает в пустоте: он забирает обращения из ваших каналов и складывает результат туда, где вы уже ведёте работу.
Чего намеренно не называем — поставщиков связи, через которых подключены мессенджеры, и внутреннее устройство сборки. Это операционная информация, и на стыковку она не влияет: с вашей стороны интерфейс один и тот же независимо от того, кто у нас за спиной. Спросите на разговоре — ответим предметно, включая то, что будет, если поставщик отвалится.
Такие проекты ломаются не на технике, а на стыках: между «что просили» и «что сделали» теряется смысл, и выясняется это на приёмке. Поэтому на каждом стыке у нас не два согласованных документа, а один список условий. Вот он целиком.
Читать так: тёмный прямоугольник — этап работы, стрелка с номером — переход между этапами. Под лентой то, что должно быть записано на каждом переходе; списков ровно столько, сколько переходов.
Поле «от чего отказались и почему» заполняется обязательно, пустым в том числе. Иначе на следующем этапе заново открывают вопрос, который заказчик уже закрыл, — и круг идёт по второму разу, с теми же аргументами.
Даже если рядом стоит отметка «всё прошло». Без этого правила приёмка сводится к «запустилось — значит принято», а «запустилось» не имеет отношения к тому, решена ли задача.
Три вещи сразу: знать границы возможного, иметь право сказать «нет» и обязанность предложить достижимую замену. У роли есть измеримый признак работы — доля случаев, когда отказали и предложили другое. Ноль отказов означает, что роль не работает, даже если задачи исправно едут дальше.
Автор выше оценивает собственный результат, инструкцией «будь строг к себе» это не лечится. Поэтому проверяющий сначала составляет своё мнение и только потом смотрит на готовое: увидев чужой ответ первым, он под него подстраивается.
Это же требование закладываем в закрытый контур: локальную модель не должна проверять она сама.
Сами контракты границ, порождение человекочитаемого вида из схемы и порядок проверки реализованы и проверяются тестами на нашем внутреннем стенде.
В проектной работе с заказчиком это пока регламент, который ведём мы, а не механизм, который нельзя обойти. Разницу называем, потому что она есть.
1076 автоматических проверок закрывают код, но не смысл: они не поймают случай, когда помощник ответил вежливо и неверно. Сегодня смысл ловится ежедневной вычиткой разговоров — то есть после того, как ответ уже ушёл.
Постоянную проверку собираем сейчас: набор реальных диалогов с эталонными ответами, замороженный и прогоняемый на каждое изменение. Это самое тонкое место, и мы предпочитаем сказать о нём сами.
Проверять работу помощника тем же способом, которым он сделан, бессмысленно: у проверяющего будут те же слепые зоны. Поэтому проверки устроены отдельно от него.
Прогоняются на каждое изменение. Ловят поломки — но не ловят случай, когда система работает ровно так, как написано, а написано неверно. Для этого есть остальные три пункта.
Отдельная проверка читает вчерашние диалоги и сверяет их с правилами: не назвал ли помощник цену, не повторил ли вопрос, не принял ли продавца за покупателя, не завис ли клиент. Замечаний нет — молчит.
Канал, переставший принимать сообщения, обнаруживается системой, а не клиентом через неделю. Важная деталь: успехом считается не «мы отправили», а подтверждение от провайдера связи — иначе протухший ключ или кончившийся тариф выглядят как рабочий канал. Отказ даёт один сигнал, а не поток одинаковых.
Проверяет снаружи: отвечает ли движок, открывается ли сайт, жив ли контейнер, не кончается ли диск. Сигнал уходит в два независимых канала — на случай, если лёг именно тот, по которому обычно приходят сообщения.
Самая скучная часть, по которой видно, будет ли система работать через год.
Делаются ежедневно и забираются на отдельное хранилище, физически не на том же сервере. Копия, лежащая рядом с рабочими данными, уходит вместе с ними — это не резервная копия, а её изображение.
Перед выкладкой снимается копия того, что стоит сейчас, после выкладки сверяется, что доехало именно то, что отправляли. Не понравилось — возвращаем предыдущую версию. В вашем контуре обновления идут по вашему регламенту, а не когда нам удобно.
Цикл наблюдения — пять минут. Это про обнаружение, а не про «починим за пять минут»: скорость починки зависит от того, что сломалось, и честно обещать её одной цифрой нельзя.
Разбираем причину и превращаем в правило или в проверку. Часть таких правил — ниже, в разделе «Что учли на живых клиентах»: каждый пункт там стоил одного инцидента.
Список не полный — это примеры того, что видно только в работе, а не на демонстрации. Каждый пункт стоил одного инцидента.
Спецификация на бумаге, список в блокноте, снимок экрана из учётной системы. Помощник, который умеет только текст, встаёт в тупик и молчит. Теперь текст читается с изображения, локально.
«Мангистауской» — и в заявку уходит область вместо адреса доставки. Область запоминается отдельно, помощник уточняет населённый пункт.
Завод присылает коммерческое предложение — система собирает из него «заявку», и менеджер получает обращение, в котором никто ничего не покупает. Продавец распознаётся и помечается отдельно.
После восстановления связи провайдер отдаёт всё разом — и помощник задаёт один и тот же вопрос шесть раз подряд. Повтор одного текста в тот же чат блокируется окном времени.
Человек переслал в чат длинную выдержку из другой переписки — система разобрала её на позиции, которых клиент не называл. Длинные пересылки не разбираются как обращение.
Любое автоматическое решение когда-нибудь срабатывает не так. Если оно необратимо, одна ошибка выключает клиента навсегда. Правило: механизм, который что-то запрещает, обязан иметь путь назад.
Оператор связи перестал пропускать трафик к одному из адресов сервиса — с нашего сервера он был недоступен, с любого другого открывался. Отправка считалась успешной, потому что «мы отправили». Отсюда пульс каналов по подтверждению провайдера и второй канал сигналов.
Обычная выкладка с зеркалированием снесла каталог, которого не было в источнике, — документы были недоступны полдня. У выкладки появились список исключений, копия «как было» и сверка после отправки.
Разберём процесс, требования к размещению данных и то, что реально автоматизируется в вашем случае. Сорок минут, расчёт остаётся у вас.
Посчитать, где теряете →