Быстрый старт с API Qwen Image 2512: Генерируйте изображения за минуты (2026)

Быстрый старт с API Qwen Image 2512: Генерируйте изображения за минуты (2026)

Привет, я Дора. Раньше я тратила много времени на создание изображений для продуктов: поиск активов, изменение размера, переименование файлов, организация папок… каждый шаг повторялся бесконечно. Ничего из этого не было сложным, но это было утомительно. Позже я попробовала Qwen Image 2512 API и обнаружила, что могу автоматизировать все это всего несколькими строками кода.

Это не реклама. Я просто делюсь тем, что на самом деле произошло, когда я это попробовала — что прошло гладко, где я споткнулась и как я сделала это надежно полезным.

Ярлык WaveSpeed (если вам просто нужны результаты)

Если вы просто хотите быстро генерировать изображения, не собирая всё самостоятельно:

  • WaveSpeed уже предоставляет готовый к использованию Qwen Image 2512 REST API (без холодных запусков).
  • Используйте конечную точку WaveSpeed + API ключ → всё готово.
  • Если вы хотите разобраться с официальным потоком DashScope (и типичными ошибками), продолжайте читать.

Что этот API может на самом деле делать?

Проще говоря: вы вводите описание текстом, и он выдает вам изображение.

Например, если вы напишете:

“Аккуратный стол с блокнотом и растением при мягком свете”

через несколько секунд вы получите изображение, которое соответствует вашему описанию — и вы можете автоматически сохранить его на свой компьютер.

Для чего это хорошо:

  • Создание досок настроения
  • Быстрое создание миниатюр
  • Добавление изображений-заполнителей в документы
  • Создание визуализаций прототипов для продуктов

Что я заметила:

В первый раз, когда я его использовала, это не казалось намного быстрее, чем вручную искать изображения. Но после двух-трёх запусков я понял, что мне больше не нужно ломать голову над вопросами вроде “какой размер должно быть это?” или “как мне назвать файл?”. То, что это мне сэкономило, было не просто время, а умственные усилия.


Формат изображения и хранилище

  • Формат: PNG, автоматически генерируется по умолчанию
  • Где хранится изображение:
    • API возвращает ссылку (URL) на изображение
    • Ссылка указывает на сервер Alibaba Cloud
    • Важно: ссылка действительна только 24 часа; после этого она истекает
    • Поэтому вам нужно загрузить её на свой компьютер побыстрее

Примечание: API не выдает файл изображения непосредственно. Если вы хотите сохранить его локально, вам нужно добавить этап загрузки в ваш код (объяснено позже).


Перед началом: что вам нужно

Шаг 1: Получите учётную запись и API ключ

  1. Зарегистрируйте учётную запись Alibaba Cloud
  2. Перейдите в Model Studio Console
  3. Создайте API ключ (как ключ, который доказывает, что это вы)
  4. Сохраните ключ как переменную окружения с именем DASHSCOPE_API_KEY
    Переменная окружения:
    Думайте об этом как о специальном месте на вашем компьютере, где живёт ваш ключ, поэтому ваш код может автоматически его найти без копирования каждый раз.

Советы:

  • Для тестирования вы можете сохранить его в файл .env
  • Для реального использования инструмент управления ключами безопаснее
  • В регионах Пекина и Сингапура разные ключи — не путайте их

Шаг 2: Выберите инструмент

Есть три основных способа, начиная с самого простого:

  1. cURL (самый простой)

    • Хорош для быстрых тестов, чтобы проверить, работает ли API
    • Программирование не требуется, просто вставьте команду
    • Рекомендуется для первой попытки
  2. Python (самый распространённый)

    • Хорош для создания небольшого инструмента для повторного использования
    • Я использую официальный DashScope SDK для автоматической обработки многих деталей
    • Некоторые базовые знания Python помогают
  3. Node.js (удобно для фронтенд-разработчиков)

    • Если вы фронтенд-разработчик, это тоже работает
    • Принципы те же, хотя я не буду его здесь рассматривать

