Інтеграція GigaChat API (Сбер)
GigaChat — LLM від Сбербанку через SberCloud. Як і YandexGPT — російська юрисдикція для обробки даних, що важливо для фінансових установ, держструктур та компаній з вимогами локалізації даних за 152-ФЗ. GigaChat інтегрується з екосистемою Сбера: SberDevices, SberCloud, GigaChain (форк LangChain).
Отримання доступу
# 1. Реєстрація на developers.sber.ru
# 2. Створення проекту та отримання client_id / client_secret
# 3. OAuth 2.0 авторизація для отримання access_token
import requests
import base64
import uuid
CLIENT_ID = "your-client-id"
CLIENT_SECRET = "your-client-secret"
SCOPE = "GIGACHAT_API_PERS" # Для фізлиць
# GIGACHAT_API_B2B для бізнесу
# GIGACHAT_API_CORP для корпоративного
def get_access_token() -> str:
credentials = base64.b64encode(f"{CLIENT_ID}:{CLIENT_SECRET}".encode()).decode()
response = requests.post(
"https://ngw.devices.sberbank.ru:9443/api/v2/oauth",
headers={
"Authorization": f"Basic {credentials}",
"RqUID": str(uuid.uuid4()),
"Content-Type": "application/x-www-form-urlencoded",
},
data={"scope": SCOPE},
verify=False, # Самопідписаний сертифікат Сбера
)
return response.json()["access_token"]
Базові запити
def gigachat_chat(prompt: str, access_token: str) -> str:
response = requests.post(
"https://gigachat.devices.sberbank.ru/api/v1/chat/completions",
headers={"Authorization": f"Bearer {access_token}"},
json={
"model": "GigaChat",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.1,
"max_tokens": 1024,
},
verify=False,
)
return response.json()["choices"][0]["message"]["content"]
# З кешуванням токена
from datetime import datetime, timedelta
class GigaChatClient:
def __init__(self, client_id: str, client_secret: str):
self.client_id = client_id
self.client_secret = client_secret
self._token = None
self._token_expires = None
def _ensure_token(self):
if not self._token or datetime.now() >= self._token_expires:
self._token = get_access_token()
self._token_expires = datetime.now() + timedelta(minutes=25) # Токен живе 30 хв
def chat(self, messages: list[dict], model: str = "GigaChat") -> str:
self._ensure_token()
response = requests.post(
"https://gigachat.devices.sberbank.ru/api/v1/chat/completions",
headers={"Authorization": f"Bearer {self._token}"},
json={"model": model, "messages": messages, "temperature": 0.1},
verify=False,
)
return response.json()["choices"][0]["message"]["content"]
GigaChain — LangChain для GigaChat
from langchain_community.chat_models import GigaChat
from langchain_core.messages import HumanMessage, SystemMessage
chat = GigaChat(
credentials="Base64(client_id:client_secret)",
scope="GIGACHAT_API_PERS",
model="GigaChat",
verify_ssl_certs=False,
streaming=False,
)
response = chat.invoke([
SystemMessage(content="Ти — фінансовий консультант"),
HumanMessage(content="Поясни ключову ставку ЦБ РФ"),
])
print(response.content)
Моделі GigaChat
| Модель | Опис |
|---|---|
| GigaChat | Базова модель |
| GigaChat-Plus | Покращена версія |
| GigaChat-Pro | Максимальна якість |
| GigaChat-Max | Флагман |
Кейс використання
Банківський контакт-центр: автоматичні відповіді на запитання клієнтів про продукти. GigaChat обраний через вимоги регулятора до локалізації даних банківських клієнтів. Інтеграція з внутрішньою CRM через REST API.
Терміни виконання
- Отримання доступу + базова інтеграція: 2–3 дні
- GigaChain/LangChain інтеграція: 1 тиждень
- Production з token refresh та retry: +2–3 дні







