Создание изображений
GigaChat API вернет изображение, если в запросе на генерацию POST /chat/completions
получит соответствующее сообщение, например: «Нарисуй розового кота».
Изображения генерируются в бинарном виде в формате JPG с помощью встроенной функции text2image.
В ответ GigaChat возвращает идентификатор созданного изображения, которое можно скачать с помощью запроса POST /files/:file_id/content
.
Для создания изображения в запросе нужно передать параметр "function_call": "auto"
, с помощью которого модель определяет необходимость вызова функции text2image.
При создании изображений с помощью встроенной функции модель возвращает ответ с результатом "finish_reason": "stop"
.
Вы можете стилизовать изображения с помощью системного промпта.
- GigaChat API
- Python
Пример запроса на создание изображения:
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": "Ты — Василий Кандинский"
},
{
"role": "user",
"content": "Нарисуй розового кота"
}
],
"function_call": "auto"
}'
Пример ответа:
{
"choices": [
{
"message": {
"content": "Запускаю генерацию изображения. Ожидайте результат <img src=\"b28fbd4f-105a-43e0-ba5a-2faa80b1f43c\" fuse=\"true\"/> - вот розовый кот, который у меня получился.",
"role": "assistant",
"data_for_context": [
{
"content": "Запускаю генерацию изображения. Ожидайте результат",
"role": "assistant",
"function_call": {
"name": "text2image",
"arguments": {
"query": "pink cat, cartoon, colorful, drawing"
}
}
},
{
"content": "{\"status\":\"success\"}",
"role": "function",
"name": "text2image"
},
{
"content": " - вот розовый кот, который у меня получился.",
"role": "assistant"
}
]
},
"index": 0,
"finish_reason": "stop"
}
],
"created": 1716367703,
"model": "GigaChat:3.1.25.3",
"object": "chat.completion",
"usage": {
"prompt_tokens": 372,
"completion_tokens": 48,
"total_tokens": 420
}
}
Массив data_for_context
содержит сообщения для работы модели в правильном контексте.
Подробнее о функциях — в разделе Работа с функциями.
from gigachat import GigaChat
from gigachat.models import Chat, Messages, MessagesRole
giga = GigaChat(credentials="ключ_авторизации", verify_ssl_certs=False)
payload = Chat(
messages=[Messages(role=MessagesRole.USER, content="Нарисуй космонавта верхом на лошади")],
temperature=0.7,
max_tokens=100,
function_call="auto",
)
response = giga.chat(payload)
print(response)
Пример ответа:
ChatCompletion(choices=[Choices(message=Messages(role='assistant', content='<img src="27055233-d11d-4bab-af8e-8ce1b6b33bb0" fuse="true"/> нарисовал для вас космонавта, катающегося на лошади.', function_call=None, name=None, attachments=None, data_for_context=[Messages(role='assistant', content='', function_call=FunctionCall(name='text2image', arguments={'query': 'cosmonaut, horseback, surreal'}), name=None, attachments=None, data_for_context=None, functions_state_id=None, id_=None), Messages(role='function', content='{"status":"success"}', function_call=None, name='text2image', attachments=None, data_for_context=None, functions_state_id=None, id_=None), Messages(role='assistant', content='нарисовал для вас космонавта, катающегося на лошади.', function_call=None, name=None, attachments=None, data_for_context=None, functions_state_id=None, id_=None)], functions_state_id='2635697b-8a92-4c9d-8e34-3324509fd25e', id_=None), index=0, finish_reason='stop')], created=1733326786, model='GigaChat:1.0.26.15', usage=Usage(prompt_tokens=717, completion_tokens=55, total_tokens=772), object_='chat.completion')
Скачивание изображения
Ответ модели будет содержать идентификатор получившегося изображения в формате uuid4
.
Идентификатор передается в поле message.content
, в теге <img>
, в атрибуте src
:
{
"message": {
"content": "Запускаю генерацию изображения. Ожидайте результат <img src=\"b28fbd4f-105a-43e0-ba5a-2faa80b1f43c\" fuse=\"true\"/> - вот розовый кот, который у меня получился.",
"role": "assistant",
"data_for_context": [
{
"content": "Запускаю генерацию изображения. Ожидайте результат",
"role": "assistant",
"function_call": {
"name": "text2image",
"arguments": {
"query": "pink cat, cartoon, colorful, drawing"
}
}
},
{
"content": "{\"status\":\"success\"}",
"role": "function",
"name": "text2image"
},
{
"content": " - вот розовый кот, который у меня получился.",
"role": "assistant"
}
]
},
"index": 0,
"finish_reason": "stop"
}
Для скачивания изображения передайте полученный идентификатор в запросе GET /files/{file_id}/content
:
- cURL
- Python
- Postman
curl -L -X GET 'https://gigachat.devices.sberbank.ru/api/v1/files/идентификатор_изображения/content' -o "<имя_файла>.jpg" \
-H 'Accept: application/jpg' \
-H 'Authorization: Bearer <токен_доступа>'
Если запрос на создание изображения содержал заголовок X-Client-ID
, то такой же заголовок нужно передавать в запросе на скачивание файла.
curl -L -X GET 'https://gigachat.devices.sberbank.ru/api/v1/files/<идентификатор_изображения>/content' -o "<имя_файла>.jpg" \
-H 'Accept: application/jpg' \
-H 'X-Client-ID: <идентификатор_пользователя>' \
-H 'Authorization: Bearer <токен_доступа>'
Пример скачивания изображения:
import requests
import shutil
url = "https://gigachat.devices.sberbank.ru/api/v1/files/идентификатор_изображения/content"
headers = {
'Accept': 'application/jpg',
'Authorization': 'Bearer <токен_доступа>'
}
response = requests.request("GET", url, headers=headers, stream=True)
with open('<имя_файла>.jpg', 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
del response
Чтобы получить сгенерированное изображение с помощью библиотеки gigachat, передайте его идентификатор в методе get_image()
:
# Скачивание изображения {#undefined}
img = giga.get_image("идентификатор_изображения")
Если вы используете коллекцию запросов Postman, вы можете сохранить ответ на запрос GET /files/{file_id}/content
в файл с помощью опции Save response to file.
Ответ на запрос будет содержать бинарное представление файла в формате JPG.