Smart Reply для iOS и Android: от ML Kit до кастомных LLM

Подсказки ответов в приложении часто раздражают пользователей и остаются незамеченными. Мы разрабатываем и дорабатываем Smart Reply под ключ: от готовых решений до собственных моделей. Настраиваем систему так, чтобы доля принятых подсказок росла, а нагрузка на поддержку снижалась.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Smart Reply для iOS и Android: от ML Kit до кастомных LLM
Средний
~1-2 недели
Часто задаваемые вопросы

Smart Reply в приложении: почему ответы нерелевантны

Нерелевантные подсказки почти никогда не проблема модели как таковой. В девяти случаях из десяти Smart Reply ломается на входе: в контекст уходит последнее сообщение без истории диалога, язык определяется по первому токену, тон не передаётся вовсе. Модель честно генерирует ответ на то, что ей дали, — и получается вежливая бессмыслица, которую пользователь стирает и печатает сам.

Второй источник — задержка генерации. Подсказка живёт ровно столько, сколько пользователь держит палец над клавиатурой: если ответ приходит позже, чем человек начал печатать, он уже не нужен. Гонка за качеством через большую модель на сервере почти всегда проигрывается по времени отклика, поэтому рабочая схема — быстрый локальный кандидат на устройстве плюс серверное уточнение, которое подменяет подсказку, если успело.

Третий слой — контекст диалога и тон. Переписка в поддержке, личный чат и рабочая группа требуют разной лексики при одном и том же смысле. Если в подсказки не передаётся роль собеседника, историю последних реплик и язык переписки, релевантность ответов падает на глазах: пользователь видит формальные фразы там, где ждёт короткое «ок, беру».

Цена для продукта измерима: доля принятых подсказок падает с привычных значений до единиц процентов, а раздражение от нерелевантных вариантов переносится на всё приложение. Поэтому разбираем по шагам, где именно теряется контекст и как вернуть подсказкам смысл.

Что даёт доработанная система подсказок

Доработанная система подсказок измеряется не «умностью» модели, а тем, как часто пользователь её принимает. Доля принятых подсказок — базовая метрика: на стандартном автодополнении она держится в пределах 8-12%, а после настройки ранжирования под конкретный сценарий переписки вырастает в 2-3 раза. Рост идёт не за счёт более крупной модели, а за счёт контекста: подсказка учитывает, кому отвечает пользователь, что было в предыдущих сообщениях и в каком тоне он писал раньше.

Скорость ответа — вторая метрика, и здесь важна не только задержка самой подсказки, но и время от открытия чата до отправленного сообщения. Когда варианты появляются сразу, без ожидания сети, пользователь тратит на ответ заметно меньше времени, а доля брошенных черновиков падает. Мы держим генерацию на устройстве для типовых случаев и уходим на сервер только тогда, когда запрос требует тяжёлой модели — так подсказка не зависит от качества связи.

Снижение ручного ввода напрямую связано с качеством автодополнения: если подсказки релевантны, пользователь набирает вручную меньше половины символов в коротких ответах. Это не только удобство — на слабых устройствах и в поездках экономится заряд и трафик, а интерфейс остаётся отзывчивым.

Устойчивость к сбоям — обязательное условие, иначе выигрыш обнуляется. Если модель недоступна, приложение отдаёт заготовленные варианты и не блокирует ввод; ошибки подсказок не влияют на отправку сообщений. Мы отдельно проверяем поведение при потере сети, при пустом контексте и при смене языка в переписке — система деградирует предсказуемо, а не ломает основной сценарий.

Эти четыре метрики мы снимаем до и после доработки: по ним видно, что именно изменилось в продукте, а не только в отчёте.

Подходы к генерации: сравнение вариантов

Выбор между локальной моделью, серверной генерацией и гибридной схемой — это не про «модность», а про три ограничения: приватность данных, задержку ответа и стоимость инференса на масштабе. Локальная модель считает прямо на устройстве и не отправляет текст никуда — но упирается в память и нагрев телефона. Серверная даёт качество большой модели, но добавляет сетевой круг и расходы на каждый запрос. Гибрид снимает часть компромиссов, но требует логики маршрутизации.

Вариант Когда подходит Ограничения
Локальная модель Чувствительные данные (переписка, медицина), офлайн-сценарии, простые подсказки на 3-7 слов Слабее на длинном контексте, заметный расход батареи, ограничение по размеру модели на устройстве
Серверная модель Сложные ответы, длинный контекст, единое качество на всех устройствах Зависимость от сети, задержка, расходы на инференс растут линейно с числом пользователей
Гибридная схема Массовый продукт с разными сценариями: короткое — на устройстве, сложное — в облаке Сложнее тестировать, нужна логика переключения и деградации при потере сети

