Кейс: генерация описаний и карточек товаров для e-commerce

Интернет-магазину с каталогом в несколько тысяч SKU нужны уникальные описания и заполненные поля карточек для сайта и маркетплейсов. Вручную это недели работы копирайтеров. Ниже — схема, по которой такую задачу решают через Heli API: данные о товаре из CSV, модель с JSON-ответом, пакетная обработка на сервере и выборочная проверка человеком.

Пайплайн

  • Выгрузка каталога в CSV: артикул, название, категория, бренд и 3–10 характеристик.
  • Worker на Python читает строки и отправляет каждую в модель с одним и тем же системным промптом.
  • Ответ приходит в JSON по схеме: заголовок, описание, список преимуществ. Так поля сразу ложатся в карточку без ручного разбора текста.
  • Результат сохраняется по артикулу: при сбое обработка продолжается с места остановки, а повторный запуск не тратит токены на готовые товары.
  • Ключ sk-heli- хранится только на сервере, в переменной окружения.
python
import asyncio, json, os
from openai import AsyncOpenAI

client = AsyncOpenAI(base_url="https://getheli.ru/v1",
                     api_key=os.environ["HELI_API_KEY"], max_retries=3)
SCHEMA = {
    "name": "product_card",
    "strict": True,
    "schema": {
        "type": "object",
        "properties": {
            "title": {"type": "string"},
            "description": {"type": "string"},
            "bullets": {"type": "array", "items": {"type": "string"}},
        },
        "required": ["title", "description", "bullets"],
        "additionalProperties": False,
    },
}
sem = asyncio.Semaphore(8)

async def make_card(row: dict) -> dict:
    async with sem:
        resp = await client.chat.completions.create(
            model="openai/gpt-5.4-mini",
            messages=[
                {"role": "system", "content": "Напиши карточку товара на русском. "
                 "Используй только переданные характеристики, ничего не придумывай."},
                {"role": "user", "content": json.dumps(row, ensure_ascii=False)},
            ],
            response_format={"type": "json_schema", "json_schema": SCHEMA},
            max_tokens=900,
        )
        return {"sku": row["sku"], **json.loads(resp.choices[0].message.content)}

JSON mode и Structured Outputs

Python SDK + Heli

Качество текста

  • Главное правило в промпте — не добавлять характеристики, которых нет во входных данных. Выдуманные размеры и материалы опаснее, чем сухой текст.
  • Проверяйте длину полей и запрещённые слова кодом до загрузки: у сайта и каждой площадки свои требования к карточке.
  • Перед полным запуском прогоните 30–50 товаров из разных категорий и согласуйте тон с редактором.
  • После запуска проверяйте случайную выборку, особенно в категориях с техническими характеристиками.

Объём и выбор модели

Расход удобно оценить заранее: число товаров × (входные токены промпта и характеристик + выходные токены ответа). Например, 5000 SKU по ~800 выходных токенов — это около 4 млн выходных токенов. Умножьте объём на цену модели с её страницы или посчитайте в калькуляторе.

Для основной массы товаров обычно хватает лёгкой модели. Сильную модель имеет смысл оставить для премиальных категорий и сложных текстов.

GPT-5.4 mini — основной вариант с JSON-схемой.

DeepSeek V4 Flash — недорогой вариант для массовой генерации.

Claude Sonnet 5 — для премиальных категорий.

Калькулятор стоимости

Стабильность на объёме

  • Ограничивайте параллельность семафором и не запускайте тысячи запросов разом.
  • На 429 SDK повторит запрос с паузой по Retry-After; на 402 остановите обработку и пополните баланс.
  • Задайте бюджет на ключ во вкладке «Лимиты», чтобы ошибка в цикле не израсходовала весь баланс.

Лимиты и контроль расходов

Ошибка 429 в Heli API

Попробуйте Heli

Ключ sk-heli- появляется после подтверждения почты. Через Google и Яндекс — сразу в кабинете.

Документация API · Модели и цены

Читайте также