Зачем ещё одно приложение для ИИ?
Открываешь магазин приложений, пишешь в поиске "AI" и видишь сотню иконок с нейросетями. Большинство из них - тонкие клиенты для ChatGPT. Ещё пара десятков - генераторы картинок, которые сливают твои фото на свои серверы. Настоящих локальных приложений, где модель живёт в твоём телефоне, можно пересчитать по пальцам одной руки. И все они неидеальны.
Почему? Потому что их делают разработчики в вакууме. Они угадывают, что нужно пользователю. Иногда попадают, чаще - нет.
Сегодня мы не будем угадывать. Мы пойдём другим путём - спросим у тех, кто будет этим пользоваться. Но задавать глупые вопросы вроде "Какое приложение вы хотите?" - бесполезно. Люди не знают, чего хотят, пока не увидят это. Наша задача - вытащить из них реальные боли, скрытые потребности и технические ограничения, о которых они сами не догадываются.
Это не статья о том, как написать код. Это статья о том, как не написать лишний код. О том, как избежать шести месяцев разработки приложения, которое никто не будет использовать.
Кто эти люди и чего они на самом деле хотят
Разбиваем сообщество на три лагеря. Каждый со своей психикой и ожиданиями.
| Тип пользователя | Что говорит | Что имеет в виду | Чего боится |
|---|---|---|---|
| Параноик-приватник | "Мои данные должны оставаться на устройстве" | Не хочу, чтобы OpenAI знал, что я спрашиваю про геморрой в 3 ночи | Фоновой отправки логов, скрытых аналитик, "улучшения опыта" |
| Технарь-энтузиаст | "Нужна поддержка GGUF, EXL2, AWQ форматов" | Хочу кастомизировать всё до последнего бита, как в llama.cpp на стероидах | Упрощённого интерфейса, который скрывает настройки |
| Обыватель с флагманом | "Просто чтобы работало" | Купил телефон за 100к, хочу похвастаться ИИ без интернета | Сложных настроек, необходимости что-то скачивать отдельно |
Смешивать эти три группы в одном интерфейсе - рецепт катастрофы. Параноик будет недоволен, что приложение просит доступ к интернету. Технарь взвоет от отсутствия продвинутых настроек квантования. Обыватель сломает мозг на первом же экране с выбором модели.
Сбор требований: как не получить "хочу всё и сразу"
Открываешь форум, создаёшь тему "Какое приложение для локального ИИ вы хотите?" и получаешь:
- Поддержка всех моделей от Mistral до Qwen2.5
- Работа на телефоне пятилетней давности
- Скорость генерации как у ChatGPT
- Ноль потребления батареи
- И всё это бесплатно
Пользователи не виноваты. Они не знают, что 70-миллиардная модель не влезет в память их телефона. Что скорость зависит не только от оптимизации кода, но и от законов физики. Что батарея будет садиться, потому что нейросеть - это триллионы операций с матрицами в секунду.
Наша задача - задавать правильные вопросы, которые выявят реальные приоритеты.
1Вопросы, которые стоит задать
Вместо "Какие функции вы хотите?" спросите:
- "Какую задачу вы решаете чаще всего: быстрый ответ, анализ документа, программирование?"
- "Готовы ли вы ждать 10 секунд за ответ, если он будет точнее?"
- "Что важнее: размер модели (больше знаний) или скорость (меньше ожидания)?"
- "Загружали ли вы когда-нибудь модель весом больше 4 ГБ на телефон?"
- "Использовали ли вы другие локальные приложения и что в них бесило больше всего?"
2Технические ограничения: правда жизни
Пока пользователи мечтают, мы должны спустить их на землю. Современный флагман - это:
- 8-12 ГБ оперативной памяти
- Из них системе нужно 2-3 ГБ
- На приложение остаётся 5-6 ГБ в лучшем случае
- Модель должна влезать в эти 5-6 ГБ вместе со всем остальным
Переводим в реальность: модель на 7 миллиардов параметров в 4-битном квантовании занимает ~4 ГБ. Это наш потолок для комфортной работы. Можно впихнуть 13B, но тогда приложение будет постоянно выгружаться из памяти.
Самая частая ошибка новичков: пытаться запустить модель, которая не влезает в RAM. Система начинает свопировать, телефон превращается в грелку, батарея умирает за час. Пользователь удаляет приложение и пишет гневный отзыв.
Архитектура: что скрывать, а что выпячивать
Вот где большинство существующих приложений обламываются. Они либо показывают все технические детали (пугая обывателей), либо прячут всё (зля технарей).
Слои интерфейса
Представьте трёхслойный пирог:
| Слой | Что видит пользователь | Что происходит внутри |
|---|---|---|
| Базовый | Кнопка "Спросить", поле ввода, выбор из 3 предустановленных моделей | Автоматическая загрузка моделей, предустановленные промпты, кэширование |
| Продвинутый | Настройки квантования, контекстное окно, температура, топ-p | Прямой доступ к параметрам llama.cpp, выбор разных бэкендов |
| Экспертный | Raw лог генерации, график использования памяти, детализация по токенам | Отладка, бенчмарки, сравнение разных моделей |
Каждый следующий слой открывается отдельным переключателем. Обыватель живёт в базовом слое и счастлив. Технарь включает продвинутый и копается в настройках. Параноик включает экспертный и проверяет, не утекает ли что-то в сеть.
Модели: каталог или хаос
Ещё одна точка боли. Пользователь открывает приложение и видит список из 200 моделей с названиями вроде "dolphin-2.9.2-mistral-7b-q4_k_m.gguf". Его глаза стекленеют.
Решение? Курированный каталог с человеческими названиями:
- "Быстрый помощник" (TinyLlama 1.1B, 500 МБ)
- "Умный ассистент" (Mistral 7B, 4 ГБ)
- "Эксперт-программист" (CodeLlama 7B, 4 ГБ)
- "Многоязычный переводчик" (Qwen2.5 7B, 4 ГБ)
Под капотом - те же технические названия, но пользователь не должен их видеть. Для технарей - отдельная кнопка "Расширенный каталог" со всеми моделями и фильтрами по размеру, типу, квантованию.
Офлайн-режим: не просто отсутствие интернета
Когда пользователь говорит "офлайн-режим", он имеет в виду не просто работу без интернета. Он хочет:
- Полную предсказуемость - если приложение работает сегодня, оно должно работать завтра в самолёте
- Ноль неожиданных запросов к сети - никаких "проверка обновлений модели" в фоне
- Локальное хранение истории - чтобы диалоги не пропадали при переустановке
- Возможность подготовки заранее - скачать всё нужное при наличии Wi-Fi
Это технически сложнее, чем кажется. Особенно пункт про "ноль запросов к сети". Многие библиотеки аналитики устроены так, что пытаются отправить данные при любом удобном случае. Придётся их либо вырезать, либо заглушать на уровне системы.
Распространённые ошибки (чтобы вы их не повторили)
Ошибка 1: Скачивание моделей напрямую из приложения без прогресса и возобновления. Пользователь качал модель 3 ГБ на мобильном интернете, связь прервалась на 99% - всё начинается сначала. Решение: использовать resumable загрузки с проверкой контрольных сумм.
Ошибка 2: Хранение моделей в приватной папке приложения. Пользователь не может скопировать модель с компьютера или перенести на SD-карту. Решение: использовать общедоступные директории с возможностью указать свой путь.
Ошибка 3: Игнорирование тепловыделения. Приложение запускает модель, телефон греется до 50 градусов, система принудительно снижает частоту процессора, генерация замедляется в 10 раз. Решение: мониторить температуру и динамически регулировать параметры генерации.
Что спросить у сообщества прямо сейчас
Если вы читаете это и планируете своё приложение - вот готовый список вопросов для вашего опроса:
- Какой максимальный размер модели вы готовы скачать на телефон? (2 ГБ, 4 ГБ, 8 ГБ, больше не важно)
- Что для вас критичнее: качество ответов или скорость генерации?
- Планируете ли вы использовать приложение в полёте/метро/где нет интернета?
- Нужна ли вам интеграция с другими приложениями (например, быстрый ответ из любого места)?
- Готовы ли вы платить за приложение, если оно будет делать именно то, что вам нужно?
- Какая одна функция заставит вас удалить конкурирующее приложение и перейти к вам?
Не делайте опрос в Google Forms. Разместите его там, где сидит ваша целевая аудитория: на специализированных форумах, в Telegram-каналах про локальный ИИ, в чатах разработчиков. Дайте людям почувствовать, что их мнение действительно повлияет на продукт.
А что насчёт инструментов и расширений?
Продвинутые пользователи всё чаще спрашивают про Tool Calling - возможность ИИ взаимодействовать с другими приложениями. На телефоне это особенно актуально:
- "Добавь встречу в календарь на завтра в 15:00"
- "Найди в галерее фото с прошлого отпуска"
- "Проложи маршрут до ближайшей кофейни"
Технически это адская задача на мобильных платформах. iOS и Android жёстко ограничивают межпроцессное взаимодействие. Но спросить у сообщества, какие интеграции им нужны в первую очередь, стоит уже сейчас. Возможно, окажется, что всем нужен просто доступ к заметкам и календарю, а не полноценный плагин к Google Maps.
И последнее: про monetization
Самый неудобный вопрос. Локальное приложение по определению сложно монетизировать - раз пользователь скачал модель, он уже всё получил. Но спросить нужно:
- Что вы предпочтёте: разовую покупку, подписку или донат?
- За что вы готовы платить: за удобный интерфейс, за предустановленные промпты, за синхронизацию между устройствами?
- Согласны ли вы на ненавязчивую рекламу, если приложение будет бесплатным?
Ответы вас удивят. Часть сообщества готова платить за приватность. Другая часть - за удобство. Третья считает, что всё должно быть бесплатно, потому что "модели и так открытые".
Главное - спросить до того, как написать первую строчку кода. Потому что архитектура приложения с подпиской отличается от архитектуры приложения с разовой покупкой. И сильно отличается от архитектуры полностью бесплатного приложения.
Самый ценный совет в конце: начните с прототипа на самом простом стеке. Не пытайтесь сразу сделать кроссплатформенное приложение с поддержкой всех моделей. Возьмите одну модель (например, TinyLlama), сделайте простой интерфейс на React Native или Flutter, как в нашем предыдущем гайде, и дайте его тестовой группе. Первая обратная связь будет в 10 раз ценнее всех опросов вместе взятых.
Потому что пользователи не знают, чего хотят, пока не попробуют. Наша задача - дать им попробовать как можно раньше. И слушать. Внимательно слушать.