Большинство «AI для магазина» заканчивается одинаково: виджет в правом нижнем углу, три пользователя в месяц и тишина. Мы пошли другим путём.

Идея простая и вредная для привычных чат-ботов: ассистент должен менять витрину, а не писать простыни текста. Человек говорит «наушники для спорта до десяти тысяч» — и на экране остаются подходящие карточки, у каждой короткое «почему именно это».

Что под капотом

  • Модуль bai.aiassistant живёт в local/ — ядро Битрикса не ломаем, обновления не становятся квестом.
  • Два режима LLM: облачный GigaChat и локальный Ollama, если данные не должны уезжать наружу.
  • Слой CatalogPort отделяет ассистента от конкретного каталога: демо на сотнях товаров, та же схема — на 20–30 тысячах SKU.

Витрина после запроса Concierge: карточки товаров с объяснением why

Почему не «скармливаем весь каталог» модели

На демо можно. На боевом каталоге — нет. Сначала обычный поиск сужает выборку до shortlist, и уже его видит LLM. Иначе и дорого, и глупо, и медленно.

// Упрощённый контракт: поиск → shortlist → LLM → витрина
$shortlist = $catalogPort->search($query, limit: 24);
$ranked = $llm->rankAndExplain($query, $shortlist);
$catalogPort->renderShelf($ranked); // карточки + why

Сценарий показа AI-Concierge на pitch-странице

Что дальше

Демо закрывает UX и API. Следующий шаг — тот же Concierge на реальном каталоге, без переписывания интерфейса. Живой стенд можно потрогать по кнопке «Открыть демо».