Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Foundation Models
    • Все инструкции
    • Отключить логирование запросов
    • Получить API-ключ
      • Сгенерировать изображение
    • Пакетная обработка данных
  • Yandex Cloud ML SDK
  • Совместимость с OpenAI
  • Управление доступом
  • Правила тарификации
  • Публичные материалы
  • История изменений

В этой статье:

  • Перед началом работы
  • Сгенерируйте изображение
  1. Пошаговые инструкции
  2. Генерация изображений
  3. Сгенерировать изображение

Сгенерировать изображение с помощью YandexART

Статья создана
Yandex Cloud
Обновлена 18 марта 2025 г.
  • Перед началом работы
  • Сгенерируйте изображение

С помощью нейросети YandexART вы можете генерировать изображения в асинхронном режиме. В ответ на асинхронный запрос модель вернет объект Operation, содержащий идентификатор операции, по которому можно отследить ее выполнение и получить результат после того, как генерация завершится. Генерация результата в асинхронном режиме может занимать от пары минут до нескольких часов.

Перед началом работыПеред началом работы

Чтобы воспользоваться примерами:

SDK
cURL
  1. Создайте сервисный аккаунт и назначьте ему роль ai.imageGeneration.user.

Также назначьте сервисному аккаунту роль ai.languageModels.user — в примере дополнительно используется модель YandexGPT Pro для генерации промта для YandexART.

  1. Получите и сохраните API-ключ сервисного аккаунта.

    В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.

  2. С помощью менеджера пакетов pip установите библиотеку ML SDK:

    pip install yandex-cloud-ml-sdk
    
  1. Получите данные для аутентификации в API, как описано на странице Аутентификация в API Yandex Foundation Models.

    Чтобы использовать API YandexART, назначьте роль ai.imageGeneration.user пользователю или сервисному аккаунту, от имени которого вы будете аутентифицироваться.

  2. Установите утилиты:

    • cURL для отправки API-запросов;
    • jq для работы с файлами JSON.

Сгенерируйте изображениеСгенерируйте изображение

Примечание

Чтобы повышать качество генерируемых ответов, YandexART логирует промты пользователей. Не передавайте в запросах чувствительную информацию и персональные данные.

SDK
cURL

В данный код входят четыре независимые друг от друга примера, иллюстрирующие различные варианты использования интерфейса SDK:

  • Пример 1: простой запрос, состоящий из одного текстового описания.
  • Пример 2: запрос, состоящий из двух текстовых описаний, с сохранением результата в файл ./image.jpeg.
  • Пример 3: запрос, состоящий из двух текстовых описаний с указанием веса.
  • Пример 4: сочетание запроса к модели YandexGPT Pro (для генерации расширенного промта) и запроса к модели YandexART (для генерации изображения по этому промту).

Код в примере не возвращает объект Operation, а дожидается выполнения моделями запросов и сохраняет результат в переменную result.

  1. Создайте файл generate-image.py и добавьте в него следующий код:

    #!/usr/bin/env python3
    
    from __future__ import annotations
    import pathlib
    from yandex_cloud_ml_sdk import YCloudML
    
    message1 = "a red cat"
    message2 = "Miyazaki style"
    
    
    def main():
        sdk = YCloudML(
            folder_id="<идентификатор_каталога>",
            auth="<API-ключ>",
        )
    
        model = sdk.models.image_generation("yandex-art")
    
        # configuring model for all of future runs
        model = model.configure(width_ratio=1, height_ratio=2, seed=50)
    
        # Sample 1: simple run
        operation = model.run_deferred(message1)
        result = operation.wait()
        print(result)
    
        # Sample 2: run with several messages, saving the result to file
        path = pathlib.Path("./image.jpeg")
        try:
            operation = model.run_deferred([message1, message2])
            result = operation.wait()
            path.write_bytes(result.image_bytes)
        finally:
            path.unlink(missing_ok=True)
    
        # Sample 3: run with several messages specifying weight
        operation = model.run_deferred([{"text": message1, "weight": 5}, message2])
        result = operation.wait()
        print(result)
    
        # Sample 4: example of combining YandexGPT and YandexART models
        gpt = sdk.models.completions("yandexgpt")
        messages = gpt.run(
            [
                "you need to create a prompt for a yandexart model",
                "of " + message1 + "in" + message2,
            ]
        )
        print(messages)
    
        operation = model.run_deferred(messages)
        result = operation.wait()
        print(result)
    
    
    if __name__ == "__main__":
        main()
    

    Где:

    Примечание

    В качестве входных данных для запроса Yandex Cloud ML SDK может принимать строку, словарь, объект класса TextMessage или массив, содержащий любое сочетание указанных типов данных. Подробнее см. в разделе Использование Yandex Cloud ML SDK.

    • message1 — основная часть запроса на генерацию изображения.
    • message2 — уточняющая часть запроса на генерацию изображения.
    • <идентификатор_каталога> — идентификатор каталога, в котором создан сервисный аккаунт.

    • <API-ключ> — API-ключ сервисного аккаунта, полученный ранее и необходимый для аутентификации в API.

      В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.

    Подробнее о том, как обращаться к модели генерации изображений, см. в разделе Обращение к модели.

  2. Выполните созданный файл:

    python3 generate-image.py
    

    Результат выполнения:

    ImageGenerationModelResult(model_version='', image_bytes=<889288 bytes>)
    ImageGenerationModelResult(model_version='', image_bytes=<1062632 bytes>)
    GPTModelResult(alternatives=(Alternative(role='assistant', text='Вот пример того, как может выглядеть запрос для модели YandexART:\n\n«Создай изображение красной кошки в стиле аниме Хаяо Миядзаки. Фон должен быть выполнен в мягких пастельных тонах с добавлением деталей, которые подчёркивают атмосферу волшебства и уюта».\n\n*Обратите внимание, что это лишь пример запроса, и вы можете адаптировать его под свои нужды.*', status=<AlternativeStatus.FINAL: 3>),), usage=Usage(input_text_tokens=31, completion_tokens=76, total_tokens=107), model_version='07.03.2024')
    ImageGenerationModelResult(model_version='', image_bytes=<1180073 bytes>)
    

