Обработка файлов
Модели 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'