AI-консультант для интернет-магазина с каталогом более 200 000 товаров

Ecom & Retail
AI/ML
AI-консультант для интернет-магазина с каталогом более 200 000 товаров

«Строй-С» — крупнейшая сеть DIY-гипермаркетов в Саратовской области. Общая площадь офлайн-магазинов превышает 20 000 кв. м, а ассортимент компании включает более 200 000 товаров для ремонта и отделочных работ.

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

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

В основе решения — языковая модель Qwen, backend на Python и FastAPI, интеграция с каталогом на 1С-Битрикс и отдельная база знаний магазина. При этом AI не управляет системой самостоятельно: поиск товаров, проверка цен и остатков, передача диалога оператору и другие критичные действия контролируются программной логикой.

Задача: перенести консультацию продавца в интернет-магазин

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

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

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

Нам предстояло перенести этот сценарий в интернет-магазин. При этом AI-консультант должен был работать не с демонстрационным набором данных, а с реальным каталогом «Строй-С», в котором цены, наличие и характеристики товаров регулярно обновляются.

ChatGPT Image 28 авг. 2026 г., 16_25_27.png

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

Архитектура AI-консультанта

Backend консультанта разработан на Python и FastAPI, данные диалогов хранятся в SQLite, а виджет на сайте написан на JavaScript. Сервис разворачивается в Docker. Для обработки естественного языка используется Qwen.

В рабочем контуре взаимодействуют четыре основных компонента: диалоговый виджет, backend консультанта, API каталога «Строй-С» и языковая модель. Отдельная база знаний используется для ответов на вопросы о магазине, которые не требуют поиска товаров.

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

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

Подбор товаров по потребности покупателя

AI-консультант встроен в сайт в виде диалогового виджета. Покупатель может описать задачу своими словами, не используя точные названия категорий или характеристики из каталога.

Например, пользователь может написать: «Нужен шуруповерт для ремонта квартиры стоимостью до 10 000 рублей». Консультант уточнит, для каких работ нужен инструмент, какой бюджет предусмотрен и какие параметры важны покупателю. После этого он предложит от одного до трех товаров и объяснит различия между ними.

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

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

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

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

Интеграция с каталогом «Строй-С»

Первую версию консультанта мы проверили на тестовой выгрузке из 5 000 товарных карточек. На этом этапе команда отработала основные сценарии диалога и логику рекомендаций.

Для полноценного запуска статической выгрузки было недостаточно. Каталог «Строй-С» включает более 200 000 позиций, а цены и остатки регулярно обновляются. Если хранить копию данных внутри консультанта, информация может устареть между синхронизациями.

Поэтому мы разработали API для интеграции AI-консультанта с каталогом интернет-магазина на 1С-Битрикс. Через него система получает информацию по категориям и отдельным товарам непосредственно в момент обработки запроса.

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

Весь каталог не загружается в контекст Qwen. Backend последовательно сужает область поиска: определяет товарное направление и категорию, получает подходящие позиции и применяет ограничения пользователя. К моменту второго обращения к модели из 200 000 товаров остается несколько проверенных кандидатов.

Работа с актуальными ценами и остатками

AI-консультант не определяет стоимость товара самостоятельно и не берет ее из истории переписки. Цены и сведения о наличии поступают непосредственно из интернет-магазина. После запроса покупателя система определяет товарную область и категорию, обращается к API, получает подходящие позиции и применяет заданные пользователем ограничения. Например, учитывает бюджет или наличие товара.

В обычном сценарии система запрашивает восемь позиций. Если покупатель указал бюджет, выборка увеличивается до 30 товаров. Это позволяет проверить больше вариантов и не получить пустой результат, если первые позиции в выдаче оказались дороже заданной суммы.
После фильтрации в контекст языковой модели передается не более шести товаров. Из них AI-консультант выбирает от одной до трех подходящих позиций и формирует рекомендацию.

В модель передаются только данные, необходимые для выбора: название, цена, наличие и категория товара. Полные описания и изображения не включаются в prompt, поскольку они увеличивают объем контекста. Изображения поступают непосредственно в виджет вместе с данными карточки.
Актуальную информацию по товарам система каждый раз получает через API. Товарные данные не кешируются надолго, поскольку их стоимость и наличие могут измениться.

Обработка запросов на естественном языке

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

Например, вопрос «Какие у вас условия доставки?» не требует поиска среди 200 000 товаров. В этом случае система обращается к базе знаний. Запрос «Подбери дрель до 6 000 рублей» запускает работу с каталогом и применение ограничения по стоимости.

