Как начать работать с YandexART
В этом разделе вы научитесь использовать нейросеть YandexART для генерации изображений.
В консоли управления
Перед началом работы
Чтобы начать работать в Yandex Cloud:
- Войдите в консоль управления
. Если вы еще не зарегистрированы, перейдите в консоль управления и следуйте инструкциям. - В сервисе Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его. - Если у вас еще нет каталога, создайте его.
Для работы из консоли управления подготовительные действия не требуются.
Чтобы воспользоваться примерами запросов с использованием SDK:
-
Создайте сервисный аккаунт и назначьте ему роль
ai.imageGeneration.user
.Также назначьте сервисному аккаунту роль
ai.languageModels.user
— в примере дополнительно используется модель YandexGPT API для генерации промта для YandexART. -
Получите и сохраните API-ключ сервисного аккаунта.
В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.
-
С помощью менеджера пакетов pip
установите библиотеку ML SDK:pip install yandex-cloud-ml-sdk
Чтобы воспользоваться примерами запросов через API, установите:
Для работы с API YandexART необходимо аутентифицироваться со своего аккаунта:
-
Получите IAM-токен для аккаунта на Яндексе или федеративного аккаунта.
-
Получите идентификатор каталога, на который у вашего аккаунта есть роль
ai.imageGeneration.user
или выше. Идентификатор каталога понадобится, чтобы получить URI модели. -
При обращении к YandexART через API в заголовке
Authorization
каждого запроса указывайте IAM-токен;x-folder-id: <идентификатор_каталога>
Другие способы аутентификации в API описаны на странице Аутентификация в API Yandex Foundation Models.
Сгенерируйте изображение
Примечание
Чтобы повышать качество генерируемых ответов, YandexART логирует промты пользователей. Не передавайте в запросах чувствительную информацию и персональные данные.
- В консоли управления
выберите каталог, на который у вашего аккаунта есть рольai.imageGeneration.user
или выше. - В списке сервисов выберите Foundation Models.
- На панели слева выберите
YandexART. - В поле ввода опишите изображение, которое вы хотите сгенерировать. Старайтесь использовать яркие образы, описывайте детали, указывайте стили, если хотите получить изображение определенного вида.
- Параметр Зерно оставьте случайным или укажите любое значение.
- Нажмите кнопку Сгенерировать. Генерация изображения займет некоторое время. Ответ отобразится в левой части экрана.
Код в примере дожидается выполнения моделью запроса, затем сохраняет результат в переменную result
с последующим сохранением полученного изображения на диск в файл image.jpeg
в текущей директории. Дополнительные способы взаимодействия с моделью YandexART см. в разделе Сгенерировать изображение с помощью YandexART.
-
Создайте файл
generate-image.py
и добавьте в него следующий код:#!/usr/bin/env python3 from __future__ import annotations import pathlib from yandex_cloud_ml_sdk import YCloudML message = "узор из цветных пастельных суккулентов разных сортов, hd full wallpaper, четкий фокус, множество сложных деталей, глубина кадра, вид сверху" def main(): sdk = YCloudML( folder_id="<идентификатор_каталога>", auth="<API-ключ>", ) model = sdk.models.image_generation("yandex-art") # configuring model model = model.configure(width_ratio=2, height_ratio=1, seed=1863) path = pathlib.Path("./image.jpeg") operation = model.run_deferred(message) result = operation.wait() path.write_bytes(result.image_bytes) if __name__ == "__main__": main()
Где:
-
message
— переменная, значение которой содержит текст запроса на генерацию изображения.В качестве входных данных для запроса Yandex Cloud ML SDK может принимать строку, словарь, объект класса
TextMessage
или массив, содержащий любое сочетание указанных типов данных. Подробнее см. в разделе Использование Yandex Cloud ML SDK.
-
<идентификатор_каталога>
— идентификатор каталога, в котором создан сервисный аккаунт. -
<API-ключ>
— API-ключ сервисного аккаунта, полученный ранее и необходимый для аутентификации в API.В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.
-
-
Выполните созданный файл:
python3 generate-image.py
Результат:
-
Создайте файл с телом запроса (например,
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).
-
Отправьте запрос нейросети с помощью метода 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, содержащий параметры запроса.
В ответе сервис вернет идентификатор вашего запроса:
{ "id":"fbveu1sntj**********","description":"","createdAt":null,"createdBy":"","modifiedAt":null,"done":false,"metadata":null}
-
Генерация изображения занимает некоторое время. Подождите 10 секунд и отправьте запрос, чтобы получить результат генерации. Если изображение готово, результат вернется в кодировке 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
, полученное в ответе на запрос генерации.
Результат: