Интернет-магазину с каталогом в несколько тысяч SKU нужны уникальные описания и заполненные поля карточек для сайта и маркетплейсов. Вручную это недели работы копирайтеров. Ниже — схема, по которой такую задачу решают через Heli API: данные о товаре из CSV, модель с JSON-ответом, пакетная обработка на сервере и выборочная проверка человеком.
Пайплайн
- Выгрузка каталога в CSV: артикул, название, категория, бренд и 3–10 характеристик.
- Worker на Python читает строки и отправляет каждую в модель с одним и тем же системным промптом.
- Ответ приходит в JSON по схеме: заголовок, описание, список преимуществ. Так поля сразу ложатся в карточку без ручного разбора текста.
- Результат сохраняется по артикулу: при сбое обработка продолжается с места остановки, а повторный запуск не тратит токены на готовые товары.
- Ключ sk-heli- хранится только на сервере, в переменной окружения.
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)}Качество текста
- Главное правило в промпте — не добавлять характеристики, которых нет во входных данных. Выдуманные размеры и материалы опаснее, чем сухой текст.
- Проверяйте длину полей и запрещённые слова кодом до загрузки: у сайта и каждой площадки свои требования к карточке.
- Перед полным запуском прогоните 30–50 товаров из разных категорий и согласуйте тон с редактором.
- После запуска проверяйте случайную выборку, особенно в категориях с техническими характеристиками.
Объём и выбор модели
Расход удобно оценить заранее: число товаров × (входные токены промпта и характеристик + выходные токены ответа). Например, 5000 SKU по ~800 выходных токенов — это около 4 млн выходных токенов. Умножьте объём на цену модели с её страницы или посчитайте в калькуляторе.
Для основной массы товаров обычно хватает лёгкой модели. Сильную модель имеет смысл оставить для премиальных категорий и сложных текстов.
GPT-5.4 mini — основной вариант с JSON-схемой.
DeepSeek V4 Flash — недорогой вариант для массовой генерации.
Claude Sonnet 5 — для премиальных категорий.
Стабильность на объёме
- Ограничивайте параллельность семафором и не запускайте тысячи запросов разом.
- На 429 SDK повторит запрос с паузой по Retry-After; на 402 остановите обработку и пополните баланс.
- Задайте бюджет на ключ во вкладке «Лимиты», чтобы ошибка в цикле не израсходовала весь баланс.
Попробуйте Heli
Ключ sk-heli- появляется после подтверждения почты. Через Google и Яндекс — сразу в кабинете.