Какие особенности и слабые стороны AI SDK
Что проверяют
Работали ли вы с моделями в мобильном приложении руками и понимаете ли разницу между облачным и локальным выполнением. Следом обычно спрашивают, где вы храните ключ API и что видит пользователь, когда модель не ответила.
Как отвечать
Уточните, о каком SDK речь: в Android под этим понимают несколько разных инструментов, и слабые места у них разные.
- облачные SDK (Firebase AI Logic, клиенты Gemini API и других провайдеров): интеграция в десяток строк, стриминг ответа через
Flow, мультимодальный ввод. Цена: сеть и задержка в секунды, оплата за токены, квоты, региональные ограничения; - модели на устройстве (ML Kit, Gemini Nano через AICore, LiteRT, MediaPipe): работают без сети, данные не покидают телефон. Цена: Gemini Nano есть только на части флагманов, своя модель раздувает APK или требует докачки, на слабых устройствах заметны нагрев и расход батареи;
- ключ API: строка из
BuildConfigизвлекается из APK декомпиляцией за минуты. Запросы идут через свой бэкенд либо защищаются Firebase App Check; - недетерминированность: на один запрос приходят разные ответы, JSON может прийти неполным. Схема ответа снижает риск, но парсинг с обработкой ошибок обязателен;
- фильтры безопасности: провайдер может заблокировать ответ, и это отдельная ветка в UI, а не падение.
SDK прячут за своим интерфейсом репозитория: провайдера можно заменить, а в тестах подставить заглушку. Вызовы живут в viewModelScope, чтобы запрос отменялся при уходе с экрана.
Сильнее всего звучит пример из опыта: задача, SDK, задержка и что сделали, упёршись в ограничение. Если с AI SDK вы не работали, так и скажите и разберите, как выбирали бы между облаком и устройством под конкретную фичу.
Где спотыкаются
Кладут ключ в local.properties и считают это защитой. Файл не попадает в репозиторий, но значение всё равно вшивается в сборку.
Не продумывают деградацию: нет сети, кончилась квота, устройство не поддерживает локальную модель. В итоге экран бесконечно крутит спиннер.
Говорят общими словами «AI требует ресурсов», не назвав ни инструмента, ни задержки, ни принятого решения.