Руководство
Генерация изображений товаров для электронной коммерции с помощью qwen-image-2.0 через API hiapi
Готовое к запуску руководство на curl + Python: студийные снимки для каталога, сцены, варианты и двуязычные баннеры — по $0.025 за изображение, включая особые правила режима параметра size, которых нет ни у одной другой модели изображений на hiapi.
qwen-image-2.0 — это модель преобразования текста в изображение второго поколения от Alibaba, доступная через конечную точку hiapi /v1/tasks по цене $0.025 за изображение с выводом 2K по умолчанию. Для электронной коммерции она интересна двумя вещами: в этом ценовом диапазоне её рендеринг китайского текста — самый чистый среди всех текущих моделей преобразования текста в изображение; а её послушность промптам с длинными и подробными брифами по продукту очень стабильна — именно это и нужно трансграничным листингам.
Это руководство — рабочая версия данного рабочего процесса. Каждый вызов API можно сразу вставить в терминал, шаблоны промптов мы тестировали и рендерили на живых конечных точках, а цена за изображение — это актуальные цифры из тарифов HiAPI. Здесь нет ничего теоретического: цифры затрат основаны на значениях size, которые qwen-image-2.0 действительно принимает, а не на маркетинговых числах.
Почему для трансграничных изображений товаров выбирают qwen-image-2.0
Когда вам нужно вывести на рынок 200 SKU в листингах сразу, важны три вещи.
- Рендеринг китайского текста. Большинству листингов электронной коммерции для материкового Китая, Гонконга, Тайваня или Юго-Восточной Азии нужен читаемый китайский текст на упаковке, баннере или этикетке. qwen-image-2.0 — единственная модель на hiapi, где вы можете написать промпт вроде «на этикетке флакона жирным шрифтом с засечками по-китайски написано 玫瑰精华水», и модель отрендерит именно эти иероглифы точно в описанном вами месте.
- Послушность промптам с длинными брифами по продукту. Брифы для электронной коммерции длинные: материалы, hex-коды цветов, отделка поверхности, направление света, форма тени, цвет фона, ракурс камеры. Когда бриф удлиняется, qwen-image-2.0 сохраняет общую согласованность — типичный режим отказа: просто пропускается один реквизит, а не выдумывается продукт.
- Ценовой диапазон, выдерживающий взрывной рост вариантов. Типичной странице SKU нужно 4–6 изображений (студийный снимок, сцена, вид сверху, сравнение масштабов, два варианта). При $0.025 за изображение это $0.10–$0.15 на SKU. Вывод на рынок 200 SKU стоит $20–$30. Именно этот ценовой диапазон делает «сгенерировать всё с нуля» дешевле, чем заказывать частичную съёмку и добивать её стоком.
Если хотите увидеть эксперименты по поточной настройке промптов и шесть наборов рецептов, ориентированных на стиль, а не на электронную коммерцию, читайте сопутствующую статью рецепты промптов для qwen-image-2.0. Эта статья сосредоточена на сценариях использования для каталога.
Входная схема qwen-image-2.0 на hiapi
qwen-image-2.0 работает через единый интерфейс /v1/tasks — единственную конечную точку изображений, которую hiapi сейчас предоставляет. Прежде чем писать код, стоит правильно понять одно особое правило:
- Параметр размера называется
size— неaspect_ratio, неresolutionи неimage_size. Другие модели на hiapi (nano-banana, семейство flux) принимаютaspect_ratio; qwen-image-2.0 — нет. - Разделитель внутри
size—*, а неx."size": "2688x1536"вернёт 400;"size": "2688*1536"работает нормально. - Принимаются только пять значений
size. Все они — 2K:
| Соотношение сторон | Значение size | Применение |
|---|---|---|
| 16:9 (около 1.75:1) | 2688*1536 |
Главное изображение, баннеры, обложка листинга |
| 4:3 (около 1.37:1) | 2368*1728 |
Журнальные развороты, рекламные блоки в две колонки |
| 1:1 | 2048*2048 |
Квадратные студийные снимки, миниатюры для маркетплейсов |
| 3:4 (около 0.73:1) | 1728*2368 |
Страницы товаров, ориентированные на мобильные устройства |
| 9:16 (около 0.57:1) | 1536*2688 |
Обложки вертикальных видео, статичные кадры TikTok/Reels |
Если вы отправите любое другое значение, API вернёт в ошибке буквальный список допустимых значений:
{"code": 400, "message": "invalid input: size: value must be one of '2688*1536', '2368*1728', '2048*2048', '1728*2368', '1536*2688'"}
Считайте это сообщение об ошибке авторитетным источником истины — если в будущем вы увидите там новое значение, значит платформа расширила эту схему.
Один рабочий запрос
Вся поверхность вызовов — это всего две конечные точки: POST /v1/tasks для постановки в очередь и GET /v1/tasks/{taskId} для опроса. Ниже — минимальный запрос, который создаёт студийный снимок под ним.
curl -s -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-image-2.0",
"input": {
"prompt": "Прозрачный стеклянный флакон с пипеткой для косметики на чистом бесшовном бумажном фоне цвета слоновой кости, мягкий дневной свет слева от камеры, мягкая эллиптическая тень, на этикетке жирным шрифтом с засечками по-китайски написано 玫瑰精华水, а ниже мелкая строка на английском Rose Essence Water, жидкость внутри имеет слабый розовый оттенок, студийная предметная фотография, резкий фокус на этикетке, никаких других реквизитов, квадратная композиция 1:1",
"size": "2048*2048"
}
}'
Ответ:
{"code": 200, "data": {"taskId": "tk-hiapi-01KW8R..."}, "message": "success"}
Для опроса:
curl -s https://api.hiapi.ai/v1/tasks/tk-hiapi-01KW8R... \
-H "Authorization: Bearer $HIAPI_TOKEN"
Поле status проходит через handling → archiving → success. В наших тестовых прогонах общее фактическое время на каждое изображение в 2K составляло 25–45 секунд. Когда status равен success, output[0].url содержит изображение — но он указывает на temp.hiapi.ai и содержит Unix-временную метку expireAt, поэтому скачивайте сразу. Не встраивайте его в страницу и не закрепляйте в базе данных; через несколько часов он вернёт 404.
Этот студийный промпт после запуска на живой конечной точке создаёт стеклянный флакон с пипеткой, на этикетке которого чисто отрендерены китайские иероглифы 玫瑰精华水, а прямо под ними — английский текст Rose Essence Water меньшим начертанием. Модель размещает обе строки в стандартной зоне этикетки, и в промпте вообще не нужны никакие подсказки по компоновке — достаточно формулировки «the label reads X».
Цикл на Python, превращающий таблицу SKU в загруженные студийные снимки
Это цикл, который мы запускали при генерации изображений на этой странице. Он принимает набор кортежей (slug, prompt, size), отправляет их с небольшим ограничением параллелизма, опрашивает каждую задачу до завершения, скачивает результат и загружает его как webp в ваше собственное хранилище. Этот шаблон намеренно написан скучно — requests плюс concurrent.futures — потому что интересная часть — это модель.
import os, time, io, requests, concurrent.futures as cf
from PIL import Image
TOKEN = os.environ["HIAPI_TOKEN"]
BASE = "https://api.hiapi.ai/v1/tasks"
H = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
def submit(prompt, size):
r = requests.post(BASE, headers=H, json={
"model": "qwen-image-2.0",
"input": {"prompt": prompt, "size": size},
}, timeout=60)
r.raise_for_status()
return r.json()["data"]["taskId"]
def wait(task_id, deadline_s=240):
deadline = time.time() + deadline_s
while time.time() < deadline:
r = requests.get(f"{BASE}/{task_id}", headers=H, timeout=30)
d = r.json()["data"]
if d["status"] == "success":
return d["output"][0]["url"]
if d["status"] == "fail":
raise RuntimeError(f"task {task_id} failed: {d.get('error')}")
time.sleep(4)
raise TimeoutError(f"task {task_id} not done in {deadline_s}s")
def render_one(item):
slug, prompt, size = item
task_id = submit(prompt, size)
url = wait(task_id)
png = requests.get(url, timeout=60).content
buf = io.BytesIO()
Image.open(io.BytesIO(png)).convert("RGB").save(buf, "WEBP", quality=88, method=6)
return slug, buf.getvalue()
JOBS = [
("packshot-rose-water", "Прозрачный флакон с пипеткой, на этикетке 玫瑰精华水…", "2048*2048"),
("packshot-tea-canister","Бледно-серая керамическая банка для чая, на этикетке 龙井…", "2048*2048"),
# … ещё 200 строк из вашей таблицы …
]
with cf.ThreadPoolExecutor(max_workers=6) as pool:
for slug, webp in pool.map(render_one, JOBS):
with open(f"out/{slug}.webp", "wb") as f:
f.write(webp)
print(f"saved {slug}.webp ({len(webp)} bytes)")
Несколько небольших замечаний об этом коде, которые не видны из самого кода.
max_workers=6— это оптимальное значение, которое мы наблюдали. На 8–10 глубина очереди начинает проявляться как дополнительная задержка, а не как пропускная способность. Похоже, что на стороне модели параллелизм справедливо распределяется по аккаунтам.- Перед сохранением мы конвертируем в webp с качеством 88. Эта конечная точка выдаёт PNG 2K размером около 3–4 МБ; webp получается 200–400 КБ и визуально неотличим в размерах страницы товара. Передача дешевле, а модель сама по себе кодирует много текстур, с которыми JPEG справляется плохо.
- Временный URL можно скачать только один раз. Если ваш шаг загрузки завершится ошибкой (сбой S3, сетевая нестабильность), вам придётся рендерить заново — второго шанса получить результат той же задачи нет.
Шесть шаблонов промптов для электронной коммерции
Это формы промптов, которые выжили после нашего внутреннего A/B-сравнения с более многословными альтернативами. Они написаны для англоязычных пользователей, использующих китайские этикетки на продуктах — это самый распространённый трансграничный сценарий.
Шаблон 1 — студийный снимок одного товара с китайской этикеткой
Изображение продукта по умолчанию. Укажите цвет фона простым английским, текст этикетки — буквальными китайскими иероглифами с указанием семейства шрифта по-английски, и укажите один источник света.
Бледно-серая керамическая банка для чая на чистом бесшовном бумажном фоне цвета слоновой кости. На этикетке жирным чёрным шрифтом с засечками по-китайски написано 龙井, а ниже мелкий английский подзаголовок Longjing Green Tea. Мягкий дневной свет справа от камеры, мягкая эллиптическая тень, никаких других реквизитов. Резкий фокус на этикетке, студийная предметная фотография, квадратная композиция 1:1.
Работают две вещи: «reads X in bold serif Chinese» (qwen-image-2.0 помещает это в ожидаемое место этикетки) и «sharp focus on the label» (заставляет модель относиться к тексту как к фокусу, а не как к украшению).
Шаблон 2 — сцена, построенная вокруг пустой тарелки
Для сценной съёмки сначала опишите сцену и только в конце поместите в неё продукт, а не наоборот. Модель скорее отклонится от сцены, чем от продукта, поэтому сначала закрепите сцену.
Деревянный стол в японском стиле у широкого окна при дневном свете позднего утра. Окно отбрасывает на стол мягкий прямоугольник света. В центре стола стоит бледно-серая керамическая банка для чая с предыдущего снимка, а рядом с ней из чашки поднимается лёгкая струйка пара. Справа рассыпаны отдельные чайные листья. Эстетика ваби-саби, мягкие тени, малая глубина резкости с фокусом на банке. Широкоэкранная композиция 16:9.
В наших тестовых рендерах на банке были иероглифы 龙井, а прямо под ними английское Longjing Green Tea — та же дисциплина этикетки, что и на студийном снимке — пар, рассыпанные чайные листья и свет из окна присутствовали, как описано.
Шаблон 3 — сетка цветовых вариантов за один рендер
Когда варианты имеют одинаковую геометрию продукта, вы можете отрендерить всю сетку за один вызов вместо трёх. Дешевле, и освещение всех ячеек одинаково по построению.
Три пары низких кед из парусины, снятые с лёгкого ракурса сверху, выстроены в один горизонтальный ряд на чистом светло-сером бесшовном фоне. Слева направо: пыльно-розовый, шалфейно-зелёный, кремово-белый. Одинаковый силуэт кед, одинаковое освещение, одинаковая тень. Каждая пара обращена к камере носками вперёд. Студийная предметная фотография, композиция 1:1, равномерные интервалы.
Этот шаблон избавляет вас от необходимости рендерить каждый вариант отдельно и потом пытаться согласовать освещение при постобработке. Ограничение «identical sneaker silhouette, identical lighting, identical shadow» — ключ к тому, чтобы весь ряд выглядел единым.
Шаблон 4 — двуязычный промо-баннер
Для совместных брендовых кампаний на Shopee, Lazada и Taobao обычно нужен китайский заголовок и английский подзаголовок на одном изображении. qwen-image-2.0 — единственная модель на hiapi, которая справляется с обоими в одном рендере.
Горизонтальный рекламный баннер для электронной коммерции на фоне мягкого розового градиента. Главный заголовок 双十一大促 крупным жирным чёрным шрифтом без засечек по-китайски слева по центру. Под китайским заголовком меньшим тёмно-серым английским шрифтом с засечками: Double 11 Sale — Up to 50% Off. Справа — прозрачный стеклянный флакон с пипеткой розовой сыворотки с маленькой белой этикеткой. Едва заметная текстура конфетти на фоне, чисто и современно, широкоэкранный 16:9.
Приём, который делает это стабильным, — поставить китайский в начало промпта и дать ему определение «large bold», а английскому — определение «smaller». Если поменять порядок, модель часто делает английский тоже размером заголовка. Этикетка продукта внутри баннера — место, где можно расслабиться — в наших тестовых рендерах qwen выбрал для бутылки общую этикетку «Vitamin C Serum», потому что мы не прописали иероглифы; для брендовых кампаний либо включите буквальный текст этикетки в промпт, либо составьте настоящую этикетку на постобработке.
Шаблон 5 — карточка листинга для трансграничного маркетплейса
Для составного материала, который выглядит как плитка листинга на Amazon или Tmall — продукт, название, цена, значок — промпт должен читаться как бриф по компоновке, а не по фотографии.
Квадратная карточка листинга электронной коммерции на белом фоне. В верхних двух третях — прозрачный стеклянный флакон с пипеткой розовой воды с экстрактом розы, на этикетке 玫瑰精华水 / Rose Essence Water. В нижней трети слева — цена 99 元 крупными жирными чёрными китайскими иероглифами с мелким английским подзаголовком Rose Essence 30ml ниже. Справа — маленький зелёный значок с белым текстом 新品. Чистая современная компоновка, мягкая падающая тень под продуктом, композиция 4:3.
Для листингов рендерите в 4:3 (2368*1728), а не 1:1 — в большинстве компонентов листингов маркетплейсов главный визуальный слот имеет формат 4:3, и квадрат даст неудобную обрезку.
Шаблон 6 — генерация по запросу для персонализации
Последний шаблон меняет юнит-экономику. Когда каждый рендер стоит меньше трёх центов, вы можете перестать предрендерить баннеры для кампаний и вместо этого рендерить их под клиента в момент запроса — «Здравствуйте, госпожа Ван, ваша месячная подборка готова», — вставив настоящее имя клиента в баннер. Кэшируйте по хешу имени, задайте TTL, и вы получите персонализированные баннерные изображения за очень небольшой счёт CDN.
Ограничение — задержка. 25–45 секунд на рендер слишком медленно для синхронного потока запросов, но вполне нормально для рассылки писем или push-уведомлений — генерируйте при постановке в очередь и вставляйте, когда сообщение отправляется.
В чём qwen-image-2.0 не сильна
Для баланса: эти четыре вида работ мы по-прежнему отдаём другим моделям на той же конечной точке /v1/tasks.
- Съёмка с рук с размытием движения. Студийные снимки — это зона комфорта. Если вам нужно что-то, что выглядит непостановочным — стиль UGC, лёгкое движение, несовершенная композиция — попробуйте
nano-banana-pro, она лучше понимает «небрежную» композицию. - Пиксельно идентичные варианты продукта. qwen-image-2.0 отрендерит похожие варианты между вызовами, но если вам нужен точно один и тот же флакон с пипеткой при пяти разных настройках освещения, вам нужна модель с обусловливанием по референсному изображению. Ни одна чисто текстовая модель изображений на hiapi не гарантирует пиксельную идентичность между вызовами.
- Фотореалистичные лица в полный рост. Крупные планы лиц нормальны; полный рост или групповые снимки часто смягчают черты лица. Для электронной коммерции с упором на людей — примерка одежды, демонстрация косметики — сочетайте qwen-image-2.0 с видео-моделью, обусловленной по референсу, для съёмки движений.
- Субсекундное время отклика. Если вам нужно генерировать изображения во внутреннем цикле синхронного запроса (пользователь ждёт перед экраном), 25–45 секунд — это слишком долго.
flux-schnellвозвращает результат примерно за 5 секунд по $0.005 за изображение, но не рендерит китайский текст. Сначала выбирайте по бюджету задержки.
Фактическая стоимость вывода на рынок 200 SKU
Посчитаем цифры для сквозного рабочего процесса на репрезентативном примере.
| Шаг | Количество | Цена за единицу | Итого |
|---|---|---|---|
| Главное/студийное изображение на SKU | 200 × 1 | $0.025 | $5.00 |
| Сценное изображение на SKU | 200 × 1 | $0.025 | $5.00 |
| Сетка вариантов на SKU (около 3 вариантов за рендер) | 200 × 1 | $0.025 | $5.00 |
| Двуязычный баннер на категорию (10 категорий) | 10 × 1 | $0.025 | $0.25 |
| Карточка листинга на SKU | 200 × 1 | $0.025 | $5.00 |
| Общая стоимость генерации изображений | 810 рендеров | — | $20.25 |
По текущим тарифам hiapi весь бюджет изображений для трансграничного запуска 200 SKU составляет около $20. Работа того же объёма на качественных моделях (от $0.04 за изображение) обходится в $30–$140, и каждый рендер выполняется дольше. Именно этот разрыв призвана закрыть qwen-image-2.0: работа, учитывающая китайский язык в электронной коммерции, в ценовом диапазоне, где вы перестаёте считать рендеры.
Куда двигаться дальше
- Прочитайте рецепты промптов для qwen-image-2.0, чтобы узнать о шести наборах рецептов, ориентированных на стиль, а не на электронную коммерцию.
- Считайте страницу тарифов hiapi источником истины для любых цифр стоимости — сейчас qwen-image-2.0 стоит $0.025 за изображение, но ориентируйтесь на эту страницу.
- Для чувствительных к задержке процессов, где не нужен китайский текст, переключитесь на
flux-schnellс той же формой/v1/tasks— сравнение в статье Генерация изображений товаров для электронной коммерции с помощью FLUX.1 schnell.
Весь смысл единой конечной точки /v1/tasks в том, что переключение модели — это изменение одной строки. Как только вы настроите цикл для qwen-image-2.0, тот же Python-скрипт сможет рендерить на любой модели изображений на hiapi, просто отредактировав поле "model" и приведя size к схеме этой модели.
Похожие статьи
Все статьи →-
Руководство
Как вызвать hailuo-2.3-fast/image-to-video через HiAPI API: практика с curl и Python
Первый рабочий запрос к быстрому и недорогому уровню генерации видео по изображению — от ID модели до загрузки MP4
-
Руководство
Как вызывать hailuo-2.3/text-to-video через API HiAPI: curl, Python и рабочие примеры запросов
-
Руководство
Использование Kandinsky 6.0 Pro для преобразования текста в видео на HiAPI: руководство по curl и Python
Практическая демонстрация с упором на запросы: построение вызова от промпта до видеоклипа, отправка запроса, опрос статуса завершения и скачивание результата