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

«Строй-С» — крупнейшая сеть DIY-гипермаркетов в Саратовской области. Общая площадь офлайн-магазинов превышает 20 000 кв. м, а ассортимент компании включает более 200 000 товаров для ремонта и отделочных работ.
Первым проектом, который ASAP реализовала для цифровизации сети, стала разработка интернет-магазина. Но после запуска работа над платформой не закончилась: по мере появления новых технологий мы продолжаем развивать ее функциональность и улучшать уже существующие сценарии для покупателей.
Одним из таких обновлений стал AI-консультант. По сравнению с обычным поиском и прежними сценариями подбора он лучше понимает запрос покупателя в свободной форме и может искать не только по названию товара, но и по задаче. Например, пользователь может не знать конкретную позицию, а описать, что ему нужно сделать: консультант подберет подходящие товары, поможет сравнить их и ответит на вопросы по ассортименту.
В основе решения — языковая модель Qwen, backend на Python и FastAPI, интеграция с каталогом на 1С-Битрикс и отдельная база знаний магазина. При этом AI не управляет системой самостоятельно: поиск товаров, проверка цен и остатков, передача диалога оператору и другие критичные действия контролируются программной логикой.
Задача: перенести консультацию продавца в интернет-магазин
Покупатели строительных товаров не всегда приходят с точным названием или артикулом. Часто они описывают задачу: утеплить балкон, поклеить обои, подобрать инструмент для ремонта или рассчитать необходимое количество материалов.
Стандартный поиск интернет-магазина рассчитан на конкретные товарные запросы. Чтобы самостоятельно найти подходящее решение, покупателю приходится изучать разделы каталога, сравнивать характеристики и искать дополнительную информацию на разных страницах.
В офлайн-магазине в такой ситуации помогает продавец-консультант. Он выясняет, что планирует сделать покупатель, уточняет условия, бюджет и требования, а затем предлагает подходящие товары.
Нам предстояло перенести этот сценарий в интернет-магазин. При этом AI-консультант должен был работать не с демонстрационным набором данных, а с реальным каталогом «Строй-С», в котором цены, наличие и характеристики товаров регулярно обновляются.

Решение должно было поддерживать продолжительный диалог, учитывать предыдущие сообщения, отличать подбор товара от справочного вопроса и понимать, когда запрос можно обработать автоматически, а когда его необходимо передать сотруднику.
Архитектура 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С-Битрикс работает с конкретными словами и может не найти товары, если передать в него пользовательскую фразу целиком.
Если точный запрос не дает результатов, система формирует несколько вариантов и последовательно упрощает формулировку. При этом она сохраняет основную товарную сущность. Запрос «профессиональный аккумуляторный шуруповерт» нельзя сократить до слова «аккумуляторный»: каталог может вернуть любые товары с аккумулятором вместо нужного инструмента.
Для одного сообщения система может подготовить до восьми поисковых вариантов. Сначала выполняется наиболее точный запрос, затем — более широкие. Перебор ограничен по времени, поскольку одно обращение к каталогу занимает от двух до восьми секунд. Без ограничения последовательная проверка всех вариантов могла бы увеличить ожидание ответа почти до минуты.