Поиск в 1С-Битрикс работает с конкретными словами и может не найти товары, если передать в него пользовательскую фразу целиком.
Если точный запрос не дает результатов, система формирует несколько вариантов и последовательно упрощает формулировку. При этом она сохраняет основную товарную сущность. Запрос «профессиональный аккумуляторный шуруповерт» нельзя сократить до слова «аккумуляторный»: каталог может вернуть любые товары с аккумулятором вместо нужного инструмента.

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

ChatGPT Image 28 авг. 2026 г., 16_31_35.png

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

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

Как система обработает запрос «Нужна дрель до 6 000 рублей»

Сначала Qwen определит, что пользователь хочет подобрать товар, а запрос относится к электроинструментам. Backend поймет, что для ответа необходимо обратиться к каталогу. Затем система разделит запрос на товарную сущность «дрель» и ограничение по стоимости «до 6 000 рублей». В каталог 1С-Битрикс будет отправлен товарный запрос, а бюджет система применит после получения выдачи.

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

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

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

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

При этом вся переписка не передается модели на каждом шаге. Для классификации, поиска и финальной генерации используются разные части истории. Это сокращает объем prompt и не позволяет лишней информации увести модель от текущего вопроса. Ранее показанные товары также сохраняются в контексте. Благодаря этому пользователь может попросить сравнить варианты или показать более дешевую позицию, не начиная подбор заново.

Сценарии консультации для разных категорий товаров

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

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

Сценарии для Хабра подбор овара.png

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

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

Всего логика консультанта включает 36 блоков ожидаемого поведения, а также общую инструкцию и технические правила. На каждом ходе системный prompt собирается заново: общая инструкция → сценарии запроса → уточняющие подклассы → товарное направление → технические правила.

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

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

Разработка и изменение сценариев

Сценарии создавали на основе опыта команды и типовых обращений покупателей. Для проработки нестандартных ситуаций использовали Claude в режиме кодового агента. Ему задавали роль, контекст работы консультанта и конкретный проблемный кейс. Например, пользователь пытается отменить исходные инструкции или неожиданно переводит разговор на другой язык.

Claude предлагал вариант поведения и соответствующие инструкции. Команда проверяла решение, при необходимости корректировала его и переносила в сценарии AI-консультанта. В рабочий pipeline Claude не входит: пользовательские запросы обрабатывает Qwen, а действия системы контролирует backend.

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

База знаний магазина

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

В контекст не загружается вся база. Для ответа выбирается не более двух подходящих фрагментов. Векторные представления повторяющихся запросов кешируются, поэтому системе не нужно каждый раз обращаться к API embeddings.

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

Контроль рекомендаций AI-консультанта

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

Консультант не может придумывать позиции, самостоятельно устанавливать цены или изменять сведения каталога. Модель получает ограниченный набор товаров, найденных через API магазина. Если позиции нет в переданных данных, консультант не должен представлять ее как товар «Строй-С».

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

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

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

Система также обрабатывает попытки изменить роль консультанта или увести разговор от задач интернет-магазина. Например, просьба забыть предыдущие инструкции не должна превращать товарного консультанта в универсального собеседника.

Передача сложных обращений оператору

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

Передача реализована отдельной веткой приложения и не зависит только от решения языковой модели. Прямой запрос пользователя дополнительно определяется классификатором и программной проверкой.

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

Аналитика диалогов и действий покупателей

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

Проблема может возникнуть при определении категории, формировании поискового запроса, работе API или генерации ответа. Для каждого случая требуется свое изменение: корректировка сценария, поисковой логики или программного кода.

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

Панель также показывает уверенность классификатора и итоговый prompt в том виде, в котором он будет передан Qwen. Это позволяет проверять не отдельный сценарий, а результат полной сборки инструкции.

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

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

Результаты пилотного запуска

Сейчас AI-консультант работает на тестовой версии сайта «Строй-С». На этапе пилота команда проверяет систему на реальных запросах и собирает данные для дальнейшего развития.

С 7 июня по 3 августа консультант обработал 45 реальных диалогов от 37 уникальных посетителей. Пользователи отправили 117 сообщений. Товарные карточки были показаны 168 раз в 55 ответах. Система зафиксировала 332 перехода к товарам, 21 добавление в корзину и 10 передач диалога оператору.

Аналитика Хабр.png

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

Развитие AI-консультанта

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

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

Архитектуру решения можно адаптировать для других интернет-магазинов, товарных направлений и объемов каталога. Для каждого проекта отдельно настраиваются интеграция с товарными данными, сценарии консультаций, правила безопасности и аналитика.

Стек технологий

Python

Qwen

Claude Sonnet

API

SQL

Java

Сотрудники

Антон Воловод

Менеджер проектов

Даниил Васильев

CEO & Founder