AI-консультант на сайте вместо платного виджета: 34 : 12 в слепом сравнении
У бренда товаров для активного отдыха из США на витринах стоял платный чат-виджет по подписке за каждый магазин — и переспрашивал вместо того, чтобы отвечать. Для российского сайта был ещё и жёсткие требования ФЗ-152. Собрал свой чат по описаниям товаров на российских языковых моделях и проверил его слепым сравнением с платным виджетом.
Платишь подписку за каждый магазин — а бот переспрашивает вместо ответа
У бренда две витрины на Shopify и отдельный российский сайт. На витринах стоял платный чат-виджет по подписке: платить надо за каждый магазин отдельно, то есть цена умножается на число витрин и растёт вместе с бизнесом, а не с пользой.
Претензия менеджеров была не к цене, а к качеству. Виджет не отвечал по существу: на конкретный вопрос про подбор модели он задавал встречный уточняющий вопрос, а когда всё-таки отвечал — тянул клиента к тем позициям, которые есть в наличии у него в фиде, а не к тем, которые подходят под задачу покупателя.
Отдельное жёсткое ограничение — для российского сайта. Данные пользователей не должны уходить из страны, значит зарубежные языковые модели отпадают целиком: и как основной вариант, и как «временное решение на время пилота». Это сразу вычёркивает почти весь рынок готовых AI-виджетов.
Итого задача звучала так: получить консультанта, который отвечает по реальному каталогу и реальным условиям доставки/гарантии, работает на российском контуре, и при этом не хуже платного виджета — причём «не хуже» нужно доказать цифрами, а не ощущениями.
Своя база фактов, свой сервис, свой сервер
Отдельный подпроект: база фактов о товарах, поиск по ней (RAG), промежуточный сервис на FastAPI и встраиваемый в сайт виджет. Никакой «магии модели» — ответ собирается из фактов, которые можно показать пальцем, а качество проверяется тестом, а не на глаз.
562 факта: каталог, частые вопросы, доставка, гарантия и формулировки из живых переписок менеджера
Векторный поиск по базе: под конкретный вопрос отбираются подходящие факты
FastAPI, потоковая отдача ответа, единый интерфейс к трём моделям, обновление токенов, повторные попытки, предохранители
Текст печатается по мере готовности, следом отдельно приходят карточки товара с картинками
Разговоры и контакты сохраняются в файл, копия вопросов и ответов уходит живому человеку в Telegram
База фактов собрана из каталога и живых переписок
562 факта: характеристики позиций, частые вопросы, условия доставки и гарантии. Плюс — и это оказалось важнее всего — более 300 живых переписок менеджера с покупателями. Оттуда взяты не только ответы, но и реальные формулировки вопросов: как человек на самом деле спрашивает про размер, вес, зимнюю эксплуатацию и сроки. Бот, обученный на маркетинговых текстах, этих вопросов просто не узнаёт.
Один сервис — три модели под ним
Ответ отдаётся потоком: человек видит текст по мере того, как модель его пишет. За единым интерфейсом спрятаны три поставщика — в работе YandexGPT, плюс GigaChat и DeepSeek для сравнения и дешёвой отладки. Смена модели не затрагивает сам сайт. В этом сервисе живёт вся неромантичная часть:
- обновление токенов доступа и повторные попытки с учётом заголовка
Retry-After - блокировка на сессию — один пользователь не запускает пять генераций параллельно
- предохранитель по бюджету — расход не улетает в потолок при злоупотреблении
- персональные данные вычищаются до записи в журнал — телефоны и почты в файлы разговоров не попадают
- защита от злоупотреблений через Cloudflare Turnstile
- распознавание голосового ввода — вопрос можно надиктовать
Карточки товара отдельным кадром
Текстовый ответ уходит первым — его начинают читать сразу. Следом сервис досылает карточки упомянутых товаров: картинка, название, ссылка. Так консультация не превращается в стену текста, а из чата есть прямой путь в корзину. Там же собирается контакт: если разговор дошёл до конкретики, он сохраняется и уходит менеджеру.
Качество проверяет тест, а не другая модель
Сначала качество оценивала другая модель, и от этого пришлось отказаться. Она систематически пропускала провалы именно на вопросах о выборе товара — тех самых, на которые жаловались менеджеры: ответ выглядел связным, значит «сойдёт». Заменил на строгий тест по эталону: для каждого вопроса заранее известно, какие факты обязаны попасть в ответ, по ним и идёт проверка. Сверху — 76 тестов в pytest, в том числе проверка, что ответ опирается на базу фактов, а не выдуман, и защита от злоупотреблений.
Выкладка на живой сайт по одной странице
Сайт собран в конструкторе, правки идут по живому — поэтому выкладка была
пошаговой. Резервная копия снята до правки. Код дописан в конец HEAD,
прежний код не тронут — это проверено сравнением префикса, а не на глаз.
Сначала одна главная страница → проверка на живом сайте → остальные страницы
(их около шестидесяти). Откат описан в три шага и лежит рядом с инструкцией.
Российский контур по умолчанию, а не как компромисс
Сервис, который отдаёт ответ потоком; работает как служба на своём сервере
562 факта с векторным поиском, карточки товара отдельным указателем
Основная модель — данные остаются внутри российского контура
Запасные модели за тем же интерфейсом: для сравнения и дешёвой отладки
Голосовой ввод — вопрос можно надиктовать, а не печатать
Защита от злоупотреблений без капчи в лицо покупателю
Один фрагмент кода, встраивается в сайт на конструкторе без доступа к исходникам
Проверка опоры на факты, защита от злоупотреблений, строгий эталон вместо оценки другой моделью
Слепое сравнение с платным виджетом
свой движок / платный виджет, при 3 ничьих
встречный вопрос вместо ответа: 21 из 49 у виджета, ни одного у нас
по полноте — 3,98 против 2,90
Методика сравнения важнее цифры. 49 вопросов составлены на основе 174 реальных вопросов покупателей и разложены по сетке: 7 персон × 7 этапов воронки — от «первый раз на сайте» до «уже выбрал, уточняю гарантию». Каждый вопрос задан обоим ботам, ответы перемешаны, судейство слепое — судья не знает, где чей ответ.
Главная разница оказалась не в «уме», а в готовности отвечать. На 21 вопросе из 49 платный виджет задал встречный вопрос вместо ответа — ровно то, на что жаловались менеджеры. Свой чат ответил по существу на все 49.
Чат выкачен на боевой сайт. Контур обратной связи замкнулся за сутки: замечание владельца бизнеса вечером — два исправляющих коммита к утру. Бот перестал выдумывать популярность позиций и стал опираться на реальные продажи. Это, пожалуй, лучший показатель того, что система собрана правильно: правку видно на сайте на следующий день, а не в следующем обновлении стороннего сервиса.
Отдельный эффект — предсказуемость расходов. Вместо подписки, которая множится на число витрин, остаётся оплата токенов по факту использования плюс свой сервер; лицензий нет, а потолок расхода задан предохранителем прямо в сервисе.
Где ещё ложится та же методология
Кейс не про «чат на сайте». Это типовая задача «консультация по закрытой предметной области, где ответ обязан опираться на факты, а не на модель». Та же архитектура работает везде, где есть свой корпус знаний и цена ошибки выше, чем цена молчания:
- → Магазины со сложным выбором — техника, оборудование, снаряжение: там, где покупка требует объяснения, а не фильтра по цене
- → B2B-сайты с длинным циклом сделки — чат уточняет, что нужно клиенту, и передаёт менеджеру заявку вместе с историей разговора
- → Внутренний ассистент поддержки — тот же корпус, но интерфейс для операторов: подсказка ответа вместо поиска по регламентам
- → Любая ниша с требованиями ФЗ-152 — медицина, финансы, госсектор: контур на российских моделях собирается тем же способом
- → Замена любого виджета по подписке — когда плата умножается на число точек, витрин или брендов, своё решение окупается арифметикой, а не верой
- Сервис с единым интерфейсом к нескольким моделям — смену модели сайт не замечает
- Схема базы фактов: каталог, регламенты и живые переписки, а не только маркетинговые тексты
- Строгий тест по эталону вместо оценки другой моделью — модель-судья пропускает ровно те провалы, ради которых её звали
- Слепое сравнение двух ботов на вопросах, составленных из реальных: сетка типов покупателей и этапов воронки
- Осторожная выкладка виджета: резервная копия → одна страница → проверка на живом сайте → остальные, откат в три шага
- Копия разговоров живому человеку в Telegram на первые недели — чтобы кто-то видел, что отвечает бот
Если ваш чат-виджет переспрашивает вместо ответа — это чинится
Начинаем не с модели, а с корпуса и способа проверки: что бот обязан знать и как мы докажем, что он это знает. От прототипа до запуска на боевом сайте — около четырёх недель.
Разбор по теме:Чат-бот для записи клиентов: почему он переспрашивает вместо ответа и как это измерить
Похожие кейсы
Голосовой агент Vapi + YClients: запись без администратора
Принимает звонки круглосуточно, бронирует время в YClients, отправляет подтверждение по SMS. 14 сценариев…
Сортировка обращений по срочности и запись в IDENT
Звонки и чат с разбором по срочности: острая боль, плановый приём, профилактика. ФЗ-152: данные в России, в…
Автозапрос отзывов на Я.Карты и 2GIS + AI-ответы
Сценарий срабатывает, когда в 1С закрывают наряд-заказ. 5★ → ссылка на Я.Карты, ≤3★ → форма владельцу. AI…
Аудит за 5 000 ₽ — с конкретным отчётом и сметой
Расскажу что внедрить в вашем бизнесе в первую очередь, какая будет окупаемость, и нужен ли вообще AI для вашей задачи (иногда — нет).
Или просто напишите свой вопрос — отвечу в течение 2 часов