Модуль 2.8 · Урок 1
Урок 1: GigaChat API — Начало работы
Содержание
- Чему вы научитесь
- Содержание
- Шаг 1: Регистрация на developers.sber.ru
- Шаг 2: Получение авторизационных данных
- Шаг 3: OAuth2 Авторизация и получение access token
- Шаг 4: Работа с российским CA-сертификатом
- Шаг 5: Первый запрос к GigaChat API
- Шаг 6: Сравнение моделей GigaChat
- Шаг 7: Лимиты и цены
- Попробуйте сами
- Ключевые выводы
- Следующий урок
Чему вы научитесь
- Регистрироваться на платформе Sber для разработчиков
- Получать авторизационные данные (Client ID и Client Secret)
- Проходить OAuth2 авторизацию и получать access token
- Работать с российским CA-сертификатом для HTTPS
- Отправлять первые запросы к GigaChat API на Python
- Различать модели GigaChat 2 Lite, GigaChat 2 Pro и GigaChat 2 Max
- Ориентироваться в ценах и лимитах бесплатного тарифа
Содержание
Шаг 1: Регистрация на developers.sber.ru
GigaChat — это LLM от Сбербанка, разработанная с учётом особенностей русского языка. Она работает целиком в инфраструктуре России, что важно для компаний, подпадающих под ФЗ-152 (закон о защите персональных данных).
Чтобы начать работу:
- Перейдите на developers.sber.ru
- Создайте аккаунт (используйте рабочий email)
- Подтвердите email
- Перейдите в раздел «API» → «GigaChat»
- Нажмите «Создать новое приложение»
Шаг 2: Получение авторизационных данных
После создания приложения вы получите:
| Параметр | Описание |
|---|---|
| Client ID | Уникальный идентификатор вашего приложения |
| Client Secret | Секретный ключ (храните в переменных окружения!) |
| Scope | GIGACHAT_API_PERS (физлица), GIGACHAT_API_B2B (юрлица пакет), GIGACHAT_API_CORP (юрлица pay-as-you-go) |
| RQ-UUID | Уникальный идентификатор запроса (генерируется на клиенте) |
[!] Никогда не коммитьте Client Secret в репозиторий! Используйте .env файлы или переменные окружения.
Шаг 3: OAuth2 Авторизация и получение access token
GigaChat использует OAuth2. Вот как получить access token:
sequenceDiagram
participant C as Client
participant A as Auth Server
participant G as GigaChat API
C->>A: POST /oauth
A-->>C: access_token
C->>G: POST /chat
G-->>C: ответ
import requests
import uuid
import base64
import os
from dotenv import load_dotenv
load_dotenv()
# Ваши учётные данные
CLIENT_ID = os.getenv("GIGACHAT_CLIENT_ID")
CLIENT_SECRET = os.getenv("GIGACHAT_CLIENT_SECRET")
# Параметры авторизации
AUTH_URL = "https://ngw.devices.sberbank.ru:9443/api/v2/oauth"
RQ_UUID = str(uuid.uuid4())
# Создаём базовую авторизацию (Client ID:Client Secret в Base64)
credentials = f"{CLIENT_ID}:{CLIENT_SECRET}"
encoded_credentials = base64.b64encode(credentials.encode()).decode()
# Заголовки для авторизации
headers = {
"Authorization": f"Basic {encoded_credentials}",
"RQ-UUID": RQ_UUID,
"Content-Type": "application/x-www-form-urlencoded"
}
# Тело запроса
data = {
"grant_type": "client_credentials",
"scope": "GIGACHAT_API_PERS" # GIGACHAT_API_B2B или GIGACHAT_API_CORP для организаций
}
# Отправляем запрос авторизации
response = requests.post(AUTH_URL, headers=headers, data=data)
if response.status_code == 200:
token_data = response.json()
access_token = token_data["access_token"]
expires_in = token_data["expires_in"]
print(f"[+] Token получен! Действителен {expires_in} секунд")
print(f"Token: {access_token[:20]}...")
else:
print(f"[-] Ошибка авторизации: {response.status_code}")
print(response.text)
Шаг 4: Работа с российским CA-сертификатом
GigaChat использует российский CA (удостоверяющий центр). В некоторых окружениях может потребоваться явно указать путь к сертификату:
import requests
# Если возникает ошибка SSL, используйте:
response = requests.get(
url,
headers=headers,
verify="/path/to/russian-ca.pem" # Путь к сертификату
)
# Или отключите проверку ([!] только для разработки!):
response = requests.get(url, headers=headers, verify=False)
В production всегда используйте проверку сертификата.
Шаг 5: Первый запрос к GigaChat API
Теперь отправим простой запрос:
import requests
import json
import uuid
ACCESS_TOKEN = "your_access_token_here" # Получили на шаге 3
RQ_UUID = str(uuid.uuid4())
API_URL = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"
headers = {
"Authorization": f"Bearer {ACCESS_TOKEN}",
"Content-Type": "application/json",
"RQ-UUID": RQ_UUID
}
payload = {
"model": "GigaChat-2", # или GigaChat-2-Pro, GigaChat-2-Max
"messages": [
{
"role": "user",
"content": "Привет! Расскажи, что ты умеешь делать?"
}
],
"temperature": 0.7,
"max_tokens": 256
}
response = requests.post(API_URL, headers=headers, json=payload)
if response.status_code == 200:
result = response.json()
message = result["choices"][0]["message"]["content"]
print(f"[AI] GigaChat: {message}")
else:
print(f"[-] Ошибка: {response.status_code}")
print(response.text)
Шаг 6: Сравнение моделей GigaChat
Актуальная линейка — GigaChat 2 (выпущена в 2025 году). Более ранние названия GigaChat, GigaChat-Plus, GigaChat-Pro устарели.
| Характеристика | GigaChat-2 (Lite) | GigaChat-2-Pro | GigaChat-2-Max |
|---|---|---|---|
| Скорость | Быстрая | Средняя | Медленная |
| Качество | [+] Хорошее | [+][+] Лучше | [+][+][+] Лучшее |
| Размер контекста | 128K токенов | 128K токенов | 128K токенов |
| Стоимость за 1K токенов | 0,40 ₽ | 3,00 ₽ | 3,90 ₽ |
| Мультимодальность | [-] | [+] Vision | [+] Vision |
| Рекомендуется для | Чаты, простые задачи | Аналитика, обработка | RAG, сложные задачи |
GigaChat 2 Max занял 1-е место в независимом бенчмарке MERA для русского языка (2025).
Шаг 7: Лимиты и цены
Бесплатный тир (Freemium):
- 1 000 000 токенов бесплатно для физических лиц
- Лимит на параллельные запросы ≤ 5
- Достаточно для прототипирования и обучения
Платные тарифы — стоимость за 1K токенов:
- GigaChat-2 (Lite): 0,40 ₽
- GigaChat-2-Pro: 3,00 ₽
- GigaChat-2-Max: 3,90 ₽
Пакет для юрлиц:
- 400 ₽ за пакет → 10 млн токенов
- Enterprise: контактируйте sales@sber.ru
Отслеживайте использование в личном кабинете: Приложения → Статистика.
Попробуйте сами
Создайте файл .env:
GIGACHAT_CLIENT_ID=your_client_id
GIGACHAT_CLIENT_SECRET=your_client_secret
Установите зависимости:
pip install requests python-dotenv
Запустите полный скрипт:
import requests
import uuid
import base64
import os
import json
from dotenv import load_dotenv
load_dotenv()
class GigaChatClient:
def __init__(self, client_id, client_secret):
self.client_id = client_id
self.client_secret = client_secret
self.access_token = None
self.auth_url = "https://ngw.devices.sberbank.ru:9443/api/v2/oauth"
self.api_url = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"
def get_token(self):
"""Получить access token"""
credentials = f"{self.client_id}:{self.client_secret}"
encoded = base64.b64encode(credentials.encode()).decode()
headers = {
"Authorization": f"Basic {encoded}",
"RQ-UUID": str(uuid.uuid4()),
"Content-Type": "application/x-www-form-urlencoded"
}
data = {
"grant_type": "client_credentials",
"scope": "GIGACHAT_API_PERS"
}
response = requests.post(self.auth_url, headers=headers, data=data)
if response.status_code == 200:
self.access_token = response.json()["access_token"]
return True
else:
print(f"Ошибка авторизации: {response.text}")
return False
def chat(self, message, model="GigaChat-2"):
"""Отправить сообщение"""
if not self.access_token:
if not self.get_token():
return None
headers = {
"Authorization": f"Bearer {self.access_token}",
"Content-Type": "application/json",
"RQ-UUID": str(uuid.uuid4())
}
payload = {
"model": model,
"messages": [{"role": "user", "content": message}],
"temperature": 0.7,
"max_tokens": 256
}
response = requests.post(self.api_url, headers=headers, json=payload)
if response.status_code == 200:
return response.json()["choices"][0]["message"]["content"]
else:
print(f"Ошибка запроса: {response.status_code} - {response.text}")
return None
# Использование
client = GigaChatClient(
os.getenv("GIGACHAT_CLIENT_ID"),
os.getenv("GIGACHAT_CLIENT_SECRET")
)
result = client.chat("На русском: напиши шутку про программистов")
print(f"Ответ: {result}")
Задачи для упражнения:
- Создайте клиент и отправьте сообщение на русском языке
- Сравните ответы для одного вопроса между моделями (GigaChat-2 vs GigaChat-2-Pro)
- Отслеживайте время ответа и используемые токены
- Попробуйте увеличить
max_tokensдо 1024 и задайте более сложный вопрос
Ключевые выводы
[+] Запомните:
- OAuth2 — стандарт авторизации; Client Secret нужно хранить в переменных окружения
- access_token действует ограниченное время (обычно 30 минут), требует обновления
- RQ-UUID — уникальный идентификатор каждого запроса, помогает отслеживать запросы в логах
- Три модели — GigaChat-2, GigaChat-2-Pro, GigaChat-2-Max — выбирайте по соотношению скорость/качество для вашей задачи
- Цены в рублях — большой плюс для российских стартапов и компаний
- Бесплатный тир — 1 млн токенов бесплатно, достаточно для прототипирования
Дополнительные материалы:
Следующий урок
В Уроке 2: YandexGPT API мы изучим альтернативу от Яндекса — её особенности, интеграцию с Yandex Cloud и Python SDK для удобной работы.
Узнаем, почему YandexGPT популярна в финтеке и когда её стоит выбирать вместо GigaChat.