Контекст диалога также учитывается при формировании поисковой фразы. Если после запроса о шуруповерте пользователь пишет только «до 10 тысяч», система понимает, к какому товару относится ограничение.
После поиска и фильтрации данных Qwen вызывается второй раз. Модель получает релевантную историю разговора, несколько найденных товаров и правила текущего сценария. Она не может самостоятельно обратиться к каталогу или добавить в рекомендацию товар, которого нет в переданном наборе.
Как система обработает запрос «Нужна дрель до 6 000 рублей»
Сначала Qwen определит, что пользователь хочет подобрать товар, а запрос относится к электроинструментам. Backend поймет, что для ответа необходимо обратиться к каталогу. Затем система разделит запрос на товарную сущность «дрель» и ограничение по стоимости «до 6 000 рублей». В каталог 1С-Битрикс будет отправлен товарный запрос, а бюджет система применит после получения выдачи.
Поскольку пользователь указал стоимость, консультант запросит расширенную выборку из 30 позиций. Backend исключит товары, которые не соответствуют бюджету или отсутствуют в продаже, и передаст Qwen до шести кандидатов. Во время второго обращения модель получит контекст диалога и данные найденных товаров. На их основе консультант выберет от одной до трех позиций, объяснит различия и передаст виджету команду на показ соответствующих карточек.
Работа с контекстом диалога
Для разных этапов обработки используется разный объем переписки. Классификатору достаточно нескольких последних сообщений, а для формирования рекомендации требуется более широкий контекст. Например, диалог может выглядеть так:
— Нужен шуруповерт.
— Для каких работ?
— Для профессионального использования.
— Какой бюджет?
— До 10 тысяч.
В последней реплике нет названия товара. Если обработать ее отдельно, система не поймет, к чему относится бюджет. Поэтому поисковый запрос строится с учетом предыдущих сообщений.
При этом вся переписка не передается модели на каждом шаге. Для классификации, поиска и финальной генерации используются разные части истории. Это сокращает объем prompt и не позволяет лишней информации увести модель от текущего вопроса. Ранее показанные товары также сохраняются в контексте. Благодаря этому пользователь может попросить сравнить варианты или показать более дешевую позицию, не начиная подбор заново.
Сценарии консультации для разных категорий товаров
Поведение AI-консультанта нельзя было описать одной общей инструкцией. Запросы покупателей отличаются по цели, товарной категории и уровню риска. В одном случае системе нужно сразу обратиться к каталогу, в другом — сначала задать уточняющие вопросы, а в третьем — ограничить рекомендацию и направить пользователя к специалисту.
Для управления поведением консультанта мы разработали 13 классов запросов и 14 уточняющих подклассов. Система может определить до трех сценариев в одном сообщении и собрать для них общую инструкцию. Классы определяют основную задачу: подбор товара, сравнение позиций, расчет материалов, консультацию по выбору или эксплуатации, вопросы о заказе, доставке и гарантии. Один запрос может относиться сразу к нескольким классам. Например, пользователь может попросить сравнить два товара, подобрать более дешевый вариант и уточнить условия доставки.

Подклассы задают более точную логику внутри основного сценария. Если пользователь называет конкретный товар, консультант может перейти к уточнению характеристик. Если покупатель описывает только задачу, например, хочет утеплить балкон, система сначала определяет подходящий тип материала и только после этого ищет позиции в каталоге.
Дополнительно консультант учитывает товарную область. Сейчас в системе предусмотрено восемь направлений. Для каждого действуют свои правила консультации. При работе со строительными и отделочными материалами важно уточнять условия применения и исходные параметры расчета. Для бытовой техники необходимо учитывать требования к подключению. Для других категорий используются собственные наборы правил.
Всего логика консультанта включает 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 передач диалога оператору.

Выборка пока недостаточна, чтобы оценивать влияние консультанта на конверсию и продажи. Сейчас аналитика используется для проверки пользовательских сценариев и поиска точек, в которых необходимо доработать классификацию, поиск или логику ответа. Пилот позволил проверить выбранную архитектуру на реальных пользовательских запросах.
Развитие AI-консультанта
Основная сложность проекта связана не с подключением языковой модели. Значительная часть разработки пришлась на обработку запросов, интеграцию с каталогом, управление контекстом, сценарии поведения и контроль итоговых рекомендаций.
Сейчас команда продолжает анализировать реальные диалоги и улучшать работу консультанта. Следующие этапы включают расширение автоматического тестирования, развитие мониторинга и корректировку сценариев на основе пользовательских запросов.
Архитектуру решения можно адаптировать для других интернет-магазинов, товарных направлений и объемов каталога. Для каждого проекта отдельно настраиваются интеграция с товарными данными, сценарии консультаций, правила безопасности и аналитика.
Стек технологий
Python
Qwen
Claude Sonnet
API
SQL
Java
Сотрудники
Антон Воловод
Менеджер проектовДаниил Васильев
CEO & Founder