ym88659208ym87991671
gRPC API | Документация для разработчиков

gRPC API

Обновлено 23 мая 2024

Для обмена данными с сервисом GigaChat вы можете использовать gRPC-протокол. Подробнее о нем читайте в официальной документации.

Совершать запросы по протоколу gRPC удобно, если нужно:

  • максимально быстро получить ответ;
  • поддержать отзывчивый интерфейс с отображением пользователю промежуточных результатов работы нейросети.

Адрес для передачи запросов по протоколу gRPC:

gigachat.devices.sberbank.ru

Для работы с API используйте proto-файл.

gigachatv1.proto
syntax = "proto3";

package gigachat.v1;

option go_package = "./;protocol";

service ChatService {
rpc Chat (ChatRequest) returns (ChatResponse);
rpc ChatStream (ChatRequest) returns (stream ChatResponse);
}

message ChatRequest {
ChatOptions options = 1;
string model = 2;
repeated Message messages = 3;
}

message ChatOptions {
float temperature = 1;
float top_p = 2;
int32 max_alternatives = 3;
int32 max_tokens = 4;
float repetition_penalty = 5;
float update_interval = 6;
repeated string flags = 7;
}

message Message {
string role = 1;
string content = 2;
string unprocessed_content = 3;
}

message ChatResponse {
repeated Alternative alternatives = 1;
Usage usage = 2;
ModelInfo model_info = 3;
int64 timestamp = 4;
}

message Alternative {
Message message = 1;
string finish_reason = 2;
int32 index = 3;
}

message Usage {
int32 prompt_tokens = 1;
int32 completion_tokens = 2;
int32 total_tokens = 3;
}

message ModelInfo {
string name = 1;
string version = 2;
}


service ModelsService {
rpc ListModels (ListModelsRequest) returns (ListModelsResponse);
rpc RetrieveModel (RetrieveModelRequest) returns (RetrieveModelResponse);
}

message ListModelsRequest {}

message ListModelsResponse {
repeated Model models = 1;
}

message Model {
string name = 1;
string object = 2;
string owned_by = 3;
}

message RetrieveModelRequest {
string name = 1;
}

message RetrieveModelResponse {
Model model = 1;
}

Авторизация

Запросы к сервису авторизуются с помощью токена доступа по протоколу OAuth 2.0. Токен доступа передается в заголовке authorization. Пример:

Bearer <токен доступа>

Подробно о том как получить токен доступа читайте в разделах Быстрый старт для физических лиц и Быстрый старт для ИП и юридических лиц.

Описание методов

Получить список моделей

Возвращает массив объектов с данными доступных моделей. Выполняется с пустым телом запроса.

Ответ:

Array of objects (Model) [ items ]
object
string

Тип сущности в ответе, например, список.

{
  • "data": [
    ],
  • "object": "list"
}

Получить модель

Возвращает объект с описанием указанной модели.

Параметры запроса:

model
string

Название модели.

{
  • "model": "GigaChat:v1.2.19.2"
}

Ответ:

object
{
  • "model": {
    }
}

Получить ответ модели

Возвращает ответ модели с учетом переданных сообщений.

Параметры запроса:

model
required
string

Название модели, от которой нужно получить ответ.

Для выбора последней актуальной модели используйте GigaChat:latest.

required
Array of objects (Messages) [ items ]

Массив сообщений. Передайте несколько прошлых сообщений, чтобы сервис учитывал историю чата.

Подробнее читайте в разделе Работа с историей чата.

object

Параметры чата

{
  • "model": "GigaChat:latest",
  • "messages": [
    ],
  • "options": {
    }
}

Ответ:

Array of objects (Choices) [ items ]

Массив ответов модели.

timestamp
integer <int64>

Дата и время создания ответа в формате Unix time.

model_info
string

Название модели, которая вернула ответ.

object (Usage)

Данные об использовании модели.

{
  • "alternatives": [
    ],
  • "timestamp": 1678878333,
  • "model_info": "GigaChat:latest",
  • "usage": {
    }
}

Ошибки

ОшибкаОписание
400Ошибка в параметрах запроса
401Отсутствует токен доступа или истекло время действия токена
404Не найдена модель
405Ошибка при вводе
413Превышен максимальный размер входных данных
500Внутренняя ошибка сервиса
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.