Разработка AI-ассистента в мобильном приложении на базе GigaChat (Сбер)
Мобильные приложения для финансового и медицинского секторов обязаны хранить данные в РФ. GigaChat — единственная крупная языковая модель с серверами в российском контуре. Мы интегрировали её в 15+ проектов: от банковских чат-ботов до аналитики документов. Процесс от подписания до деплоя занимает от двух до четырёх недель. Оцените свой сценарий — свяжитесь с нами для предварительного аудита.
Проблемы, которые решаем
-
Юридическая изоляция данных. GigaChat размещается на серверах Сбера в РФ. Это единственный вариант для приложений, где 152-ФЗ требует локального хранения. YandexGPT тоже работает в РФ, но GigaChat имеет более гибкую B2B-адаптацию с корпоративными тарифами и выделенными ресурсами. Например, клиенты с большим объёмом запросов получают dedicated endpoint с гарантированной пропускной способностью.
-
OAuth 2.0 с короткоживущими токенами. Access_token GigaChat живёт 30 минут. Прямое получение на мобильном устройстве небезопасно — client_id и client_secret должны оставаться только на сервере. Мы проектируем серверный прокси, который берёт на себя авторизацию и выдаёт токен клиенту. Это снижает риск утечки учётных данных.
-
Нестандартные корневые сертификаты. Сбер использует собственные CA из реестра Минцифры. В production нужно явно добавить эти сертификаты в доверенные — иначе HTTPS-соединение упадёт. Мы уже настроили это под iOS (через ATS), Android (Network Security Config) и серверные платформы. Потери производительности нет — время установки соединения увеличивается не более чем на 5%.
Как авторизоваться в GigaChat API?
Протокол OAuth 2.0 с типом client_credentials. Запрос:
POST https://ngw.devices.sberbank.ru:9443/api/v2/oauth
Authorization: Basic {base64(client_id:client_secret)}
Content-Type: application/x-www-form-urlencoded
scope=GIGACHAT_API_CORP
Токен возвращается в JSON с полями access_token и expires_at. На мобильном клиенте мы не храним секреты — все запросы идут через наш серверный прокси, который получает токен и передаёт его клиенту по защищённому каналу. Пример серверного кода (Python):
# Серверная сторона (Python) — получение токена
import httpx, base64, time
class GigaChatAuth:
def __init__(self, client_id: str, client_secret: str):
self._credentials = base64.b64encode(
f"{client_id}:{client_secret}".encode()
).decode()
self._token = None
self._expires_at = 0
async def get_token(self) -> str:
if time.time() < self._expires_at - 60:
return self._token
async with httpx.AsyncClient(verify=False) as client:
resp = await client.post(
"https://ngw.devices.sberbank.ru:9443/api/v2/oauth",
headers={"Authorization": f"Basic {self._credentials}"},
data={"scope": "GIGACHAT_API_CORP"}
)
data = resp.json()
self._token = data["access_token"]
self._expires_at = data["expires_at"] / 1000
return self._token
Ссылка: GigaChat API Specification (текущая версия). Важно: verify=False допустим только для тестирования. В production подключайте сертификаты Минцифры (например, через файл cacert.pem).
Почему серверный прокси обязателен?
Прямое использование GigaChat API с мобильного устройства — грубейшая ошибка безопасности. client_secret — это ключ к вашему аккаунту. Если он скомпрометирован, злоумышленник может генерировать токены за ваш счёт. Прокси решает эту проблему: он хранит секрет, а мобильное приложение получает только временный токен. Дополнительно прокси позволяет:
- Кэшировать токены и уменьшать число запросов к GigaChat (экономия до 40% на лимитах).
- Логировать все запросы для аудита.
- Добавить собственную бизнес-логику (например, модерацию контента или A/B-тестирование).
Какая модель GigaChat подходит для вашего приложения?
| Модель | Скорость | Качество | Изображения | Best for |
|---|---|---|---|---|
| GigaChat | ✅ Быстро | ⭐⭐⭐ Среднее | ❌ Нет | Простые чат-боты, FAQ |
| GigaChat-Plus | ✅✅ Очень быстро | ⭐⭐⭐⭐ Хорошее | ❌ Нет | Быстрые ответы, поддержка |
| GigaChat-Pro | ⬇️ Немедленнее | ⭐⭐⭐⭐⭐ Отличное | ✅ Да | Анализ документов, изображений |
GigaChat-Pro в 2-3 раза точнее базовой модели на задачах извлечения данных и финансового анализа. Если ваш ассистент должен работать с отчётами и графиками, выбирайте Pro. В наших проектах точность извлечения данных из отчётов достигает 95%.
Как Function Calling упрощает интеграцию с бэкендом?
GigaChat поддерживает вызов функций через параметр functions. Синтаксис отличается от OpenAI: поле называется functions (не tools), а вызов приходит в function_call (не tool_calls). Это первое, что ломается при миграции. Пример запроса:
{
"functions": [{
"name": "get_account_balance",
"description": "Получить баланс счёта клиента",
"parameters": {
"type": "object",
"properties": {
"account_id": {"type": "string"}
},
"required": ["account_id"]
}
}],
"function_call": "auto"
}
Мы реализовали такой паттерн в нескольких проектах — ассистент сам решает, когда вызвать функцию, и возвращает структурированные данные. Это позволяет интегрироваться с любым REST API без ручного парсинга.
Работа с изображениями
GigaChat Pro позволяет загружать изображения через файловый API. Шаги:
- Загрузить файл
POST /api/v1/filesсpurpose: general. Максимальный размер — 20 МБ. - Получить
file_id. - Передать его в сообщении как
image_url:https://gigachat.ru/files/{file_id}/content.
Файл удаляется через 24 часа — это важно учитывать при проектировании. Для критичных данных рекомендуем выгружать сразу.
Что входит в работу
- Серверный прокси с OAuth 2.0 (Python/Go/Node.js).
- Мобильный SDK для iOS/Android/Flutter с обработкой токенов и стриминга (SSE).
- Настройка российских корневых сертификатов для production.
- Реализация function calling под вашу бизнес-логику.
- Интеграция с файловым API (если нужны изображения).
- Документация по развёртыванию и поддержке.
Процесс работы
| Этап | Описание | Срок |
|---|---|---|
| Аналитика | Обсуждаем сценарии использования, требования к безопасности | 1-3 дня |
| Проектирование | Архитектура прокси, схемы авторизации, модель данных | 2-5 дней |
| Реализация | Пишем код, настраиваем сертификаты, тестируем | 5-15 дней |
| Интеграция | Подключаем к вашему мобильному приложению | 2-5 дней |
| Деплой | Разворачиваем на вашем сервере или в облаке, передаём доступы | 1-2 дня |
Для настройки сертификатов: на iOS используем ATS, на Android — Network Security Config. На сервере обновляем CA bundle. Мы подготовили пошаговые инструкции для каждой платформы.
Сроки ориентировочно
- Базовый текстовый ассистент (прокси + чат-интерфейс): от 1,5 до 2 недель.
- С function calling и изображениями: от 3 до 4 недель.
Стоимость рассчитывается индивидуально. Для точной оценки свяжитесь с нами — мы подготовим предложение под ваш проект.







