Розробка AI-асистента на базі YandexGPT у мобільному додатку
YandexGPT — практичний вибір для AI-асистента, коли вимоги включають обробку даних на серверах у Росії, високу якість російської мови та інтеграцію з екосистемою Яндекса (пошук, карти, маркетплейс). Для додатків, орієнтованих на російський ринок зі строгими вимогами до локалізації даних, це не просто переважання—це compliance.
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 підтримує два режими:
-
synchronous (
/completion) — чекаємо повної відповіді, максимум 60 секунд -
asynchronous (
/completionAsync) — отримуємоoperation_id, потім опитуємо результат
Для мобільного асистента з відображенням у реальному часі потрібен потоковий режим (stream: true у синхронному запиті). Сервер повертає розбиту на чанки відповідь з частковими результатами. Кожен чанк—це повний JSON з накопленим текстом (не дельта, а повний текст на кожному кроці). Це важливо: під час рендеринга замініть попередній текст новим, не додавайте його, як в OpenAI.
// Кожен чанк містить ПОВНИЙ текст, не дельту
// Правильний рендеринг:
func handleChunk(_ response: YandexCompletionResponse) {
let fullText = response.result.alternatives.first?.message.text ?? ""
DispatchQueue.main.async {
self.currentMessage = fullText // replace, not append
}
}
YandexGPT Lite vs Pro
| Параметр | YandexGPT Lite | YandexGPT Pro |
|---|---|---|
| Якість відповідей | Базова | Вища, особливо на довгих інструкціях |
| Швидкість | Швидше | Повільніше |
| Вартість | Дешевше | Дорожче |
| Контекст | 8192 токени | 8192 токени |
Для більшості мобільних завдань асистента (помічник, FAQ, обробка тексту) Lite є достатньою. Pro виправдана для складних аналітичних завдань і роботи з довгими документами.
Embeddings API (/textEmbedding) корисна для семантичного пошуку в локальній базі знань—модель text-search-query/latest для запитів, text-search-doc/latest для документів.
Інтеграція з Yandex SpeechKit
Для голосового введення/виведення в російському додатку—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).
Процес роботи
Старт: конфігурація облікового запису Yandex Cloud, створення сервісного облікового запису, призначення ролі ai.languageModels.user, налаштування серверного проксі для безпечного зберігання облікових даних.
Розробка: API-клієнт → потоковий UI з врахуванням повного тексту в чанках → управління історією → додаткова інтеграція SpeechKit.
Кошторис строків
Текстовий асистент із потоком—1–2 тижні. З голосом через SpeechKit та серверний проксі—3–4 тижні.