На практике гибрид выигрывает чаще всего: короткие подсказки генерируются на устройстве за доли секунды и не стоят ничего, а тяжёлые запросы уходят в облако. Ключевое — заранее определить правило маршрутизации и поведение при отсутствии сети, иначе пользователь получит пустой экран вместо подсказки.

Разбираем, как это закрывается под ваш сценарий.

Этапы внедрения Smart Reply в продукт

Внедрение Smart Reply — это не «подключить готовый модуль», а последовательность инженерных решений, где каждый следующий шаг опирается на данные предыдущего. Ниже — маршрут, по которому мы ведём проект: от разбора текущей логики до передачи работающей системы с регламентами поддержки.

  1. Аудит логики и данных. Разбираем, как сейчас устроены ввод текста, отправка сообщения и хранение истории: где формируются подсказки, есть ли доступ к контексту диалога, как обрабатываются вложения и мультиязычные сообщения. На выходе — карта узких мест и понимание, каких данных не хватает для качественных подсказок.

  2. Схема обработки и приватность. Проектируем поток: что считается на устройстве, что уходит на сервер, как обезличивается содержимое и разделяются личные и групповые чаты. Отдельно фиксируем поведение при слабой сети и офлайн-режиме — подсказка не должна блокировать ввод.

  3. Настройка модели. Выбираем подход под задачу: встроенные механизмы платформы для базовых сценариев или дообучение на обезличенных данных продукта для отраслевой лексики. Настраиваем длину и число вариантов подсказок, порог уверенности и фильтры нежелательного контента.

  4. Проверка качества. Собираем набор тестовых диалогов и метрики: доля принятых подсказок, время до отправки, отказы и правки. Прогоняем сценарии на разных языках и устройствах, сравниваем поведение до и после.

  5. Передача системы. Отдаём настроенную конфигурацию, схему обработки, правила фильтрации и инструкции по обновлению модели. Команда заказчика получает понятный регламент: как менять параметры, как читать метрики и когда переобучать.

Такой маршрут снимает главный риск — подсказки, которые раздражают пользователей вместо того, чтобы ускорять общение. Опишите задачу — вернёмся с оценкой и планом по вашему продукту.

Что остаётся у команды заказчика

Работа с моделью Smart Reply не заканчивается релизом: заказчик получает не «чёрный ящик», а комплект, по которому его инженеры смогут развивать и сопровождать функцию самостоятельно. Ниже — что именно передаём.

  • Конфигурации инференса: параметры генерации, пороги уверенности, правила фильтрации подсказок и справочники тональности — с комментариями, что и при каких условиях меняется.
  • Схемы потоков данных: от ввода пользователя через препроцессинг и модель до ранжирования вариантов и логирования — с указанием, где хранятся тексты и как долго.
  • Политики доступа: разграничение ролей для выгрузки данных, обезличивание перед обучением, журналирование обращений к модели и правила реагирования на инциденты.
  • Документация по интеграции: контракты клиентских библиотек, обработка офлайн-режима, поведение при недоступности сервиса и деградация до локальной модели.
  • Регламенты обновления: как выкатывается новая версия модели, как проверяется качество подсказок на эталонной выборке и как откатиться на предыдущую без потери истории.
  • Метрики качества: набор проверок на точность и релевантность подсказок, доля принятых вариантов и правила, по которым фиксируется ухудшение.
  • Инструкции для поддержки: типовые сбои, диагностика по логам и порядок эскалации к нашей команде.

Каждый артефакт сопровождается коротким разбором — почему выбрано именно такое решение и что произойдёт, если его изменить. Так у команды заказчика остаётся не набор файлов, а рабочая картина системы: понятно, где править конфигурацию, где обновлять политику доступа и какой шаг регламента запускает переобучение. Опишите задачу — вернёмся с оценкой и планом передачи.

Кейс: как выросла доля принятых подсказок

Что было до

Приложение — мессенджер с текстовыми чатами и вложениями. Подсказки ответов жили на трёх захардкоженных фразах вида «Ок, понял» и «Спасибо!», одинаковых для всех диалогов. Доля принятых подсказок держалась около 4%: пользователи либо не замечали строку, либо закрывали её, потому что предложение не совпадало с контекстом переписки. Каждое отклонение — это возврат к ручному вводу, а на длинных диалогах — ещё и потеря темпа: человек уже сформулировал мысль, а её приходится набирать с нуля.

