Интеграция 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) |
Прокси-сервер даёт дополнительный уровень безопасности: вы можете контролировать запросы, логировать и ограничивать доступ. 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
)
Потоковый режим возвращает Server-Sent Events — обработка аналогична YandexGPT: парсинг data: строк через URLSessionDataDelegate на iOS или EventSource на Android.
Сравнение моделей GigaChat
| Модель | Лимит токенов | Поддержка изображений | Стоимость (копеек за токен) |
|---|---|---|---|
| GigaChat | 8k | Нет | ~0.5 |
| GigaChat-Plus | 8k | Нет | ~1.0 |
| GigaChat-Pro | 32k | Да | ~2.0 |
*стоимость указана ориентировочно, актуальные тарифы уточняйте у провайдера.
GigaChat демонстрирует на 12% лучшую точность в русскоязычной деловой переписке по сравнению с GPT-4 (согласно внутренним тестам). Для мобильного приложения выбор модели зависит от задач: для простого чата подойдёт GigaChat, для анализа документов — Pro.
Особенности для мобильного UX
GigaChat умеет работать с изображениями (GigaChat-Pro). Загрузка через multipart POST на /files возвращает file_id, который передаётся в сообщении как attachment. Для мобильного приложения это означает: сначала загрузить фото, получить id, затем отправить в чат — два отдельных запроса.
Лимиты токенов: GigaChat — 8k, GigaChat-Pro — 32k. На мобильном клиенте обрезайте историю диалога до 10–15 последних сообщений, иначе входной контекст быстро переполнится. Закажите консультацию, чтобы мы помогли оптимизировать работу с контекстом и сократить расходы на токены до 40%.
Типичные ошибки при интеграции GigaChat
- Хранение client_secret в мобильном коде – это прямой путь к компрометации.
- Игнорирование обновления токена каждые 30 минут – приложение упадёт с 401 ошибкой.
- Отсутствие обработки ошибок SSL на устройствах с кастомными прошивками.
- Неправильный формат multipart-запроса для изображений – используйте корректный Content-Type.
Процесс работы и что входит
Наш опыт: более 5 лет в мобильной разработке, 20+ проектов с интеграцией AI и ML. Что входит в работу:
- Проектирование схемы авторизации (прокси-сервис + обновление токена)
- Настройка SSL через Certificate Pinning или свой домен
- Интеграция SDK (Swift/Kotlin) с поддержкой потоковой генерации
- Обработка изображений через multipart
- Тестирование на целевых устройствах и версиях ОС
- Документация по развертыванию и поддержке
Ориентиры по срокам
Настройка авторизации и базовых запросов — 2–3 дня. Полный чат с историей, потоковой генерацией и обработкой изображений — 6–10 дней.
Закажите интеграцию GigaChat в ваше мобильное приложение. Получите консультацию и оценку проекта за 1 рабочий день.







