Створення AI-асистента для мобільного застосунку на YandexGPT
При розробці мобільного застосунку для українського/російського ринку постає питання: як додати AI-асистента, який працює з російською мовою та не залишає сервера РФ? YandexGPT — практично єдиний вибір, коли дані повинні оброблятися на серверах у РФ, потрібна відмінна якість російської мови та інтеграція з екосистемою Яндекса (пошук, карти, маркет). Ми, команда з досвідом понад п'ять років у мобільній розробці, інтегрували YandexGPT у більш ніж 15 проєктів — від фінтеху до e-commerce. Гарантуємо дотримання App Store Review Guidelines, безпеку ключів через серверний проксі та повну підтримку на всіх етапах. Отримайте консультацію — оцінимо ваш проєкт.
Як інтегрувати AI-асистента з голосовим управлінням?
Для голосового вводу/виводу в російськомовному застосунку — Yandex SpeechKit: найкраща якість російської мови серед доступних сервісів. SDK для iOS та Android доступні через CocoaPods та Maven відповідно. STT через WebSocket: wss://stt.api.cloud.yandex.net/speech/v3/stt:streamingRecognize — стримінгове розпізнавання з частковими результатами. TTS через REST з вибором голосу (alena, filipp, jane — SSML підтримується). Для голосового асистента ми рекомендуємо комбінувати SpeechKit з YandexGPT: розпізнавання → генерація відповіді → синтез.
Чому важливий серверний проксі для YandexGPT?
IAM-токен живе 12 годин і не повинен зберігатися в застосунку. Пряме використання IAM-токену порушує Section 5.1 App Store Review Guidelines (конфіденційність). Серверний проксі також дозволяє кешувати відповіді та керувати лімітами. Ми використовуємо серверний проксі: застосунок надсилає запити на ваш бекенд, який підписує їх сервісним акаунтом. Це виключає витік ключів і водночас дає контроль над навантаженням.
Yandex Foundation Models API
YandexGPT доступний через Yandex Cloud Foundation Models API. Базовий URL: https://llm.api.cloud.yandex.net/foundationModels/v1/completion. Для аутентифікації використовується IAM-токен (для користувацьких застосунків) або API-ключ сервісного акаунта (для серверного проксі). IAM-токен живе 12 годин і потребує оновлення — на мобільному клієнті напряму не застосовується.
Структура запиту:
struct YandexGPTRequest: Encodable { let modelUri: String // "gpt://{folder_id}/yandexgpt/latest" let completionOptions: CompletionOptions let messages: [YandexMessage] } struct CompletionOptions: Encodable { let stream: Bool let temperature: Double // 0..1 let maxTokens: String // строка, не число — особливість API } Важлива особливість: maxTokens передається рядком, не числом. Це порушує принцип найменшого подиву і періодично ламає автоматично згенеровані клієнти. modelUri будується як gpt://{folder_id}/{model_name}/{version}. folder_id — ідентифікатор папки в Yandex Cloud, його потрібно зберігати на сервері, не в застосунку.
Як працює стримінг YandexGPT у мобільному застосунку?
Для відображення відповідей у реальному часі необхідний стримінговий режим (stream: true у синхронному запиті). У цьому режимі сервер повертає chunked-відповідь з частковими результатами. Кожен чанк — повний JSON з накопиченим текстом (не дельта, а повний текст на кожному кроці). Це важливо: при рендері потрібно замінювати попередній текст новим, а не додавати дельту, як у OpenAI.
// Кожен чанк містить ПОВНИЙ текст, не дельту // Правильний рендер: func handleChunk(_ response: YandexCompletionResponse) { let fullText = response.result.alternatives.first?.message.text ?? "" DispatchQueue.main.async { self.currentMessage = fullText // replace, not append } } YandexGPT підтримує синхронний режим (/completion) з тайм-аутом 60 секунд і асинхронний (/completionAsync), де спочатку отримуємо operation_id, потім полінгом забираємо результат. Стримінг доступний лише в синхронному режимі.
Як вибрати між YandexGPT Lite та Pro?
| Параметр | YandexGPT Lite | YandexGPT Pro |
|---|---|---|
| Якість відповідей | Базова | Вища, особливо на довгих інструкціях |
| Швидкість | Швидше | Повільніше |
| Вартість | Дешевше | Дорожче |
| Контекст | 8192 токени | 8192 токени |
Для більшості завдань мобільного асистента (помічник, FAQ, обробка тексту) Lite достатній. Pro виправданий для складних аналітичних завдань та роботи з довгими документами. Embeddings API (/textEmbedding) стане в нагоді для семантичного пошуку в локальній базі знань — модель text-search-query/latest для запитів, text-search-doc/latest для документів.
Процес роботи
Старт: налаштування Yandex Cloud акаунта, створення сервісного акаунта, ролі ai.languageModels.user, серверний проксі для безпечного зберігання credentials. Розробка: API-клієнт → стримінговий UI з урахуванням повного тексту в чанках → керування історією → опціональна інтеграція SpeechKit. Завершальний етап — допомога з публікацією в App Store та Google Play.
Типові помилки при інтеграції
| Проблема | Рішення |
|---|---|
| maxTokens передається числом | Завжди передавати рядком, інакше 400 Bad Request |
| Повний текст у чанках | Замінювати текст, а не доповнювати (full text replace) |
| Витік folder_id | Зберігати folder_id на серверному проксі, не в застосунку |
Що входить у роботу
- Аналіз вимог і вибір моделі (Lite/Pro)
- Налаштування Yandex Cloud та серверного проксі
- Реалізація стримінгового чату з UI під iOS/Android
- Інтеграція SpeechKit (голосовий ввід/вивід)
- Документація API та схеми авторизації
- Допомога з публікацією в App Store / Google Play
- Підтримка після запуску (2 тижні)
Орієнтири за термінами
Текстовий асистент зі стримінгом — 1–2 тижні. З голосом через SpeechKit та серверним проксі — 3–4 тижні. Зв'яжіться з нами: оцінимо ваш проєкт, запропонуємо архітектуру та терміни. Працюємо під ключ. Економія часу та коштів на етапі налаштування та налагодження — до 30% порівняно з самостійною розробкою. Оптимізуйте бюджет: делегуйте інтеграцію професіоналам.
Ссилки: YandexGPT API documentation та App Store Review Guidelines.