Сначала попробуйте Playground:
Если вы просто хотите быстро протестировать результаты, Wavespeed Playground позволяет генерировать изображения в браузере. Идеально для нечастого использования. Для массовой генерации или автоматизации продолжайте читать, чтобы узнать, как использовать API.


Быстрый старт: тестирование с cURL

Откройте ваш терминал (Mac) или командную строку (Windows) и вставьте это:

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
  --data '{
    "model": "qwen-image-max",
    "input": {
      "messages": [
        {
          "role": "user",
          "content": [
            {"text": "A tidy desk with a notebook and a plant under soft light"}
          ]
        }
      ]
    },
    "parameters": {
      "size": "1024*1024"
    }
  }'

Нажмите Enter, подождите несколько секунд, и вы увидите JSON ответ со ссылкой на ваше изображение.

Ошибки, в которые я наткнулась

  1. Имя модели должно быть qwen-image-max, а не qwen-image-2512 или что-то другое.
  2. Формат размера использует звёздочку 1024*1024, а не 1024x1024.
  3. Для региона Сингапура измените URL на: https://dashscope-intl.aliyuncs.com/api/v1/...

Если вы создаёте что-то похожее на production, официальный поток DashScope полностью рабочий — но он имеет операционные детали (регионы, время жизни URL, повторы). Именно поэтому я люблю использовать WaveSpeed для повседневной работы: он дает мне Qwen Image 2512 за готовым к использованию REST API, поэтому я могу сосредоточиться на подсказках и управлении выходом вместо сантехники.

Параметры объяснены

Требуемые

  1. model

    • "qwen-image-max" — официальное имя для Qwen-Image-2512
    • Есть также "qwen-image-plus", похожий но дешевле
  2. input.messages

    • Массив с одним элементом
    • text — это ваше описание
    • Максимум 800 символов (около 400 китайских символов)

Необязательные (используются значения по умолчанию, если опущены)

  1. parameters.size

    • 1664*928 (16:9 ландшафт)
    • 1472*1104 (4:3)
    • 1328*1328 (1:1 квадрат, по умолчанию)
    • 1104*1472 (3:4 портрет)
    • 928*1664 (9:16 портрет)
  2. parameters.negative_prompt

    • Вещи, которые вы не хотите: например, "low-res, blurry, distorted, oversaturated"
    • До 500 символов
  3. parameters.prompt_extend

    • По умолчанию true
    • Автоматически обогащает ваше описание
    • Отключите, если вы хотите строгий контроль
  4. parameters.watermark

    • По умолчанию false
    • Добавляет водяной знак “Qwen-Image” если true
  5. parameters.seed

    • Диапазон 0–2147483647
    • Один и тот же seed + одно и то же описание = одно и то же изображение
    • Полезно для тестирования и сравнения результатов

Пример ответа API

{
  "output": {
    "choices": [
      {
        "finish_reason": "stop",
        "message": {
          "role": "assistant",
          "content": [
            {
              "image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxxx"
            }
          ]
        }
      }
    ]
  },
  "usage": {
    "width": 1328,
    "image_count": 1,
    "height": 1328
  },
  "request_id": "xxx"
}

Ключевые моменты

  • URL изображения: output.choices[0].message.content[0].image
  • Проверьте, что finish_reason — это "stop" чтобы подтвердить успех
  • Ссылки действуют 24 часа — загружайте побыстрее

Автоматизация с Python

Если вам нужна массовая генерация или небольшой инструмент:

import os
import time
import requests
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath

API_KEY = os.getenv("DASHSCOPE_API_KEY")
ENDPOINT = "https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"

HEADERS = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}",
}

