HiAPI
Блог

Руководство

Генерация изображений товаров для электронной коммерции с помощью qwen-image-2.0 через API hiapi

Готовое к запуску руководство на curl + Python: студийные снимки для каталога, сцены, варианты и двуязычные баннеры — по $0.025 за изображение, включая особые правила режима параметра size, которых нет ни у одной другой модели изображений на hiapi.

Jun 29, 2026
Генерация изображений товаров для электронной коммерции с помощью qwen-image-2.0 через API 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 в листингах сразу, важны три вещи.

  1. Рендеринг китайского текста. Большинству листингов электронной коммерции для материкового Китая, Гонконга, Тайваня или Юго-Восточной Азии нужен читаемый китайский текст на упаковке, баннере или этикетке. qwen-image-2.0 — единственная модель на hiapi, где вы можете написать промпт вроде «на этикетке флакона жирным шрифтом с засечками по-китайски написано 玫瑰精华水», и модель отрендерит именно эти иероглифы точно в описанном вами месте.
  2. Послушность промптам с длинными брифами по продукту. Брифы для электронной коммерции длинные: материалы, hex-коды цветов, отделка поверхности, направление света, форма тени, цвет фона, ракурс камеры. Когда бриф удлиняется, qwen-image-2.0 сохраняет общую согласованность — типичный режим отказа: просто пропускается один реквизит, а не выдумывается продукт.
  3. Ценовой диапазон, выдерживающий взрывной рост вариантов. Типичной странице 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: работа, учитывающая китайский язык в электронной коммерции, в ценовом диапазоне, где вы перестаёте считать рендеры.

Куда двигаться дальше

Весь смысл единой конечной точки /v1/tasks в том, что переключение модели — это изменение одной строки. Как только вы настроите цикл для qwen-image-2.0, тот же Python-скрипт сможет рендерить на любой модели изображений на hiapi, просто отредактировав поле "model" и приведя size к схеме этой модели.

Похожие статьи

Все статьи →

Начните работать с постоянными артефактами ИИ

Получите API-ключ и вызывайте модели изображений, видео и аудио через один API на основе tasks.

Читать документацию API