Обработка файлов
Модели GigaChat умеют обрабатывать текстовые документы, изображения или аудио, и использовать их при генерации ответов. Для этого вы можете загрузить необходимые файлы в хранилище и передать запрос с идентификатором файла в выбранную модель GigaChat. При генерации ответа модель будет учитывать указанные файлы.
Работа с хранилищем файлов
Хранилище файлов позволяет получить идентификатор файла, который можно использовать при запросе к модели. Для работы с хранилищем GigaChat API предоставляет методы:
- POST /files;
- GET /files;
- GET /files/{file};
- POST /files/{file}/delete.
Загрузка файла в хранилище
Для загрузки файла в хранилище используйте метод POST /files. Загруженные файлы будут доступны только вам.
Хранилище поддерживает текстовые документы и изображения разных форматов.
| Формат | MIME-тип |
|---|---|
| txt | text/plain |
| doc | application/msword |
| docx | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
| application/pdf | |
| epub | application/epub |
| ppt | application/ppt |
| pptx | application/pptx |
| Формат | MIME-тип |
|---|---|
| jpeg | image/jpeg |
| png | image/png |
| tiff | image/tiff |
| bmp | image/bmp |
| Формат | MIME-тип |
|---|---|
| mp4 | audio/mp4 |
| mp3 | audio/mp3 |
| m4a | audio/x-m4a |
| wav | audio/x-wav audio/wave audio/wav audio/x-pn-wav |
| weba | audio/webm |
| ogg | audio/x-ogg |
| opus | audio/opus |
На размеры файлов действуют ограничения:
- максимальный размер одного аудиофайла в запросе — 35 Мб;
- максимальный размер одного изображения в запросе — 15 Мб;
- максимальный размер одного текстового файла в запросе — 40 Мб.
Общий размер загружаемых аудиофайлов и изображений должен быть меньше 80 Мб.
При использовании больших текстовых файлов в запросах на генерацию, их содержимое может превышать размер контекста модели. В таком случае вернется ошибка с кодом 422.
Пример запроса для загрузки файлов:
curl --location --request POST 'https://gigachat.devices.sberbank.ru/api/v1/files' \
--header 'Authorization: Bearer access_token' \
--form 'file=@"<путь_к_файлу>/example.jpeg"' \
--form 'purpose="general"'
from gigachat import GigaChat
giga = GigaChat(
credentials="ключ_авторизации",
verify_ssl_certs=False,
)
file = giga.upload_file(open("путь_к_файлу", "rb"))
public class UploadFileExample {
public static void main(String[] args) {
GigaChatClient client = GigaChatClient.builder()
.authClient(AuthClient.builder()
.withOAuth(OAuthBuilder.builder()
.scope(Scope.GIGACHAT_API_PERS)
.authKey("<ключ_авторизации>")
.build())
.build())
.build();
try {
System.out.println(client.uploadFile(UploadFileRequest.builder()
.file(new byte[1000])
.mimeType("application/pdf")
.fileName("test.pdf")
.purpose("general")
.build()));
} catch (HttpClientException ex) {
System.out.println(ex.statusCode() + " " + ex.bodyAsString());
}
}
}
В запросе обязательно нужно указать значение поля 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 -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 -L -X GET 'https://gigachat.devices.sberbank.ru/api/v1/files/:file' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer access_token'