Перейти к содержимому
VC
Кейс 5 из 28 · Розница · AI-консультант

AI-консультант на сайте вместо платного виджета: 34 : 12 в слепом сравнении

У бренда товаров для активного отдыха из США на витринах стоял платный чат-виджет по подписке за каждый магазин — и переспрашивал вместо того, чтобы отвечать. Для российского сайта был ещё и жёсткие требования ФЗ-152. Собрал свой чат по описаниям товаров на российских языковых моделях и проверил его слепым сравнением с платным виджетом.

Отрасль
Розница, товары для активного отдыха
Стек
Python · FastAPI/SSE · RAG · YandexGPT
Сроки
≈ 4 недели до запуска
Итог
34 : 12 в слепом сравнении
01 · Боль

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

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

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

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

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

02 · Решение

Своя база фактов, свой сервис, свой сервер

Отдельный подпроект: база фактов о товарах, поиск по ней (RAG), промежуточный сервис на FastAPI и встраиваемый в сайт виджет. Никакой «магии модели» — ответ собирается из фактов, которые можно показать пальцем, а качество проверяется тестом, а не на глаз.

01
База фактов

562 факта: каталог, частые вопросы, доставка, гарантия и формулировки из живых переписок менеджера

02
Поиск фактов

Векторный поиск по базе: под конкретный вопрос отбираются подходящие факты

03
Промежуточный сервис

FastAPI, потоковая отдача ответа, единый интерфейс к трём моделям, обновление токенов, повторные попытки, предохранители

04
Ответ

Текст печатается по мере готовности, следом отдельно приходят карточки товара с картинками

05
Что остаётся после

Разговоры и контакты сохраняются в файл, копия вопросов и ответов уходит живому человеку в Telegram

База фактов собрана из каталога и живых переписок

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

Один сервис — три модели под ним

Ответ отдаётся потоком: человек видит текст по мере того, как модель его пишет. За единым интерфейсом спрятаны три поставщика — в работе YandexGPT, плюс GigaChat и DeepSeek для сравнения и дешёвой отладки. Смена модели не затрагивает сам сайт. В этом сервисе живёт вся неромантичная часть:

  • обновление токенов доступа и повторные попытки с учётом заголовка Retry-After
  • блокировка на сессию — один пользователь не запускает пять генераций параллельно
  • предохранитель по бюджету — расход не улетает в потолок при злоупотреблении
  • персональные данные вычищаются до записи в журнал — телефоны и почты в файлы разговоров не попадают
  • защита от злоупотреблений через Cloudflare Turnstile
  • распознавание голосового ввода — вопрос можно надиктовать

Карточки товара отдельным кадром

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

Качество проверяет тест, а не другая модель

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

Выкладка на живой сайт по одной странице

Сайт собран в конструкторе, правки идут по живому — поэтому выкладка была пошаговой. Резервная копия снята до правки. Код дописан в конец HEAD, прежний код не тронут — это проверено сравнением префикса, а не на глаз. Сначала одна главная страница → проверка на живом сайте → остальные страницы (их около шестидесяти). Откат описан в три шага и лежит рядом с инструкцией.

03 · Стек

Российский контур по умолчанию, а не как компромисс

Python · FastAPI · uvicorn

Сервис, который отдаёт ответ потоком; работает как служба на своём сервере

Поиск по своей базе (RAG)

562 факта с векторным поиском, карточки товара отдельным указателем

YandexGPT

Основная модель — данные остаются внутри российского контура

GigaChat · DeepSeek

Запасные модели за тем же интерфейсом: для сравнения и дешёвой отладки

Yandex SpeechKit

Голосовой ввод — вопрос можно надиктовать, а не печатать

Cloudflare Turnstile

Защита от злоупотреблений без капчи в лицо покупателю

Виджет для сайта

Один фрагмент кода, встраивается в сайт на конструкторе без доступа к исходникам

pytest — 76 тестов

Проверка опоры на факты, защита от злоупотреблений, строгий эталон вместо оценки другой моделью

PythonFastAPISSERAGYandexGPTGigaChatDeepSeekSpeechKitTurnstilesystemdpytest
04 · Результат

Слепое сравнение с платным виджетом

Счёт по вопросам
34 : 12

свой движок / платный виджет, при 3 ничьих

Уклонения от ответа
43% 0

встречный вопрос вместо ответа: 21 из 49 у виджета, ни одного у нас

Оценка полезности
4,14 / 2,96

по полноте — 3,98 против 2,90

Методика сравнения важнее цифры. 49 вопросов составлены на основе 174 реальных вопросов покупателей и разложены по сетке: 7 персон × 7 этапов воронки — от «первый раз на сайте» до «уже выбрал, уточняю гарантию». Каждый вопрос задан обоим ботам, ответы перемешаны, судейство слепое — судья не знает, где чей ответ.

Главная разница оказалась не в «уме», а в готовности отвечать. На 21 вопросе из 49 платный виджет задал встречный вопрос вместо ответа — ровно то, на что жаловались менеджеры. Свой чат ответил по существу на все 49.

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

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

05 · Применимость

Где ещё ложится та же методология

Кейс не про «чат на сайте». Это типовая задача «консультация по закрытой предметной области, где ответ обязан опираться на факты, а не на модель». Та же архитектура работает везде, где есть свой корпус знаний и цена ошибки выше, чем цена молчания:

  • Магазины со сложным выбором — техника, оборудование, снаряжение: там, где покупка требует объяснения, а не фильтра по цене
  • B2B-сайты с длинным циклом сделки — чат уточняет, что нужно клиенту, и передаёт менеджеру заявку вместе с историей разговора
  • Внутренний ассистент поддержки — тот же корпус, но интерфейс для операторов: подсказка ответа вместо поиска по регламентам
  • Любая ниша с требованиями ФЗ-152 — медицина, финансы, госсектор: контур на российских моделях собирается тем же способом
  • Замена любого виджета по подписке — когда плата умножается на число точек, витрин или брендов, своё решение окупается арифметикой, а не верой
Что переиспользуется на следующих проектах
  • Сервис с единым интерфейсом к нескольким моделям — смену модели сайт не замечает
  • Схема базы фактов: каталог, регламенты и живые переписки, а не только маркетинговые тексты
  • Строгий тест по эталону вместо оценки другой моделью — модель-судья пропускает ровно те провалы, ради которых её звали
  • Слепое сравнение двух ботов на вопросах, составленных из реальных: сетка типов покупателей и этапов воронки
  • Осторожная выкладка виджета: резервная копия → одна страница → проверка на живом сайте → остальные, откат в три шага
  • Копия разговоров живому человеку в Telegram на первые недели — чтобы кто-то видел, что отвечает бот
Похожая задача?

Если ваш чат-виджет переспрашивает вместо ответа — это чинится

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

Готовы начать?

Аудит за 5 000 ₽ — с конкретным отчётом и сметой

Расскажу что внедрить в вашем бизнесе в первую очередь, какая будет окупаемость, и нужен ли вообще AI для вашей задачи (иногда — нет).

Или просто напишите свой вопрос — отвечу в течение 2 часов