ym88659208ym87991671
Создание изображений | Документация для разработчиков

Создание изображений

Обновлено 6 мая 2024

В ответ на определенным образом составленные промпты GigaChat API может возвращать изображения. Изображения генерируются в бинарном виде в формате JPG.

Запросы на создание изображений отличаются в зависимости от того поддерживает модель функции или нет.

В ответ GigaChat возвращает идентификатор созданного изображения, которое можно скачать с помощью запроса POST /files/:file_id/content.

Функциональность недоступна в GigaChain.

С помощью моделей без поддержки функций

При работе с моделями без поддержки функций (GigaChat, GigaChat-Plus, GigaChat-Pro) создавать изображения можно как системного промпта, так и с помощью специального системного промпта ("role": "system").

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

Без системного промпта

Если вы не используете системный промпт, но вам нужно сгенерировать изображение, достаточно в запросе POST /chat/completions передать сообщение пользователя ("role": "user") с промптом промпт, указывающим, что нужно создать изображение («нарисуй…»):

curl -L -X POST 'https://gigachat.devices.sberbank.ru/api/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <токен_доступа>' \
--data-raw '{
"model": "GigaChat",
"messages": [
{
"role": "user",
"content": "Нарисуй логотип моей компании, которая занимается производством корма для котов."
}
],
"temperature": 1,
"top_p": 0.1,
"n": 1,
"stream": false,
"max_tokens": 512,
"repetition_penalty": 1,
"update_interval": 0
}'

С системным промптом

Если для решения своих задач вы используете системный промпт ("role": "system") и вы хотите генерировать изображения, то в промпт обязательно нужно добавить фразу:

Если тебя просят создать изображение, ты должен сгенерировать специальный блок: <fuse>text2image(query: str, style: str)</fuse>,\nгде query — текстовое описание желаемого изображения, style — необязательный параметр, задающий стиль изображения.

Пример:

curl -L -X POST 'https://gigachat.devices.sberbank.ru/api/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <токен_доступа>' \
--data-raw '{
"model": "GigaChat",
"messages": [
{
"role": "system",
"content": "Ты профессиональный художник. Если тебя просят создать изображение, ты должен сгенерировать специальный блок: <fuse>text2image(query: str, style: str)</fuse>,\nгде query — логотип моей компании, которая занимается производством корма для котов, style — абстракция."
}
],
"temperature": 1,
"top_p": 0.1,
"n": 1,
"stream": false,
"max_tokens": 512,
"repetition_penalty": 1,
"update_interval": 0
}'

С помощью моделей с поддержкой функций

При работе с моделями с поддержкой функций (GigaChat-Pro, GigaChat-preview и GigaChat-Plus-preview) изображения генерируются с помощью встроенной функции.

Подробнее о моделях — в разделе Модели GigaChat.

Для создания изображения с помощью встроенной функции нужно передать параметр "function_call": "auto". При этом модель возвращает ответ с результатом "finish_reason": "stop". Отдельная подготовка системного промтпа не нужна.

Встроенные функции вызываются только в автоматическом режиме ("function_call": "auto") на основе запроса пользователя.

При создании изображений с помощью встроенной функции модель возвращает ответ с результатом "finish_reason": "stop".

Пример запроса на генерацию изображения:

curl -L -X POST 'https://gigachat.devices.sberbank.ru/api/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <токен_доступа>' \
--data-raw '{
"model": "GigaChat",
"messages": [
{
"role": "user",
"content": "Нарисуй корову"
}
],
"function_call": "auto",
}'

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

{
"choices": [
{
"message": {
"role": "assistant",
"content": "Вот что у меня получилось:<img \src="7wy0e9934sbjc09snz40c2gf1mej42ra0r00d8yz4d47r0adb17281t3096qpnamb4eqc1t3bd7qj1jman5q2mtzawfqrmgtbd7dv2bx54" func:"true"/> ",
"data_for_context": [
{
"role": "assistant",
"content": "Вот что у меня получилось: ",
"function_call": {
"name": "text2image",
"arguments": {"query": "Корова"}
}
},
{
"role": "function",
"content": "{\"status\": \"success\"}"
},
{
"role": "assistant",
"content": ""
}
]

},
"index": 0,
"finish_reason": "stop"
}
],
"created": 1699620229,
"model": "GigaChat",
"usage": {
"prompt_tokens": 195,
"completion_tokens": 2,
"total_tokens": 197
},
"object": "chat.completion"
}

Массив data_for_context содержит сообщения для работы модели в правильном контексте.

Подробнее о функциях — в разделе Работа с функциями.

Скачивание изображения

Ответ модели будет содержать идентификатор получившегося изображения в теге <img>, в аттрибуте src:

{
"choices": [
{
"message": {
"content": "<img src=\"1d72amtvbcc2jj2dbcdqwk2t00d2tj0r5pxze88t0r0kynrg00c2211em740pqabbwc26njsa9a7jngz11a741tp0na2m0rzb1a2a10da8djt08wbgd2enq2a5gpr\" fuse=\"true\"/>",
"role": "assistant"
},
"index": 0,
"finish_reason": "stop"
}
],
"created": 1707384246,
"model": "GigaChat:3.1.24.3",
"object": "chat.completion",
"usage": {
"prompt_tokens": 100,
"completion_tokens": 38,
"total_tokens": 138
}
}

Для скачивания изображения передайте полученный идентификатор в запросе GET /files/{file_id}/content:

curl -L -X GET 'https://gigachat.devices.sberbank.ru/api/v1/files/<идентификатор_изображения>/content' -o "<имя_файла>.jpg" \
-H 'Accept: application/jpg' \
-H 'Authorization: Bearer <токен_доступа>'

Ответ на запрос будет содержать бинарное представление файла в формате JPG.

Смотрите также

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.