Быстрый старт для ИП и юридических лиц
Следуйте инструкциям из этого раздела и вы пройдете путь от регистрации в личном кабинете до первых запросов API и SDK.
Для работы с GigaChat API установите сертификаты НУЦ Минцифры.
Шаг 1. Отправьте заявку на доступ к проекту GigaChat API
Проект GigaChat API нужен для получения авторизационных данных. С их помощью вы можете получить токен доступа для авторизации запросов к API, а также для управления платными опциями.
Авторизационные данные — это пара идентификатор (Client ID) и клиентский ключ (Client Secret), закодированные в base64.
Чтобы заполнить и отправить заявку для получение доступа к GigaChat API:
Зарегистрируйтесь или авторизуйтесь в личном кабинете.
Перейдите в корпоративное пространство.
Нажмите Создать проект в левом меню.
Выберите Запросить доступ GigaChat API в разделе AI-модели.
Заполните заявку на получение доступа к GigaChat API.
Перед отправкой заявки изучите условия оферты.
Нажмите кнопку Отправить заявку.
Если у вас уже есть личный кабинет, авторизуйтесь и отправьте заявку на доступ к GigaChat API по ссылке.
Шаг 2. Подтвердите согласие с офертой
После отправки запроса на доступ к GigaChat API вам нужно сообщить о согласии с офертой. Для этого:
Скачайте и заполните заявление.
Чтобы заполнить поле Идентификатор (ID) Аккаунта (workspace ID), перейдите на главную страницу корпоративного пространства и скопируйте из адресной строки все символы после
https://developers.sber.ru/studio/workspaces/
.Отправьте нам заполненное заявление в формате
doc/docx
по ЭДО.
Рассмотрение запроса на доступ обычно занимает до двух рабочих дней после предоставления документов. Вы получите письмо на свой электронный адрес с положительным или отрицательным ответом. Чтобы сократить время рассмотрения заявки, отправьте письмо на электронную почту.
Шаг 3. Получите авторизационные данные
При положительном ответе на заявку вам будет доступен проект GigaChat API в личном кабинете. В созданном проекте вы найдете идентификатор пользователя API (Client ID) и кнопку для генерации клиентского ключа (Client Secret).
Для получения авторизационных данных нажмите кнопку Сгенерировать новый Client Secret. Авторизационные данные могут получить только пользователи с ролями Владелец и Администратор — для остальных ролей кнопка Сгенерировать новый Client Secret будет неактивна.
Подробнее о ролях и их возможностях — в разделе Настройка команды в пространстве.
Авторизационные данные — это строка, полученная в результате кодирования в base64 идентификатора и клиентский ключ.
Вы можете сгенерировать их самостоятельно.
В открывшемся окне скопируйте и сохраните значение поля Авторизационные данные.
Полученные авторизационные данные нужно передавать в заголовке Authorization
запросов к версии GigaChat API для ИП и юридических лиц: scope=GIGACHAT_API_CORP
.
Клиентский ключ, а следовательно и авторизационные данные, отображаются только один раз и не хранятся в личном кабинете.
При компрометации или утере клиентского ключа или авторизационных данных вы можете сгенерировать новое значение.
Шаг 4. Получите токена доступа
Токен доступа нужен для авторизации запросов к GigaChat API по Bearer-схеме.
Токен получается в обмен на авторизационные данные с помощью запроса POST /api/v2/oauth
.
Токен действителен в течение 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_CORP'
import requests
url = "https://ngw.devices.sberbank.ru:9443/api/v2/oauth"
payload='scope=GIGACHAT_API_CORP'
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.
Шаг 5. Запросы к GigaChat API
Запросы к GigaChat API авторизуются с помощью токена доступа, который передан в заголовке Authorization
:
curl https://gigachat.devices.sberbank.ru/api/v1/models \
-H 'Authorization: Bearer <токен_доступа>' \
Подробное описание всех запросов к API — в справочной документации.
Генерация текста
За генерацию текста отвечает запрос POST /chat/completions
.
Запросы на генерацию текста тратят токены.
Токены расходуются как на запрос, так и на ответ модели.
Вы можете заранее оценить количество токенов в запросе с помощью запроса POST /tokens/count
.
Разные модели считают токены по-разному.
Количество оставшихся токенов отображается в личном кабинете проекта GigaChat API.
Токен — единица тарификации. Токен может быть символом, несколькими символами, кусочком слова или словом целиком. В среднем в одном токене 3—4 символа, включая пробелы, знаки препинания и специальные символы.
Пример запроса:
- 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": "Привет! Как дела?"
}
],
"temperature": 1.0,
"top_p": 0.1,
"n": 1,
"stream": false,
"max_tokens": 512,
"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": "Привет! Как дела?"
}
],
"temperature": 1,
"top_p": 0.1,
"n": 1,
"stream": False,
"max_tokens": 512,
"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
}
}
Создание эмбеддинга
Для создания эмбеддингов используется запрос 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)
Шаг 6. Использование 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)