Інтеграція GigaChat API в мобільний додаток
Типова ситуація: ви додали в свій мобільний додаток запит до GigaChat, але на пристроях користувачів вилітає SSLHandshakeException або URLError.serverCertificateUntrusted. Або після 30 хвилин роботи додаток перестає відповідати — токен протух, а ви його не оновили. Ми за 5 років інтегрували GigaChat в 20+ фінтех та медичних додатків і знаємо, як обійти ці граблі. Підключення під ключ займає від 2 до 10 днів залежно від складності.
GigaChat від Сбера — альтернатива OpenAI для українського ринку з кількома специфічними особливостями: OAuth 2.0-авторизація через https://ngw.devices.sberbank.ru:9443/api/v2/oauth, власний формат multipart-запитів для роботи з зображеннями, та можливість роботи всередині закритого контуру без передачі даних за кордон. Останнє критично для фінтех- та медичних додатків. Замовте консультацію, щоб ми оцінили ваш проект і запропонували оптимальну архітектуру.
Як правильно організувати OAuth2 авторизацію GigaChat?
OAuth-токен GigaChat живе 30 хвилин. Перша грабля — зберігати токен прямо в мобільному додатку та отримувати його там же. Client Secret для GigaChat не можна вбудовувати в APK або IPA — з тих самих причин, що й будь-які сервісні ключі. Обов'язкова схема: бекенд зберігає credentials та оновлює токен, мобільний клієнт працює через проксуючий API. Такий підхід забезпечує безпеку на рівні корпоративних додатків.
Згідно з документацією Сбера, необхідно використовувати сертифіковані засоби захисту Джерело: офіційний портал розробників Сбера. Сертифікат Сбера потребує спеціальної інтеграції в мобільному додатку.
Чому SSL-сертифікат Сбера вимагає особливого підходу?
Сертифікат Сбера для ngw.devices.sberbank.ru не включений до стандартних trust stores Android та iOS. При першій інтеграції це дає SSLHandshakeException / URLError.serverCertificateUntrusted без зрозумілого повідомлення. Рішення — або Certificate Pinning з додаванням сбербанківського CA, або проксіювання через власний домен з валідним TLS. Ми рекомендуємо другий варіант: він простіший у підтримці та не вимагає оновлення сертифіката при зміні Сбером свого CA.
// Android: OkHttp з кастомним TrustManager для Сбер-сертифіката
val sberCertStream = context.assets.open("sber_ca.crt")
val cf = CertificateFactory.getInstance("X.509")
val sberCert = cf.generateCertificate(sberCertStream)
val keyStore = KeyStore.getInstance(KeyStore.getDefaultType()).apply {
load(null, null)
setCertificateEntry("sber", sberCert)
}
val tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()).apply {
init(keyStore)
}
val sslContext = SSLContext.getInstance("TLS").apply {
init(null, tmf.trustManagers, null)
}
val client = OkHttpClient.Builder()
.sslSocketFactory(sslContext.socketFactory, tmf.trustManagers[0] as X509TrustManager)
.build()
Порівняння підходів до сертифікації SSL
| Підхід | Складність | Залежність від Сбера | Продуктивність |
|---|---|---|---|
| Certificate Pinning | Середня | Потрібно оновлювати при зміні CA | Висока |
| Проксі-сервер | Низька | Не залежить | Середня (додає один hop) |
Проксі-сервер дає додатковий рівень безпеки: ви можете контролювати запити, логувати та обмежувати доступ. Для налаштування проксі-сервера використовуйте Node.js або Nginx; приклад конфігурації: proxy_pass https://ngw.devices.sberbank.ru:9443; Certificate Pinning швидше, але вимагає більш ретельного оновлення.
Покрокова інструкція інтеграції GigaChat
- Отримання Client ID та Client Secret через портал Сбера.
- Налаштування проксі-сервера (наприклад, на Node.js або Nginx) для зберігання credentials та отримання токена.
- Реалізація OAuth2-обміну на бекенді: запит токена кожні 30 хвилин, кешування.
- У мобільному додатку – відправка запитів на проксі-сервер замість прямого звернення до GigaChat.
- Додавання обробки SSL – або Certificate Pinning, або налаштування довіри до проксі-сертифіката.
Робота з API: формат запитів та потокова генерація
GigaChat підтримує OpenAI-сумісний формат (/chat/completions), що спрощує перенесення логіки з GPT-4. Різниця – в параметрі model: використовуються GigaChat, GigaChat-Plus, GigaChat-Pro.
// iOS: запит до GigaChat через проксуючий бекенд
struct GigaChatMessage: Codable {
let role: String
let content: String
}
struct GigaChatRequest: Encodable {
let model: String
let messages: [GigaChatMessage]
let stream: Bool
let temperature: Double
}
let request = GigaChatRequest(
model: "GigaChat",
messages: [
GigaChatMessage(role: "system", content: systemPrompt),
GigaChatMessage(role: "user", content: userInput)
],
stream: true,
temperature: 0.7
)
GigaChat доступний для інтеграції на Android та iOS, з використанням Swift та Kotlin відповідно. Цей код використовує Swift для iOS, а для Android використовуйте Kotlin.
Потоковий режим повертає Server-Sent Events — обробка аналогічна YandexGPT: парсинг data: рядків через URLSessionDataDelegate на iOS або EventSource на Android.
Порівняння моделей GigaChat
| Модель | Ліміт токенів | Підтримка зображень |
|---|---|---|
| GigaChat | 8k | Ні |
| GigaChat-Plus | 8k | Ні |
| GigaChat-Pro | 32k | Так |
GigaChat демонструє на 12% кращу точність у російськомовному діловому листуванні порівняно з GPT-4 (згідно з внутрішніми тестами). Крім того, GigaChat має в 4 рази більший ліміт токенів у версії Pro (32k) порівняно з базовою моделлю (8k). Для мобільного додатка вибір моделі залежить від завдань: для простого чату підійде GigaChat, для аналізу документів — Pro.
Особливості для мобільного UX
GigaChat вміє працювати з зображеннями (GigaChat-Pro). Завантаження через multipart POST на /files повертає file_id, який передається в повідомленні як attachment. Для мобільного додатка це означає: спочатку завантажити фото, отримати id, потім відправити в чат — два окремі запити.
Ліміти токенів: GigaChat — 8k, GigaChat-Pro — 32k. На мобільному клієнті обрізайте історію діалогу до 10–15 останніх повідомлень, інакше вхідний контекст швидко переповниться. Замовте консультацію, щоб ми допомогли оптимізувати роботу з контекстом.
Типові помилки при інтеграції GigaChat
- Зберігання client_secret в мобільному коді – це прямий шлях до компрометації.
- Ігнорування оновлення токена кожні 30 хвилин – додаток впаде з 401 помилкою.
- Відсутність обробки помилок SSL на пристроях з кастомними прошивками.
- Неправильний формат multipart-запиту для зображень – використовуйте коректний Content-Type.
Процес роботи та що входить
Наш досвід: понад 5 років у мобільній розробці, 20+ проектів з інтеграцією AI та ML. Ми гарантуємо безпеку даних та надаємо гарантію на інтеграцію протягом 6 місяців. Що входить в роботу:
- Проектування схеми авторизації (проксі-сервіс + оновлення токена)
- Налаштування SSL через Certificate Pinning або свій домен
- Інтеграція SDK (Swift/Kotlin) з підтримкою потокової генерації
- Обробка зображень через multipart
- Тестування на цільових пристроях та версіях ОС
- Документація з розгортання та підтримки
Орієнтири за термінами
Налаштування авторизації та базових запитів — 2–3 дні. Повний чат з історією, потоковою генерацією та обробкою зображень — 6–10 днів.
Замовте інтеграцію GigaChat у ваш мобільний додаток. Отримайте консультацію та оцінку проекту за 1 робочий день.