Что изменили

Собрали контекст диалога — последние реплики обеих сторон, язык, тон, наличие вопроса в конце. На устройстве оставили быструю модель для коротких реплик, тяжёлые сценарии ушли на серверную генерацию с кэшем частых формулировок. Подсказки стали появляться в момент, когда пользователь открывает клавиатуру, а не после нажатия на поле ввода. Добавили сбор обратной связи: принял, отклонил, отредактировал — и переобучение раз в две недели на этих сигналах.

Что стало

Доля принятых подсказок выросла с 4% до 23% — почти в шесть раз. Среднее время ответа в диалоге сократилось на треть, а доля сообщений, отправленных без правок после подсказки, дошла до 61%. Нагрузка на ручной ввод упала заметнее всего в сценариях с короткими деловыми репликами: там подсказка закрывает ответ целиком.

Работали на актуальной ветке ML Kit для разбора текста на устройстве и на серверной генерации для сложных случаев — это дало баланс между скоростью отклика и качеством формулировок.

Чем отличается обработка на устройстве от серверной?

Обработка на устройстве держит модель и инференс внутри клиента: текст сообщения не покидает телефон, ответ генерируется локально. Серверная обработка отправляет контекст на бэкенд, где работает более крупная модель. Отсюда расходятся все четыре компромисса — приватность, задержка, стоимость вычислений и качество генерации.

Приватность решается архитектурно, а не обещаниями. При локальном инференсе переписка физически не уходит с устройства — это снимает целый класс рисков при работе с чувствительными данными и упрощает прохождение проверок магазинов приложений. На сервере тот же результат достигается только явными мерами: шифрованием канала, отказом от хранения исходного текста, изоляцией тенантов. Каждую из этих мер нужно проектировать и подтверждать.

Задержка при локальной генерации не зависит от сети: ответ появляется за десятки миллисекунд и работает в метро, самолёте, роуминге. Серверная обработка добавляет сетевой круг и очередь на бэкенде — на стабильном канале это незаметно, на слабом связь рвётся, и подсказка приходит с опозданием. Для сценария, где пользователь печатает и ждёт вариант ответа прямо сейчас, это решающая разница.

Стоимость вычислений устроена зеркально. Локальный инференс не тарифицируется за запрос, но расходует батарею и память устройства — модель приходится квантовать и ограничивать по размеру. Сервер платит за каждый вызов, зато не связан ресурсами телефона и легко масштабируется под пиковую нагрузку.

Качество генерации — цена компромисса. Компактная модель на устройстве даёт короткие уместные подсказки, но проигрывает на длинном контексте, редких языках и тонкой стилистике. Серверная модель точнее и лучше держит тон переписки, однако требует передать данные наружу. На практике берут гибрид: черновой вариант считается локально для мгновенного отклика, а сервер подключается там, где нужна точность и пользователь дал согласие.

Частые технические сомнения

Вопросы по Smart Reply почти всегда упираются в четыре вещи: языки, офлайн-режим, обновление моделей и контроль качества ответов. Ниже — как это устроено на практике.

Как приложение поддерживает несколько языков, включая русский?

Базовый сценарий — локальная модель на устройстве: она даёт черновики ответов на десятках языков без обращения к серверу. Если нужны формулировки под конкретный рынок и отраслевую лексику, добавляем тонкую донастройку на корпусе переписок заказчика — отдельно по каждому языку. Смешанные диалоги (русский + английский в одном треде) обрабатываем через определение языка на уровне сообщения, а не всего чата: иначе подсказки уезжают не в тот язык.

Что происходит, когда у пользователя нет сети?

Локальный инференс работает без сети — подсказки появляются в момент набора текста. Серверные сценарии (тяжёлая модель, свежие данные) в офлайне отключаются, а интерфейс не показывает пустой блок: приложение отдаёт заготовки из локального кеша или скрывает подсказки до восстановления связи. Так пользователь не видит «зависших» элементов.

Как обновляются модели без релиза приложения?

Модель и словари выносим в отдельный слой, который обновляется независимо от сборки. Это позволяет менять формулировки и добавлять языки без повторной публикации в сторах. Обновление проходит поэтапно: сначала на небольшой доле пользователей, затем на всех — если метрики не просели.

Кто отвечает за качество и безопасность подсказок?

Качество контролируем метриками: доля принятых подсказок, время до первого варианта, доля отклонённых вручную. Ответы фильтруем на токсичность и утечки персональных данных — модель не должна предлагать формулировки, которые пользователь не готов отправить. На каждом релизе прогоняем набор тестовых диалогов, чтобы поймать регрессии до выката.

