Быстрый старт для ИП и юридических лиц
Следуйте инструкциям из этого раздела и вы пройдете путь от регистрации в личном кабинете до первых запросов API и SDK.
Для работы с GigaChat API установите сертификаты НУЦ Минцифры.
Шаг 1. Создайте проект GigaChat API
Проект GigaChat API нужен для получения авторизационных данных. С их помощью вы можете получить токен доступа для авторизации запросов к API, а также для управления платными опциями.
Подробнее об авторизационных данных
Авторизационные данные — строка, полученная в результате кодирования в Base64 клиентского идентификатора (Client ID) и ключа (Client Secret) API. Вы можете использовать готовые данные из личного кабинета или самостоятельно закодировать идентификатор и ключ.
Авторизационные данные нужны для получения токена доступа с помощью запроса POST /api/v2/oauth
.
При этом, если вы хотите протестировать API с помощью консоли в документации, для получения токена доступа потребуются именно идентификатор и ключ, которые используются в качестве логина и пароля соответственно. Консоль автоматически кодирует их в Base64.
Это связано с тем, что запрос POST /api/v2/oauth
работает по Basic-схеме аутентификации.
Для этого:
Зарегистрируйтесь или авторизуйтесь в личном кабинете.
Перейдите в корпоративное пространство (предоплата).
Нажмите Создать проект в левом меню.
Выберите GigaChat API Business в разделе AI-модели.
Ознакомьтесь и примите условия пользовательского соглашения.
В открывшемся окне введите название проекта.
Для генерации клиентского ключа нажмите кнопку Сгенерировать новый Client Secret.
Авторизационные данные могут получить только пользователи с ролями Владелец и Администратор — для остальных ролей кнопка Сгенерировать новый Client Secret будет неактивна.
Подробнее о ролях и их возможностях — в разделе Настройка команды в пространстве.
В открывшемся окне скопируйте и сохраните значение полей Client Secret и Авторизационные данные.
Клиентский ключ, а следовательно и авторизационные данные, отображаются только один раз и не хранятся в личном кабинете.
При компрометации или утере клиентского ключа или авторизационных данных вы можете сгенерировать новое значение.
Шаг 2. Получите токен доступа
Токен доступа нужен для авторизации запросов к GigaChat API по Bearer-схеме.
Токен получается в обмен на авторизационные данные с помощью запроса POST /api/v2/oauth
.
При отправке запроса на получение токена доступа нужно указать версию АПИ, к которой будут выполняться запросы:
GIGACHAT_API_B2B
— доступ для ИП и юридических лиц по предоплате.GIGACHAT_API_CORP
— доступ для ИП и юридических лиц по постоплате.
Токен действителен в течение 30 минут.
Пример запроса для получения токена доступа:
- cURL
- Python
curl -L -X POST 'https://ngw.devices.sberbank.ru:9443/api/v2/oauth' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept: application/json' \
-H 'RqUID: <идентификатор_запроса>' \
-H 'Authorization: Basic <авторизационные_данные>' \
--data-urlencode 'scope=GIGACHAT_API_B2B'
import requests
url = "https://ngw.devices.sberbank.ru:9443/api/v2/oauth"
payload='scope=GIGACHAT_API_B2B'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'RqUID': 'идентификатор_запроса',
'Authorization': 'Basic <авторизацонные_данные>'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример ответа:
{
"access_token": "<токен_доступа>",
"expires_at": 1706026848841
}
В справочной документации вы найдете подробное описание параметров запроса и ответа. Также сможете сгенерировать токен доступа с помощью своего идентификатора (Client ID) и клиентского ключа (Client Secret).
Используйте полученный токен доступа для авторизации запросов к GigaChat API.
Шаг 3. Запросы к GigaChat API
Перед работой с API в личном кабинете нужно приобрести пакеты токенов на минимальную сумму в 20 000 рублей.
Запросы к GigaChat API авторизуются с помощью токена доступа, который передан в заголовке Authorization
.
Подробное описание всех запросов к API — в справочной документации.
Пример запроса на получение списка моделей:
- cURL
- Python
curl https://gigachat.devices.sberbank.ru/api/v1/models \
-H 'Authorization: Bearer <токен_доступа>' \
import requests
url = "https://gigachat.devices.sberbank.ru/api/v1/models"
payload={}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer <токен_доступа>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Запрос возвращает список моделей GigaChat:
{
"object": "list",
"data": [
{
"id": "GigaChat",
"object": "model",
"owned_by": "salutedevices"
},
{
"id": "GigaChat-Plus",
"object": "model",
"owned_by": "salutedevices"
},
{
"id": "GigaChat-Plus-preview",
"object": "model",
"owned_by": "salutedevices"
},
{
"id": "GigaChat-Pro",
"object": "model",
"owned_by": "salutedevices"
},
{
"id": "GigaChat-Pro-preview",
"object": "model",
"owned_by": "salutedevices"
},
{
"id": "GigaChat-preview",
"object": "model",
"owned_by": "salutedevices"
}
]
}
Модели GigaChat обладают разными возможностями и тарифицируются по-разному.
Генерация текста
За генерацию текста и изображений отвечает запрос POST /chat/completions
.
С помощью запросов на генерацию вы можете решать самые разные задачи: переводить, исправлять и стилизовать текст, генерировать краткое содержание статей и выделять из них основные идеи, создавать изображения и многое другое.
Запросы на генерацию тратят токены.
Токен — единица тарификации. Токен может быть символом, несколькими символами, фрагментом слова или словом целиком. В среднем в одном токене 3—4 символа, включая пробелы, знаки препинания и специальные символы.
Токены расходуются как на запрос, так и на ответ модели.
Вы можете заранее оценить количество токенов в запросе с помощью запроса POST /tokens/count
.
Разные модели считают токены по-разному.
Количество оставшихся токенов отображается в личном кабинете проекта GigaChat API.
Если вы используете API как юридическое лицо или ИП, в вашем личном кабинете также будет доступен мониторинг потребления токенов.
Пример запроса на генерацию текста:
- 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 <токен_доступа>' \
--data-raw '{
"model": "GigaChat",
"messages": [
{
"role": "user",
"content": "Привет! Как дела?"
}
],
"stream": false,
"repetition_penalty": 1
}'
import requests
import json
url = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"
payload = json.dumps({
"model": "GigaChat",
"messages": [
{
"role": "user",
"content": "Привет! Как дела?"
}
],
"stream": False,
"repetition_penalty": 1
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer <токен_доступа>'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример ответа:
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "Все отлично, спасибо. А как ваши дела?",
"role": "assistant"
}
}
],
"created": 1706096547,
"model": "GigaChat",
"object": "chat.completion",
"usage": {
"completion_tokens": 12,
"prompt_tokens": 173,
"system_tokens": 0,
"total_tokens": 185
}
}
Если вы хотите получить наиболее сбалансированный ответ, не передавайте параметры temperature
и top_p
.
В таком случае модель применит значения по умолчанию.
Подробное описание параметров — в справке API.
Создание эмбеддинга
Для создания эмбеддингов используется запрос POST /embeddings
.
Эмбеддинги нужны для определения смыслового сходства текстов, что позволяет решать задачи вроде поиска, извлечения данных из текстов и других.
При создании эмбеддинга расходуются токены, также как и при генерации контента. Запросы на создание эмбеддингов передаются в модель Embeddings.
Подробнее о создании эмбеддингов читайте в разделе Векторное представление текста.
Пример запроса:
- cURL
- Python
curl -L -X POST 'https://gigachat.devices.sberbank.ru/api/v1/embeddings' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <токен_доступа>' \
--data-raw '{
"model": "Embeddings",
"input": [
"Расскажи о современных технологиях"
]
}'
import requests
import json
url = "https://gigachat.devices.sberbank.ru/api/v1/embeddings"
payload = json.dumps({
"model": "Embeddings",
"input": [
"Расскажи о современных технологиях"
]
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer <токен_доступа>'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Шаг 4. Использование GigaChat SDK (GigaChain)
GigaChain — это библиотека Python, которая позволяет упростить и автоматизировать работу с нейросетевой моделью GigaChat и другими большими языковыми моделями (LLM). GigaChain является версией библиотеки LangChain, которая адаптирована для работы с русским языком.
Для работы с SDK установите библиотеки gigachain
и gigachat
:
pip install gigachain
pip install gigachat
Библиотека gigachat
— отдельная python-библиотека, которая позволяет отправлять запросы к GigaChat. Обмен данными с моделью обеспечивается с помощью GigaChat API.
Простой пример работы с чатом с помощью модуля GigaChat:
"""Пример работы с чатом через gigachain"""
from langchain.schema import HumanMessage, SystemMessage
from langchain.chat_models.gigachat import GigaChat
# Авторизация в сервисе GigaChat
chat = GigaChat(credentials='<авторизационные_данные>', verify_ssl_certs=False)
messages = [
SystemMessage(
content="Ты эмпатичный бот-психолог, который помогает пользователю решить его проблемы."
)
]
while(True):
# Ввод пользователя
user_input = input("User: ")
messages.append(HumanMessage(content=user_input))
res = chat(messages)
messages.append(res)
# Ответ модели
print("Bot: ", res.content)