Создание 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.