Если по вашему продукту остались сомнения — опишите сценарий, вернёмся с оценкой и планом.

Обсудим вашу задачу и вернёмся с планом

Чтобы вернуться с оценкой и планом работ, а не с общими словами, нам нужно понять ваш сценарий Smart Reply целиком: где подсказки появляются, на каком языке и в каком объёме. Опишите задачу — мы зададим уточняющие вопросы и пришлём план следующих шагов.

Что уточним на первом разговоре:

  • Где именно нужны подсказки: ответы в мессенджере, комментарии, поддержка, отзывы — от этого зависит логика генерации.
  • Языки и тональность: один язык или несколько, нужен ли учёт стиля переписки конкретного пользователя.
  • Где считаем: на устройстве, на сервере или гибридно — влияет на приватность, скорость и стоимость эксплуатации.
  • Данные для обучения и настройки: есть ли история переписок, словари, ограничения по чувствительным темам.
  • Ограничения: требования к конфиденциальности, офлайн-режим, интеграция с существующим бэкендом и учётными системами.
  • Метрики успеха: доля принятых подсказок, скорость ответа, охват пользователей.

На выходе вы получите план работ с этапами, оценку сроков и состава команды, схему архитектуры под ваш сценарий и перечень рисков с вариантами их закрытия. Если у вас уже есть прототип или наработки — посмотрим, что можно переиспользовать, а что переписать.

Опишите задачу в свободной форме: что за продукт, какая аудитория, какой результат нужен. Вернёмся с оценкой и планом.

Подход Где работает Когда выбирать Срок внедрения Что получает продукт
Готовые системные подсказки На устройстве, силами операционной системы Нужен быстрый запуск и базовое качество без своей разработки Минимальный — подключение и настройка Черновые варианты ответа, слабо заточенные под ваш сценарий и лексику
Дообучение готовой модели На устройстве или на сервере Есть свой корпус переписок и нужно поднять релевантность без своей модели Средний — подготовка данных и настройка Подсказки в стиле ваших пользователей, выше доля принятых вариантов
Своя модель на сервере Серверная часть, ответ приходит по сети Нужны длинные ответы, сложный контекст, единое качество на всех платформах Длинный — сбор данных, обучение, отладка Гибкое управление тоном и смыслом, но зависимость от связи
Своя компактная модель на устройстве На устройстве, без отправки переписки наружу Приоритет — приватность и работа без сети Длинный — отдельная сборка под каждую платформу Ответы мгновенно и офлайн, данные не покидают телефон
Гибрид: устройство плюс сервер Оба контура с переключением по ситуации Нужен баланс скорости, приватности и качества Средний — два контура и правила переключения Быстрые короткие подсказки на месте, сложные — с сервера
Параметр Что проверяем до старта На что влияет
Данные Есть ли согласие на обработку переписки, как хранится история Возможность обучать модель на реальных диалогах
Языки и стиль Какие языки и какой тон нужен в подсказках Релевантность и уместность вариантов
Нагрузка Сколько подсказок в день и в пиковые часы Выбор контура: устройство или сервер
Приватность Допустимо ли отправлять текст за пределы телефона Архитектура решения и требования к защите
Платформы Нужна ли одинаковая логика на обеих системах Объём работ и сроки
Этап Содержание Результат этапа
Разбор задачи Смотрим сценарии, где подсказки реально помогают Понятный список мест в приложении
Подготовка данных Собираем и чистим примеры переписок с согласия пользователей Набор для настройки модели
Настройка модели Дообучаем готовую или собираем свою под ваш стиль Черновая версия подсказок
Проверка качества Сравниваем варианты с живыми ответами людей Решение о запуске на части пользователей
Постепенный запуск Включаем для небольшой доли, следим за поведением Рост доли принятых подсказок без просадки
Поддержка Обновляем модель по мере изменения языка и запросов Стабильное качество со временем
Зона ответственности Команда заказчика Наша сторона
Продуктовая логика Решает, где и как показывать подсказки Предлагает варианты по опыту похожих задач
Данные Даёт доступ и следит за согласиями Готовит и обезличивает наборы
Модель Согласует тон и правила Настраивает, обучает, проверяет
Выпуск Управляет релизами в своих магазинах Помогает с настройкой и откатом
Развитие Ставит приоритеты Обновляет модель и следит за качеством

Работаем на профессиональном оборудовании — клиент получает стабильный результат и предсказуемое качество подсказок на обеих платформах.

Наши компетенции:

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1010
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    903
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1107
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714