def generate_image(prompt: str, size="1328*1328"):
    payload = {
        "model": "qwen-image-max",
        "input": {
            "messages": [{"role": "user", "content": [{"text": prompt}]}]
        },
        "parameters": {"size": size, "prompt_extend": True, "watermark": False}
    }
    r = requests.post(ENDPOINT, headers=HEADERS, json=payload, timeout=120)
    r.raise_for_status()
    data = r.json()
    choices = data.get("output", {}).get("choices", [])
    if not choices:
        raise ValueError(f"No image generated:\n{data}")
    content = choices[0].get("message", {}).get("content", [])
    if not content:
        raise ValueError(f"Empty content:\n{data}")
    image_url = content[0].get("image")
    if not image_url:
        raise ValueError(f"No image URL:\n{data}")

    img_response = requests.get(image_url)
    img_response.raise_for_status()

    file_name = PurePosixPath(unquote(urlparse(image_url).path)).parts[-1]
    ts = int(time.time())
    path = f"qwen_image_{ts}_{file_name}"
    with open(path, "wb") as f:
        f.write(img_response.content)
    return path

if __name__ == "__main__":
    output_path = generate_image("A tidy desk with a notebook and a plant under soft light")
    print("Image saved at:", output_path)

Что я узнала во время тестирования

  • Неправильное имя модели ломает его (qwen-image-plusqwen-image-max)
  • Неправильный формат размера (1328x1328 вместо 1328*1328)
  • Структура ответа немного отличается от документации; проверьте URL изображения
  • Забывчивость при загрузке изображения приводит к истечению ссылки через 24 часа

Использование официального SDK

import os
import json
from dashscope import MultiModalConversation

api_key = os.getenv("DASHSCOPE_API_KEY")
messages = [{"role": "user", "content": [{"text": "A tidy desk with a notebook and a plant under soft light"}]}]

response = MultiModalConversation.call(
    api_key=api_key,
    model="qwen-image-max",
    messages=messages,
    result_format='message',
    stream=False,
    watermark=False,
    prompt_extend=True,
    size='1328*1328'
)

if response.status_code == 200:
    print(json.dumps(response, ensure_ascii=False))
    image_url = response.output.choices[0].message.content[0]['image']
    print(f"Image URL: {image_url}")
else:
    print(f"Error: {response.code} - {response.message}")

Краткий справочник параметров

ПараметрПредложенное значениеПримечания
size1328*1328Квадрат, сбалансированная скорость и качество
prompt_extendTRUEДайте ИИ обогатить ваше описание
seedФиксированное числоИспользуйте для тестирования для сравнения результатов
negative_promptПо мере необходимостинапример, “blurry, low quality, distorted”

Когда менять seed

  • Фиксированный seed → сравнить вариации подсказок
  • Разные seeds → генерировать несколько различных изображений

Частые ошибки и их исправления

  • 401 Unauthorized → неправильный API ключ, неправильный регион или отсутствие разрешения на изображение
  • 429 Rate limit → слишком много запросов; добавьте задержку или обновите квоту
  • Timeout / проблемы с сетью → увеличьте timeout, загружайте немедленно

Небольшие улучшения, которые я добавила

  1. Фиксированный seed для тестирования подсказок → легче сравнивать результаты
  2. Непротиворечивое именование файлов: {keyword}-{size}-{seed}.png
  3. Управление конфигурацией: YAML, чтобы избежать жёсткого кодирования параметров

Для кого это работает

Playground

  • Случайная генерация изображений
  • Быстрое тестирование подсказок
  • Автоматизация не требуется

API

  • Массовая генерация
  • Интеграция инструмента или продукта
  • Запланированное или системное использование

Финальные пути (выберите то, что вам подходит)

Путь A — быстро и практично

  • Используйте WaveSpeed Playground API для Qwen Image 2512
  • Минимальная настройка, готовый к использованию REST endpoint

Путь B — полный контроль

  • Используйте DashScope напрямую, если вам нужна глубокая интеграция с Alibaba Cloud

Мне нравятся инструменты, которые просто спокойно работают в фоне. Для обучения и понимания официальный поток отлично. Для повседневной работы и более быстрой доставки WaveSpeed экономит мне много трудностей.