Сгенерировать изображение с помощью YandexART
С помощью нейросети YandexART вы можете генерировать изображения в асинхронном режиме. В ответ на асинхронный запрос модель вернет объект Operation, содержащий идентификатор операции, по которому можно отследить ее выполнение и получить результат после того, как генерация завершится. Генерация результата в асинхронном режиме может занимать от пары минут до нескольких часов.
Перед началом работы
Чтобы воспользоваться примерами запросов через API, установите:
Получите данные для аутентификации в API, как описано на странице Аутентификация в API Yandex Foundation Models.
Сгенерируйте изображение
Примечание
Чтобы повышать качество генерируемых ответов, YandexART логирует промты пользователей. Не передавайте в запросах чувствительную информацию и персональные данные.
Пример ниже разработан для выполнения в операционных системах MacOS и Linux. Чтобы выполнить его в системе Windows, ознакомьтесь с особенностями работы с Bash в Microsoft Windows.
-
Создайте файл с телом запроса (например,
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, содержащий параметры запроса.
В ответе сервис вернет объект Operation:
{"id":"fbveu1sntj**********","description":"","createdAt":null,"createdBy":"","modifiedAt":null,"done":false,"metadata":null}
Сохраните идентификатор (
id
) операции, полученный в ответе. -
Генерация изображения может занять от нескольких секунд до нескольких часов. Подождите некоторое время и отправьте запрос по адресу:
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
, полученное в ответе на запрос генерации.