Розробка AI-асистента в мобільному застосунку на базі GigaChat (Сбер)
Мобільні застосунки для фінансового та медичного секторів зобов'язані зберігати дані в РФ. GigaChat — єдина велика мовна модель із серверами в російському контурі. Ми інтегрували її в 15+ проєктів: від банківських чат-ботів до аналітики документів. Процес від підписання до деплою займає від 2 до 4 тижнів. Оцініть свій сценарій — напишіть нам для попереднього аудиту.
Проблеми, які вирішуємо
-
Юридична ізоляція даних. 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 тижнів, вартість від 150 000 рублів.
- З function calling та зображеннями: від 3 до 4 тижнів, вартість від 350 000 рублів.
Ми маємо 5+ років досвіду в інтеграції AI-асистентів та 15+ успішних проєктів із GigaChat. Для точної оцінки напишіть нам — ми підготуємо пропозицію під ваш проєкт.