Пример ниже разработан для выполнения в операционных системах MacOS и Linux. Чтобы выполнить его в системе Windows, ознакомьтесь с особенностями работы с Bash в Microsoft Windows.

  1. Создайте файл с телом запроса (например, prompt.json):

    {
    "modelUri": "art://<идентификатор_каталога>/yandex-art/latest",
    "generationOptions": {
      "seed": "1863",
      "aspectRatio": {
         "widthRatio": "2",
         "heightRatio": "1"
       }
    },
    "messages": [
      {
        "weight": "1",
        "text": "узор из цветных пастельных суккулентов разных сортов, hd full wallpaper, четкий фокус, множество сложных деталей, глубина кадра, вид сверху"
      }
    ]
    }
    

    Где:

    • modelUri — идентификатор модели YandexART, содержащий идентификатор каталога Yandex Cloud.
    • seed — зерно генерации.
    • text — текстовое описание изображения, на основе которого будет происходить генерация.
    • weight — вес текстового описания. Если в запросе присутствует больше одного описания, влияние каждого описания будет рассчитываться на основе веса, при этом сумма всех весов будет равна 1.
    • aspectRatio — (опционально) соотношение сторон генерируемого изображения:
      • widthRatio — ширина (по умолчанию 1).
      • heightRatio — высота (по умолчанию 1).
  2. Отправьте запрос нейросети с помощью метода ImageGenerationAsync.generate, выполнив команду:

    curl \
      --request POST \
      --header "Authorization: Bearer <значение_IAM-токена>" \
      --data "@prompt.json" \
      "https://llm.api.cloud.yandex.net/foundationModels/v1/imageGenerationAsync"
    

    Где:

    • <значение_IAM-токена> — IAM-токен вашего аккаунта.
    • prompt.json — файл в формате JSON, содержащий параметры запроса.

    В ответе сервис вернет объект Operation:

    {"id":"fbveu1sntj**********","description":"","createdAt":null,"createdBy":"","modifiedAt":null,"done":false,"metadata":null}
    

    Сохраните идентификатор (id) операции, полученный в ответе.

  3. Генерация изображения может занять от нескольких секунд до нескольких часов. Подождите некоторое время и отправьте запрос по адресу: https://llm.api.cloud.yandex.net:443/operations/<идентификатор_операции>, чтобы получить результат генерации. Если изображение готово, результат вернется в кодировке Base64 и будет записан в файл image.jpeg.

    curl --request GET --header "Authorization: Bearer <значение_IAM-токена>" https://llm.api.cloud.yandex.net:443/operations/<идентификатор_операции> | jq -r '.response | .image' | base64 -d > image.jpeg
    

    Где:

    • <значение_IAM-токена> — IAM-токен, полученный перед началом работы.
    • <идентификатор_операции> — значение поля id, полученное в ответе на запрос генерации.

См. такжеСм. также

  • Обзор YandexART
  • Примеры работы с ML SDK на GitHub

Была ли статья полезна?

Предыдущая
Вызвать функцию из модели
Следующая
Пакетная обработка данных
Проект Яндекса
© 2025 ООО «Яндекс.Облако»