AI-продавец для магазина техники (Узбекистан)
AI-консультант «Константин» для компьютерного магазина в Узбекистане: отвечает строго по каталогу, работает в Telegram и на сайте, с операторской админкой и мгновенной передачей диалога живому менеджеру.
TL;DR. AI-консультант для компьютерного магазина в Узбекистане — живой пример: pcmarket.uz. Отвечает на вопросы о товарах, ценах и наличии строго по каталогу магазина, работает и на сайте, и в Telegram, а когда разговор выходит за рамки того, что может AI, передаёт его живому оператору без разрыва диалога. А чтобы клиент вообще не чувствовал, что пишет боту, отдельно делается версия на MTProto — общение как с живым человеком. → Написать в Telegram

Что это
Заказчик — компьютерный магазин в Узбекистане, живой пример — pcmarket.uz. AI-консультант (в проекте его зовут «Константин») отвечает на вопросы о товарах, ценах и наличии строго по реальному каталогу магазина (~2000 товаров) и подбирает технику под задачу. Примеры запросов — «ноутбук для учёбы до $500», «какой видеокарты хватит для монтажа видео».
Цены называет в трёх валютах — UZS, USD, RUB — под покупателей из региона и приезжих. Ключевое ограничение сделано сознательно: если товара нет в базе, бот не сочиняет правдоподобную цену или характеристику, а честно говорит, что не нашёл.
Как отвечает строго по каталогу (RAG)
Чтобы бот не фантазировал про ассортимент, ответы строятся не на общих знаниях модели, а на самом каталоге магазина:
- Каталог синкается с сайта через Store API интернет-магазина (WooCommerce) — API публичный, read-only: бот только читает товары, ничего не пишет обратно в CMS.
- Каждый товар превращается в эмбеддинг и ложится в Postgres с расширением pgvector.
- На вопрос покупателя система делает векторный поиск по каталогу и отсекает то, что не похоже на запрос, по косинусной дистанции — иначе бот с готовностью подсунет соседний по смыслу, но не тот товар.
- GPT-4o получает только эти найденные товары и формирует ответ и карточки на их основе — ему физически не из чего выдумать цену или характеристику, которой нет в выдаче.
Итог: бот не «знает про компьютеры вообще» — он смотрит в тот же каталог, что видит покупатель на сайте, и отвечает строго по нему.
Два канала — сайт и Telegram
Плавающий чат-виджет добавляется на сайт одной строкой кода — и отдельно работает Telegram-бот на том же движке и том же каталоге. Оба канала пишут в одну базу диалогов, читают одни и те же настройки и ведут в одну и ту же операторскую сторону: это не два разных продукта, а два входа в один.
Бот на MTProto — общение как с живым человеком
Здесь важная местная специфика. В этом регионе покупатели очень не любят ботов: как только человек понимает, что пишет «роботу», доверие падает и разговор часто обрывается. Это особенность менталитета, которую нельзя игнорировать — иначе даже хороший ассистент теряет клиентов на входе.
Поэтому отдельно делается версия ассистента на MTProto — не обычный Bot API с пометкой «bot», а работа через полноценный Telegram-аккаунт. Для клиента это выглядит как переписка с живым консультантом магазина: обычный аккаунт, обычный чат, живой стиль ответов, без ощущения «я говорю с роботом». А под капотом — тот же движок: каталог, RAG, передача реальному оператору, когда нужно. Смысл простой — снять барьер недоверия к автоматизации ещё до первого вопроса.
Админка в Telegram (группы = форум-топики)
Часть админки живёт прямо внутри Telegram — без отдельного логина и интерфейса.
Операторская Telegram-группа настроена как форум: у неё есть темы (topics), как разделы внутри одного чата. Когда диалог передаётся оператору, для этого конкретного покупателя открывается своя отдельная тема — с именем клиента и языковой меткой. Вся дальнейшая переписка с ним идёт в этой теме: оператор открывает нужную тему и видит историю целиком, пишет туда ответ — и фактически это чат один-на-один с клиентом через интерфейс Telegram-форума. Ничего искать не нужно: одна тема — один покупатель.
На практике это выглядит так: клиент пишет в Telegram запрос вроде «ASUS ROG Strix QD-OLED XG27AQDNG… найди товар» — и в операторской панели тут же появляется новая тема с карточкой клиента (канал, язык), а бот сразу отвечает точной карточкой товара: диагональ, матрица, частота, время отклика, цена, наличие, ссылка на товар и предложение подобрать аксессуары. Рядом у оператора — кнопки «Открыть в админке» и «Закрыть сейчас». Оператор видит и сам запрос, и готовый ответ бота, и в любой момент вступает в диалог.
Темы не копятся бесконечно. Неактивные закрываются автоматически через сутки без переписки, у оператора есть кнопки «закрыть через 1ч / 6ч / 24ч / 48ч» или закрыть сразу вручную. Сама переписка при этом никуда не пропадает — она хранится в базе и остаётся доступна в веб-консоли даже после закрытия темы.
Отдельная операторская консоль (/admin)
Кроме Telegram есть полноценная веб-консоль: список диалогов со статусами, команда операторов, настройки.
- Перехват диалога. Кнопка «Взять» переводит диалог на оператора — AI замолкает, вместо него теперь отвечает живой человек. Кнопка «Вернуть AI» отдаёт диалог обратно боту.
- Поведение AI. Температура ответа (строже по каталогу — или живее и разговорнее), сколько последних сообщений диалога учитывать, порог автоматической эскалации на оператора, выбор модели, язык ответов. Это и есть настройка того, как консультант ведёт себя с покупателем, — без правок кода.
- Быстрые ответы. Библиотека шаблонов на частые вопросы — доставка, гарантия, оплата. Оператор вставляет заготовку в один клик вместо того, чтобы печатать одно и то же в десятый раз за день. Те же шаблоны доступны и как кнопки прямо в Telegram-теме — заготовка одна, пользоваться можно из обоих мест.
- Команда и роли. У каждого оператора — профиль с именем, аватаром и ролью (оператор/администратор), видной всей команде в разделе «Команда».
Ключевое: состояние общее. Что бы оператор ни поменял — новый шаблон, другой порог эскалации, перехват диалога, — это применяется мгновенно и в Telegram-теме, и в виджете на сайте, потому что оба канала читают одно и то же состояние, а не два независимых.
Передача живому оператору
Бот сам замечает момент, когда разговор пора отдать человеку. Простая эвристика по словам вроде «купить», «заказ», «гарантия», «оператор» помечает диалог как требующий оператора.
Дальше диалог уходит оператору в его Telegram-тему, а клиент ничего не переключает — как писал в тот же чат на сайте или в Telegram, так и продолжает писать туда же. Разрыва нет: просто с этого момента отвечает уже не бот, а человек.
Трудности и как решали
- Узбекский язык и местный менталитет. Главная сложность проекта — не техника, а локализация под аудиторию. Ассистента пришлось затачивать под узбекский язык и под отдельный менталитет: как здесь принято спрашивать, что считается нормальным ответом продавца, а что звучит «слишком по-роботски» и отпугивает. Это не перевод интерфейса, а настройка самого поведения консультанта под конкретный рынок — и именно это в проекте оказалось самым долгим.
- Релевантность. Векторный поиск без фильтра иногда подсовывал похожий, но не тот товар — бот уверенно рассказывал про соседнюю по смыслу модель вместо той, что спрашивали. Отсечка по косинусной дистанции решила основную часть; отдельно всплыл более узкий баг — поиск по артикулу находил только часть каталога вместо всего целиком, — почистили индексацию.
- Человекоподобность. Первые ответы читались как справка, а не как переписка с живым консультантом. Формулировки и стиль переписывались до тех пор, пока ответы не стали похожи на то, как реально пишет продавец в чате, а не бот, зачитывающий характеристики.
- Баг доставки: оператор пишет — клиенту не приходит. Самый неприятный баг проекта. Оператор отвечал в теме, а сообщение до клиента на сайте не доходило: переход диалога в режим «оператор» и обновление виджета были рассинхронизированы, виджет не знал, что его нужно перечитать. Починили на уровне корня, а не патчем сверху: первое сообщение оператора в теме теперь само переводит диалог в режим «оператор» — тем же кодом, что и кнопка «Взять» в консоли, — а приём сообщений от Telegram сделали fail-closed: если проверка подлинности запроса не настроена, вебхук отказывает, а не тихо принимает сообщения в обход защиты.
- Оформление заказа. Решили не тащить в чат корзину, адрес и SMS-подтверждение. Бот собирает то, что нужно, и отдаёт готовую корзину на сайт — клиент завершает заказ там же, где потом будет его личный кабинет и история покупок.
Статус
Бот в проде: pcmarket.uz работает с ним с живыми покупателями, оба канала подключены, консоль используется каждый день. → Написать в Telegram — если нужен похожий AI-консультант под свой каталог.