Создание изображений
GigaChat API вернет изображение, если в запросе на генерацию POST /chat/completions получит соответствующее сообщение, например: «Нарисуй розового кота». Изображения генерируются в бинарном виде в формате JPG с помощью встроенной функции text2image.
В ответ GigaChat возвращает идентификатор созданного изображения, которое можно скачать с помощью запроса POST /files/{file_id}/content.
Для создания изображения в запросе нужно передать параметр "function_call": "auto"
, с помощью которого модель определяет необходимость вызова функции text2image.
При создании изображений с помощью встроенной функции модель возвращает ответ с результатом "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": "system",
"content": "Ты — Василий Кандинский"
},
{
"role": "user",
"content": "Нарисуй розового кота"
}
],
"function_call": "auto"
}'
Пример ответа:
{
"choices": [
{
"message": {
"content": "Запускаю генерацию изображения. Ожидайте результат <img src=\"b28fbd4f-105a-43e0-ba5a-2faa80b1f43c\" fuse=\"true\"/> - вот розовый кот, который у меня получился.",
"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
}
}
Подробнее о функциях — в разделе Работа с функциями.
from gigachat import GigaChat
from gigachat.models import Chat, Messages, MessagesRole
giga = GigaChat(
credentials="ключ_авторизации",
)
payload = Chat(
messages=[
Messages(
role=MessagesRole.SYSTEM,
content="Ты — Василий Кандинский"
),
Messages(
role=MessagesRole.USER,
content="Нарисуй розового кот а"
)
],
function_call="auto",
)
response = giga.chat(payload)
print(response.choices[0].message.content)
Пример ответа:
<img src="27055233-d11d-4bab-af8e-8ce1b6b33bb0" fuse="true"/>
import { GigaChat } from 'gigachat';
const giga = new GigaChat({
credentials: 'ключ_авторизации',
});
const resp = await giga.chat({
messages: [
{
"role": "system",
"content": "Ты — Василий Кандинский"
},
{
role: "user",
content: "Нарисуй розового кота",
},
],
function_call: 'auto',
});
console.log(resp.choices[0]?.message.content);
Пример ответа:
<img src="27055233-d11d-4bab-af8e-8ce1b6b33bb0" fuse="true"/>
public class ImageDownloadFromCompletionsExample {
public static void main(String[] args) {
GigaChatClient client = GigaChatClient.builder()
.authClient(AuthClient.builder()
.withOAuth(OAuthBuilder.builder()
.scope(Scope.GIGACHAT_API_CORP)
.authKey("<ключ_атворизации>")
.build())
.build())
.build();
try {
// Получаем список моделей
var modelResponse = client.models();
if (modelResponse != null) {
var completionsResponse = client.completions(CompletionRequest.builder()
.model(modelResponse.data().get(0).id())
.messages(List.of(
ChatMessage.builder()
.role(Role.SYSTEM)
.content("Ты — художник Густав Климт")
.build(),
ChatMessage.builder()
.role(Role.USER)
.content("Нарисуй розового кота")
.build()))
.build());
String content = completionsResponse.choices().get(0).message().content();
System.out.println(content);
}
} catch (HttpClientException ex) {
System.out.println(ex.statusCode() + " " + ex.bodyAsString());
}
}
}
Скачивание изображения
Ответ модели будет содержать идентификатор получившегося изображения в формате uuid4
.
Идентификатор передается в поле message.content
, в теге <img>
, в атрибуте src
:
{
"message": {
"content": "<img src=\"a598ae3d-d3eb-454e-a8bf-0848193a603e\" fuse=\"true\"/>",
"role": "assistant"
},
"index": 0,
"finish_reason": "stop"
}
Для скачивания изображения передайте полученный идентификатор в запросе GET /files/{file_id}/content: