Настройка ML-рекомендаций товаров на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка ML-рекомендаций товаров на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка ML-рекомендаций товаров на 1С-Битрикс

ML-рекомендации — это не «похожие товары из той же категории». Это модель, которая на основе паттернов поведения тысяч пользователей предсказывает, какой товар конкретный пользователь с наибольшей вероятностью добавит в корзину. Разница в конверсии между «похожими по категории» и реальными ML-рекомендациями может быть в 2–4 раза. В Битриксе нет встроенного ML-движка, поэтому система строится из нескольких слоёв.

Архитектура: Битрикс + внешний ML-сервис

ML-модель не должна жить в PHP-коде Битрикса — обучение и инференс требуют ресурсов, несовместимых с веб-запросом. Правильная архитектура:

  1. Битрикс — собирает события поведения (просмотры, покупки, клики) и пишет их в очередь или базу данных
  2. ML-сервис (Python/FastAPI или готовое решение) — обучает модель на накопленных данных, отдаёт рекомендации по HTTP API
  3. Битрикс — запрашивает рекомендации у ML-сервиса и отображает в шаблоне

Готовые ML-сервисы, интегрируемые с Битриксом

Яндекс.Персонализация — входит в экосистему Яндекса, требует передачи событий в Метрику и Яндекс.Рекламу. Сложно настроить без партнёрского доступа.

Retail Rocket — специализируется на e-commerce рекомендациях, есть готовый виджет для Битрикса. Передача событий через JavaScript-трекер.

Собственный сервис на Python — полный контроль, никаких зависимостей от сторонних платформ. Алгоритм: матричная факторизация (ALS через библиотеку implicit) или нейронные сети (NCF). Данные из b_user_behavior экспортируются в CSV, модель обучается офлайн раз в сутки, результаты записываются в Redis.

Передача событий в ML-сервис

При каждом просмотре товара или покупке Битрикс отправляет событие в очередь (Redis Pub/Sub, RabbitMQ или просто HTTP-запрос к ML-сервису):

// В шаблоне catalog.element
$mlEvent = [
    'event'      => 'view',
    'user_id'    => $GLOBALS['USER']->GetID() ?: ('anon_' . session_id()),
    'item_id'    => $arResult['ID'],
    'timestamp'  => time(),
    'session_id' => session_id(),
];

// Асинхронная отправка без ожидания ответа
$ch = curl_init('http://ml-service:8000/event');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => json_encode($mlEvent),
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT_MS     => 200, // Максимум 200ms — не блокируем рендеринг
    CURLOPT_NOSIGNAL       => 1,
]);
curl_exec($ch);
curl_close($ch);

Получение рекомендаций: кеш на Redis

ML-сервис возвращает список ID рекомендованных товаров для пользователя. Прямой запрос к ML-сервису при каждой загрузке страницы — неприемлемо. Кешировать на Redis с TTL 15 минут:

$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);

$cacheKey = 'ml_recs_' . ($userId ?: 'anon_' . session_id());
$recommendedIds = $redis->get($cacheKey);

if ($recommendedIds === false) {
    $response = file_get_contents(
        'http://ml-service:8000/recommend?user_id=' . urlencode($userId) . '&limit=8'
    );
    $recommendedIds = json_decode($response, true)['items'] ?? [];
    $redis->setex($cacheKey, 900, json_encode($recommendedIds));
} else {
    $recommendedIds = json_decode($recommendedIds, true);
}

Холодный старт: что показывать новым пользователям

Для пользователей без истории (новые посетители, первые 5 просмотров) ML-модель не работает. Fallback-стратегия: показывать «популярные товары» — список формируется из статистики заказов за последние 30 дней, кешируется на час. Переключение между ML-рекомендациями и популярными — по количеству событий в профиле пользователя.