Генерация описаний товаров с помощью AI для 1С-Битрикс
Задача конкретная: взять сухой набор характеристик из инфоблока Битрикса, отправить в языковую модель и получить обратно читаемый продающий текст, который можно публиковать на карточке товара. Без клонирования контента конкурентов, без ручного труда копирайтеров для каждой позиции.
Сбор данных товара для промпта
Качество текста прямо пропорционально качеству входных данных. Собираем максимум структурированной информации:
function buildProductContext(int $elementId): string {
$element = CIBlockElement::GetByID($elementId)->GetNextElement();
$fields = $element->GetFields();
$props = $element->GetProperties();
$context = "Товар: {$fields['NAME']}\n";
$context .= "Раздел каталога: " . getSectionName($fields['IBLOCK_SECTION_ID']) . "\n";
foreach ($props as $prop) {
if (!empty($prop['VALUE']) && $prop['CODE'] !== 'MORE_PHOTO') {
$context .= "{$prop['NAME']}: {$prop['~VALUE']}\n";
}
}
// Добавляем цену для контекста
$price = CCatalogProduct::GetOptimalPrice($elementId);
$context .= "Цена: {$price['PRICE']['PRICE']} {$price['PRICE']['CURRENCY']}\n";
return $context;
}
Свойства типа MORE_PHOTO и другие технические пропускаем — в промпте нужны только семантически значимые данные.
Многоуровневая система промптов
Не один промпт для всех товаров — отдельные шаблоны для каждой товарной категории. Электроника и детская одежда требуют принципиально разного тона и структуры.
Система промптов с наследованием:
- Базовый промпт — общие инструкции по стилю, запрещённым фразам, структуре
- Категорийный промпт — специфика категории (технический язык для электроники, эмоциональный для lifestyle-товаров)
- Промпт конкретного инфоблока — особенности магазина (фирменный голос бренда)
Наследование: если категорийный промпт не задан — используется промпт родительской категории, затем базовый.
Форматирование и структура вывода
Просить AI вернуть чистый HTML-текст ненадёжно — модель может нарушить структуру. Лучше просить структурированный JSON:
{
"preview_text": "Краткое описание до 100 слов для листинга",
"detail_text": "Полное описание 200-350 слов с HTML-форматированием",
"bullet_points": ["ключевое преимущество 1", "ключевое преимущество 2"],
"target_audience": "Для кого этот товар"
}
JSON-режим доступен в OpenAI через response_format: {type: "json_object"}. Bullet points используем для блока «Преимущества» на карточке товара через свойство инфоблока типа S с флагом MULTIPLE.
Батчевая обработка с учётом контекстного окна
GPT-4o-mini имеет контекстное окно 128K токенов. Можно отправлять батч из нескольких товаров в одном запросе — это снижает расходы на накладные системные токены:
Опиши следующие 5 товаров. Верни JSON-массив из 5 объектов...
[товар 1]
[товар 2]
...
Батч из 5 товаров экономит ~30% токенов на системных инструкциях. Но при ошибке теряем весь батч — делаем retry с повышением и батчи по 3–5 товаров максимум.
A/B тестирование промптов
Для высококонкурентных категорий стоит тестировать разные промпты:
- Группа A: технический стиль (спецификации → выгоды)
- Группа B: эмоциональный стиль (образ жизни → технические детали)
Битрикс поддерживает A/B через маркетинговый модуль, но проще сохранить вариант промпта в свойство элемента и замерить конверсию через цели в Яндекс.Метрике.
Кейс: генерация описаний для 28 000 SKU
Задача: бытовая техника, 3 категории (крупная, мелкая, климатическая), разные требования к тексту.
Реализация:
- 3 категорийных промпта, разработанных совместно с маркетологом за 2 дня
- GPT-4o-mini для основной массы (80%), GPT-4o для топ-100 SKU по обороту
- Батчи по 3 товара, 8 параллельных воркеров
- Общее время генерации 28 000 описаний — 14 часов
- Стоимость: $42 на GPT-4o-mini + $18 на GPT-4o = $60 суммарно
Результат: органический трафик на карточки товаров вырос на 34% за 3 месяца после индексации (по данным Яндекс.Вебмастер).
Таймлайн работ
| Этап | Срок |
|---|---|
| Проектирование системы промптов, итерации | 2–4 дня |
| Сборщик контекста товара, интеграция с инфоблоком | 1–2 дня |
| Батчевый генератор, очереди, retry | 1–2 дня |
| Контроль качества, модерация | 1 день |
| A/B тесты, аналитика | 2–3 дня (опционально) |
Итого: 5–9 рабочих дней до первой продуктивной генерации.







