Обработка файлов
Модели GigaChat умеют обрабатывать текстовые документы и изображения, и использовать их при генерации ответов. Для этого вы можете загрузить необходимые файлы в хранилище и передать запрос с идентификатором файла в выбранную модель GigaChat. При генерации ответа, модель будет учитывать указанное изображение.
Работа с хранилищем файлов
Хранилище файлов позволяет получить идентификатор файла, который можно использовать при запросе к модели. Для работы с хранилищем GigaChat API предоставляет методы:
Загрузка файла в хранилище
Для загрузки файла в хранилище используйте метод POST /files
.
Загруженные файлы будут доступны только вам.
Хранилище поддерживает текстовые документы и изображения разных форматов.
- Текстовые документы
- Изображения
Формат | MIME-тип |
---|---|
txt | text/plain |
doc | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
docx | application/msword |
application/pdf |
Формат | MIME-тип |
---|---|
jpg | image/jpg |
png | image/png |
tiff | image/tiff |
bmp | image/bmp |
На размеры файлов действуют ограничения:
- максимальный размер одного текстового файла в запросе — 30 Мб;
- максимальный размер одного изображения в запросе — 15 Мб.
Чтобы модель использовала файл для генерации, укажите его идентификатор в массиве attachments
, в запросе на генерацию POST /chat/completions.
Пример запроса для загрузки файлов:
- cURL
- Python
curl --location --request POST 'https://gigachat.devices.sberbank.ru/api/v1/files' \
--header 'Authorization: Bearer access_token' \
--form 'file=@"<путь_к_файлу>/example.jpeg"' \
--form 'purpose="general"'
import requests
url = "https://gigachat.devices.sberbank.ru/api/v1/files"
payload = {'purpose': 'general'}
files=[
('file',('response.jpeg',open('<путь_к_файлу)>/example.jpeg','rb'),'image/jpeg'))
]
headers = {
'Authorization': 'Bearer access_token'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
В запросе обязательно нужно указать значение поля purpose="general"
.
Это позволит использовать файл в запросах на генерацию ответов.
В ответ вы получите объект с описанием файла:
{
"bytes": 120000,
"created_at": 1677610602,
"filename": "file123",
"id": "6f0b1291-c7f3-43c6-bb2e-9f3efb2dc98e",
"object": "file",
"purpose": "general",
"access_policy": "private"
}
Описание параметров — в справке API.
Получение информации о файлах
Для получения информации о доступных в хранилище файлах GigaChat API предоставляет два метода: GET /files
и GET /files/{file}
.
Для получения списка всех доступных вам файлов используйте метод GET /files
:
- cURL
- Python
curl -L -X GET 'https://gigachat.devices.sberbank.ru/api/v1/files' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer access_token'
import requests
url = "https://gigachat.devices.sberbank.ru/api/v1/files"
payload={}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer access_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Для получения информации об отдельном файле используйте метод GET /files/{file}
:
- cURL
- Python
curl -L -X GET 'https://gigachat.devices.sberbank.ru/api/v1/files/:file' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer access_token'
import requests
url = "https://gigachat.devices.sberbank.ru/api/v1/files/:file"
payload={}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer access_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Удаление файла из хранилища
Для удаления файла из хранилища используйте метод POST /files/{file}/delete
.
В параметрах пути укажите идентификатор файла, который был получен при его загрузке в хранилище:
- cURL
- Python
curl -L -X POST 'https://gigachat.devices.sberbank.ru/api/v1/files/:file/delete' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer access_token'
import requests
url = "https://gigachat.devices.sberbank.ru/api/v1/files/:file/delete"
payload={}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer access_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
После удаления файл нельзя будет использовать для генерации.
Использование файлов для генерации ответов
После загрузки файла в хранилище и получения его идентификатора, вы можете использовать его в запросах на генерацию.
Для этого передайте идентификаторы файлов, которые нужно использовать для генерации, в массиве attachments
.
Использование текстовых файлов
Вы можете указать любое количество текстовых документов, которые должны учитываться при генерации ответов
Примеры запросов на генерацию с использованием загруженных текстовых документов.
- cURL
- 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 access_token' \
--data-raw '{
"model": "GigaChat",
"messages": [
{
"role": "user",
"content": "Расскажи вкратце, что изложено в документе?",
"attachments": [
"80e0bcd5-2b78-4fa7-8783-903995f56b4b",
"1460d895-2b26-4ce0-8b0d-cc7665a969df"
]
}
],
"stream": false,
"update_interval": 0
}'
import requests
import json
url = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"
payload = json.dumps({
"model": "GigaChat-Pro",
"messages": [
{
"role": "user",
"content": "Расскажи вкратце, что изложено в документе?",
"attachments": [
"d41a9a52-1918-4c53-9158-df96986737ac",
"1460d895-2b26-4ce0-8b0d-cc7665a969df"
]
}
],
"stream": False,
"update_interval": 0
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer access_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Использование изображений
В одном сообщении (объект в массиве messages
) можно передать только одно изображение.
В одном запросе можно передать до 10 изображений, независимо от количества сообщений.
При этом общий размер запроса должен быть меньше 20 Мб.
Например, ваш запрос может включать текст промпта и два идентификатора изображений, которые ссылаются на файлы размерами 6 Мб и 12 Мб.
Примеры запросов на генерацию с использованием загруженных изображений.
- cURL
- 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 access_token' \
--data-raw '{
"model": "GigaChat-Pro",
"messages": [
{
"role": "user",
"content": "Что изображено на рисунке?",
"attachments": [
"80e0bcd5-2b78-4fa7-8783-903995f56b4b"
]
}
],
"stream": false,
"update_interval": 0
}'
import requests
import json
url = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"
payload = json.dumps({
"model": "GigaChat-Pro",
"messages": [
{
"role": "user",
"content": "Что изображено на рисунке?",
"attachments": [
"d41a9a52-1918-4c53-9158-df96986737ac"
]
}
],
"stream": False,
"update_interval": 0
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer access_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Тарификация изображений
При отправке изображений в GigaChat они преобразуются в токены. Количество токенов после преобразования зависит от размера и разрешения изображения. Максимальное количество токенов, которые могут быть потрачены на обработку изображения — 1792.
Токены оплачиваются в соответствии с тарифами GigaChat API.