Распознавание изображений
Модели GigaChat умеют распознавать изображения и использовать их при генерации ответов. Для этого вы можете загрузить необходимые файлы изображений в хранилище и передать запрос с идентификатором файла в выбранную модель GigaChat. При генерации ответа, модель будет учитывать указанное изображение.
Работа с хранилищем файлов
Хранилище файлов позволяет получить идентификатор файла, который можно использовать при запросе к модели. Для работы с хранилищем GigaChat API предоставляет методы:
Загрузка файла в хранилище
Для загрузки файла в хранилище используйте метод POST /files
. Загруженные файлы будут доступны только вам.
Поддерживаемые форматы изображений:
Формат | MIME-тип |
---|---|
jpg | image/jpg |
png | image/png |
tiff | image/tiff |
bmp | image/bmp |
Максимальный размер одного файла — 15 Мб. Максимальный размер запроса — 20 Мб.
Чтобы модель использовала файл для генерации, укажите его идентификатор в массиве attachments
, в запросе на генерацию POST /chat/completions.
Пример запроса для загрузки файлов:
- cURL
- Python
```sh
curl --location --request POST 'https://gigachat.devices.sberbank.ru/api/v1/files' \
--header 'Authorization: Bearer <токе_доступа>' \
--form 'file=@"<путь_к_файлу>/example.jpeg"' \
--form 'purpose="general"'
```
```python
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 <токен_доступа>'
}
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
```sh
curl -L -X GET 'https://gigachat.devices.sberbank.ru/api/v1/files' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <токен_доступа>'
```
```python
import requests
url = "https://gigachat.devices.sberbank.ru/api/v1/files"
payload={}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer <токен_доступа>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
```
Для получения информации об отдельном файле используйте метод GET /files/{file}
:
- cURL
- Python
```sh
curl -L -X GET 'https://gigachat.devices.sberbank.ru/api/v1/files/:file' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <токен_доступа>'
```
```python
import requests
url = "https://gigachat.devices.sberbank.ru/api/v1/files/:file"
payload={}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer <токен_доступа>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
```
Удаление файла из хранилища
Для удаления файла из хранилища используйте метод GET /files/{file}/delete
.
В параметрах пути укажите идентификатор файла, который был получен при его загрузке в хранилище:
- cURL
- Python
```sh
curl -L -X POST 'https://gigachat.devices.sberbank.ru/api/v1/files/:file/delete' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <токен_доступа>'
```
```python
import requests
url = "https://gigachat.devices.sberbank.ru/api/v1/files/:file/delete"
payload={}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer <токен_доступа>'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
```
После удаления файл нельзя будет использовать для генерации.
Использование изображения для генерации
После загрузки файла в хранилище и получения его идентификатора, вы можете использовать его в запросах на генерацию.
Для этого передайте идентификаторы изображений, которые нужно использовать для генерации, в массиве attachments
.
В одном сообщении (объект в массиве messages
) можно передать только одно изображение.
В одном запросе можно передать до 10 изображений, независимо от количества сообщений.
- cURL
- Python
```sh
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": "user",
"content": "Что изображено на рисунке?",
"attachments": [
"80e0bcd5-2b78-4fa7-8783-903995f56b4b"
]
}
],
"stream": false,
"update_interval": 0
}'
```
```python
import requests
import json
url = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"
payload = json.dumps({
"model": "GigaChat",
"messages": [
{
"role": "user",
"content": "Что изображено на рисунке?",
"attachments": [
"d41a9a52-1918-4c53-9158-df96986737ac"
]
}
],
"stream": False,
"update_interval": 0
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <токен_доступа>'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
```