Інтеграція YandexGPT у мобільний додаток
YandexGPT ідеальна там, де важна російськомовна семантика: підтримка клієнтів, автозаповнення форм, генерація контенту. Моделі OpenAI краще справляються з англійською — YandexGPT дає переваги саме для російськомовної аудиторії, особливо при роботі з регіональними запитами та спеціалізованою лексикою.
Завдання інтеграції на перший погляд просте: POST на https://llm.api.cloud.yandex.net/foundationModels/v1/completion, передати IAM-токен і текст. На практиці — це ланцюг нетривіальних рішень.
Авторизація: IAM-токен та API-ключ
Перша точка відказу — авторизація. IAM-токен живе 12 годин, API-ключ — постійний, але менш безпечний. Зберігати сервісний ключ безпосередньо в мобільному додатку неможна: його витягнуть з APK за 10 хвилин через apktool. Правильна схема: мобільний клієнт аутентифікується в вашому backend, backend тримає IAM-токен та проксує запити до Yandex Cloud.
// iOS: запит через власний proxy
struct YGPTRequest: Encodable {
let prompt: String
let maxTokens: Int
let temperature: Double
}
func sendToYandexGPT(prompt: String) async throws -> String {
let url = URL(string: "https://api.yourapp.com/ai/complete")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer \(authToken)", forHTTPHeaderField: "Authorization")
request.httpBody = try JSONEncoder().encode(YGPTRequest(
prompt: prompt,
maxTokens: 500,
temperature: 0.7
))
let (data, _) = try await URLSession.shared.data(for: request)
return try JSONDecoder().decode(CompletionResponse.self, from: data).text
}
На Android — аналогічно через Retrofit з OkHttp-інтерсептором для підстановки токена.
Потокова генерація (stream: true)
Режим stream: true в API Yandex Foundation Models повертає відповідь чанками — як у ChatGPT. Для мобільного UX це важливо: користувачі бачать текст по мірі генерації, не чекаючи 3–5 секунд.
На iOS обробляйте Server-Sent Events через URLSessionDataDelegate:
class StreamingDelegate: NSObject, URLSessionDataDelegate {
var onChunk: (String) -> Void
var buffer = Data()
func urlSession(_ session: URLSession,
dataTask: URLSessionDataTask,
didReceive data: Data) {
buffer.append(data)
// парсинг SSE: шукаємо "data:" рядки
guard let text = String(data: buffer, encoding: .utf8) else { return }
let lines = text.components(separatedBy: "\n")
for line in lines where line.hasPrefix("data: ") {
let json = String(line.dropFirst(6))
if let chunk = parseYGPTChunk(json) {
DispatchQueue.main.async { self.onChunk(chunk) }
}
}
}
}
На Android — OkHttp з EventSource (бібліотека okhttp-sse) або ручний парсинг BufferedReader рядок за рядком.
Моделі та параметри
Yandex надає кілька варіантів: yandexgpt-lite — швидка й дешева, yandexgpt — повна версія, yandexgpt-32k — для довгих контекстів. Для більшості мобільних сценаріїв (чат-підказки, автозаповнення), yandexgpt-lite достатня і помітно швидша.
| Модель | Контекст | Швидкість відповіді | Варіант використання |
|---|---|---|---|
| yandexgpt-lite | 8k токенів | ~1–2 сек | Підказки, резюме |
| yandexgpt | 8k токенів | ~3–5 сек | Складні завдання |
| yandexgpt-32k | 32k токенів | ~8–15 сек | Довгі документи |
Параметр temperature від 0 до 1: 0.2–0.4 — детерміновані відповіді (FAQ-бот), 0.7–0.9 — творчі тексти.
Кешування та обмеження
Yandex Cloud тарифікує по токенам. Кешуйте повторювані запити на мобільному клієнті — типовий паттерн для FAQ або onboarding. Простий LRU-кеш із 100 записів в пам'яті скорочує витрати при повторюваних сесіях.
Обмеження швидкості Yandex Foundation Models — 10 RPS на папку за замовчуванням. При пікових навантаженнях (багато користувачів одночасно), потрібна черга на backend, а не прямі виклики з кожного пристрою.
Процес реалізації
Аудит сценаріїв: де саме потрібна LLM — підтримка, генерація тексту, класифікація запитів. Вибір моделі та режиму (synchronous / stream). Розробка proxy-сервісу на backend з керуванням IAM-токеном. Інтеграція у мобільний додаток з UI для потокової генерації. Тестування якості відповідей на реальних користувацьких запитах, налаштування системного промпту.
Орієнтири за часом
Базова інтеграція через proxy без streaming — 2–3 дні. Повноцінний чат-інтерфейс з потоковою генерацією, кешуванням та обробкою помилок — 5–8 днів.







