Генерація описів товарів за допомогою 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 робочих днів до першої продуктивної генерації.







