Привет!
В свободное время я написал приложение, с помощью которого вы можете скачать и запустить AI LLM нейросети, такие как Google Gemma, DeepSeek, Llama, Qwen, LLama, Mistral и многие другие на вашем смартфоне.
Приложений с AI сейчас довольно много, но ключевое отличие этого- модели работают не в облаке на серверах, а напрямую на смартфоне из файла модели, используя процессор и видеокарту смартфона.
Для запуска вам не нужен интернет, платная подписка, достаточно иметь смартфон с 6+GB оперативной памяти и более менее современным процессором.
Приложение работает с репозиторием моделей HuggingFace
это крупнейший репозиторий с миллионами OpenSource моделей, из которых тысячи- это большие языковые модели, или LLM.
Приложение может открывать самый распространенный формат моделей .gguf с помощью движка LLama.cpp, а также формат от Google для движка MediaPipe — .task и .tflite (версии для MediaPipe, есть в репозитории Google).
Для некоторых моделей, таких как Gemma 3n (OpenSource версия Gemini) через движок MediaPipe, поддерживается обработка изображений.
Это приложение сделано прежде всего для энтузиастов AI, также для тех, кто не может использовать облачные модели вроде ChatGPT или Gemini из за возможной утечки данных, также для людей, у которых нет постоянного доступа в интернет.
В данный момент приложение бесплатное, но если мне не удастся найти способ оплаты моего труда по его написанию- некоторые функции в нем станут платными.
Как пользоваться
Приложение имеет вкладки: Чат, История, Модели, Настройки.
- Чат: Эта вкладка содержит чат с текущей запущенной моделью.

- Новый чат: Очищает историю диалога с моделью.
- Изображение: Вы можете добавить изображение в чат. В настоящее время поддерживаются только движок MediaPipe и модели Gemma 3n и Gemma 3 4B 12B 27B.
- Очистить текст: Очистить текущее текстовое сообщение.
- Вставить текст: Вставить текст из буфера обмена в текущую позицию ввода сообщения.
- Голосовой ввод: При нажатии активируется голосовой ввод. После завершения голосового ввода, если в настройках приложения выбрана опция «Автоматически отправлять текст модели после завершения распознавания голоса», текст отправляется модели. Если не выбрана, необходимо отправить текст, нажав кнопку «Отправить».
- Отправить: Отправить сообщение модели. Текст на кнопке может меняться в зависимости от состояния модели.
- Значок микрофона на сообщении: Произнести сообщение. Скорость произношения можно настроить в настройках приложения с помощью параметра «Скорость голоса». Если в настройках приложения активирована функция «Автоматически озвучивать ответы после генерации», сообщение будет автоматически озвучено голосом после завершения генерации модели.
- Нажмите на сообщение: откроется меню, в котором вы можете скопировать сообщение в буфер обмена, поделиться им с другими приложениями или озвучить его.
- Верхняя панель: показывает, с какой моделью в данный момент ведется диалог. Здесь также отображается объем свободной оперативной памяти, если включена опция «Выводить свободную память на экран».
- История: показывает список всех диалогов со всеми моделями.

- Нажатие на диалог: открывает диалог с моделью.
- Удалить: удаляет диалог с моделью. Все диалоги можно удалить в настройках приложения, нажав «Очистить историю чата».
- Продолжить диалог: вы можете продолжить любой диалог. При продолжении диалога он будет сохранён как новый. При нажатии на него откроется список всех доступных моделей, с любой из которых вы можете продолжить ранее начатый диалог, даже если это была другая модель. Обратите внимание, что контекст моделей ограничен. Если диалог содержит большой объём текста, контекст модели может оборваться, и в этом случае часть диалога может быть потеряна. Вы можете настроить размер контекста модели в настройках приложения. Обратите внимание, что размер контекста — это не количество символов, а количество токенов, которые обычно соответствуют части слова.
- Модели: Здесь вы найдете все загруженные модели, а также модели, запущенные в Ollama и LM Studio на вашем компьютере. Модель связана с файлом, находящимся в папке приложения. Вы можете открыть эту папку в некоторых файловых менеджерах, например, ES Explorer, и самостоятельно добавлять или удалять модели.

- Запустить модель: Запускает модель, при этом все остальные модели выгружаются. Если модель запущена на компьютере в локальной сети, она не запускается, а открывается диалоговое окно с ней, поскольку запуск модели контролируется программой, в которой она запущена.
- Показать информацию: Открывается страница со служебной информацией о модели.
- Нажать на модель: Модель откроется в поддерживаемом файловом менеджере. Обратите внимание, что не все файловые менеджеры поддерживают открытие файлов и не все файловые менеджеры имеют разрешение на открытие папки другого приложения.
- Удалить: Удаляет модель. Также поддерживается удаление моделей, запущенных в Ollama на компьютере в локальной сети.
- Верхняя панель: Отображает папку приложения, в которой находятся модели. Нажав на папку, вы можете открыть её в файловом менеджере, а также скопировать или поделиться её путём. Также отображается объём свободной оперативной памяти, если включена опция «Выводить свободную память на экран».
- Закладки: Модели, добавленные в закладки.

- Загрузить модели: Перейти на страницу загрузки моделей из репозитория HuggingFace

- Автор: Фильтрация списка моделей по автору. Можно ввести текст и выбрать один из пресетов.
- Конвейер: Фильтрация списка моделей по конвейеру. Можно ввести текст и выбрать один из пресетов.
- Фильтр: Фильтрация списка моделей по фильтру. Можно ввести текст и выбрать один из пресетов.
- Поиск: Фильтрация списка моделей по названию модели. Можно ввести текст и выбрать один из пресетов.
- Параметр сортировки: По какому параметру сортировать список.
- ▼: Открыть список пресетов для соответствующего параметра фильтрации.
- +: Сохранить параметр, введённый в текстовое поле, в пресетах.
- -: Удалить параметр, введённый в текстовое поле, из пресетов.
- Обновить: Обновить список.
- Закрыть фильтр: Скрыть окно фильтра.
- Открыть репозиторий по модели: Открыть страницу модели в репозитории HuggingFace.
- Скачать: Открыть список всех доступных моделей в репозитории. Модели с квантованием Q4, подходящие для архитектуры Arm, будут отмечены зелёным цветом. Если ваш смартфон оснащён быстрым процессором, а модель небольшая, вы можете попробовать загрузить и запустить модель с любым квантованием. Чем выше номер квантования, тем выше точность модели. После нажатия в верхней части экрана отобразится текущий статус загрузки модели. Если нажать на него, загрузка остановится.
- Настройки

- Настройки приложения

- Выбор языка: Изменяет язык приложения. При выборе «Системный» язык будет меняться в зависимости от языка устройства. В настоящее время поддерживаются английский, немецкий, французский, испанский, польский, русский, украинский.
- Режим просмотра: Тема приложения, тёмный, светлый или системный.
- Настройки голоса: Настройки произношения. Здесь можно выбрать автоматическое произношение сообщения после генерации, автоматическую отправку сообщения после распознавания и скорость произношения.
- Настройки отладки: Здесь можно выбрать, выводить ли на экран объём доступной оперативной памяти, а также перейти на страницу отладочной информации движка LLama.cpp.
- Страница отладочной информации движка LLama.cpp: Здесь, после включения переключателя, можно просмотреть служебную информацию, которую движок выводит в консоль во время загрузки модели и генерации ответа. Различные уровни отладки отображаются разными цветами.
- Токен репозитория HuggingFace: Для загрузки некоторых моделей из репозитория HuggingFace, например, моделей от Google, требуется токен. Вы можете ввести токен вручную. Если вы этого не сделали, приложение поддерживает авторизацию через сайт HuggingFace. Если для модели требуется авторизация, приложение попытается авторизоваться через сайт и добавить полученный токен, который в этом случае отобразится в поле токена.
- Копировать/вставить настройки приложения в буфер обмена: Вы можете скопировать все настройки приложения в формате JSON в буфер обмена, вставить настройки приложения из буфера обмена или отправить их SMS-сообщением. Обратите внимание, что разные версии приложения могут иметь несовместимые настройки.
- Оценить приложение: Оценить приложение в Google Play. Обратите внимание, что это экспериментальное приложение, в некоторых случаях и с некоторыми моделями оно может работать нестабильно.
- Очистить историю чата: Очистить все сохранённые сообщения.
- Восстановить настройки приложения по умолчанию: Удаляет все настройки приложения. Иногда при обновлении версии приложения, если в предыдущей версии были обнаружены критические ошибки, связанные с настройками приложения, при обновлении до более стабильной версии предыдущие настройки также будут удалены.
- Настройки памяти

- Настройки памяти: Запуск моделей LLM на смартфоне требует большого объёма свободной оперативной памяти. На этом экране можно увидеть текущее состояние доступной оперативной памяти, а также настроить уведомления или выгрузку модели при её недостатке. В код движка C++ интегрирована функция, которая принимает параметры с этого экрана и останавливает генерацию при недостатке памяти. Однако в некоторых случаях память может внезапно закончиться, и в этом случае приложение закроется. Размер контекста модели напрямую влияет на объём потребляемой оперативной памяти. Размер контекста можно настроить на странице настроек движка. На странице конфигурации памяти также отображается архитектура процессора и поддерживаемый набор инструкций.
- Настройки подсказок: На этой странице можно создавать, редактировать, сохранять в предустановках и удалять из предустановок подсказки. Подсказка используется для всех движков и добавляется в первое сообщение диалогового окна. Подсказку по умолчанию удалить нельзя, также при смене языка подсказка по умолчанию сбрасывается на выбранный язык. Если вы хотите использовать свою подсказку, не сохраняйте её как подсказку по умолчанию.

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

- Имя шаблона: Шаблоны связаны с загруженной моделью через «Ключевой мир имени модели». Вы можете указать имена для нескольких моделей через , если они используют один и тот же пресет.
- Шаблон для первого сообщения: Шаблон для первого сообщения должен включать подсказку. При отправке сообщения модели параметр prompt_text заменяется на подсказку, а параметр message_text — на сообщение пользователя.
Ключевой мир остановки генерации: Ключевое слово, при получении которого в ответе от модели приложение остановит генерацию. Это необходимо для некоторых моделей, при обучении или модификации которых были допущены ошибки, в результате чего модель может использовать некорректные ключевые слова, которые движок не распознает, и генерация будет происходить бесконечно. Вы можете использовать несколько ключевых слов, разделенных символом «,». - Ключевой мир замены: Некоторые модели могут возвращать служебные ключевые слова в ответе. Здесь можно перечислить, какие ключевые слова будут удалены из ответа, в формате «ключевое слово» -> «чем его можно заменить». Например, вы можете заменить служебный тег о том, что думает модель, на ваше общее мнение.
- Настройки движка LLama.cpp: Настройки движка LLama.cpp. Вы можете сохранять настройки в пресеты. Подробнее о настройках и их влиянии можно прочитать в статьях о моделях LLM. Вот некоторые из них:

- Размер контекста: Максимальное количество токенов, которые модель может «запомнить» одновременно. Размер оперативной памяти влияет на размер контекста, рекомендуемые значения: 2–4 ГБ ОЗУ — 128–256 токенов, 6–8 ГБ ОЗУ — 256–1024 токенов, 12–16 ГБ ОЗУ — 1024–32000 токенов.
- Размер ответа: Максимальное количество токенов, которые может сгенерировать модель.
Температура: Плавающее значение для температуры (используется, если включена выборка температуры). Управляет случайностью. 1,0 = нейтральный, 0,7 = консервативный, 1,3 = креативный. - Top-K: Целочисленное значение для Top-K. Используется, если use_top_k имеет значение true. Указывает количество сохраняемых верхних токенов.
- Top-P: Плавающее значение для Top-P. Используется, если use_top_p имеет значение true. Представляет собой пороговое значение кумулятивной вероятности (например, 0,9).
- Потоки: Количество потоков, используемых для инициализации.
- Пакет потоков: Количество потоков, используемых для генерации.
- Сэмплеры: Выбор сэмплера для обработки необработанных значений.
- Подробнее: Подробнее об этом можно узнать в моей статье «Нейронные сети простыми словами».
- Настройки движка MediaPipe: Настройки движка MediaPipe. Эти настройки частично повторяют настройки из LLama.cpp.

- Настройки движка LocalHost

- Настройки Ollama LocalHost: вы можете запустить Ollama на своем компьютере для генерации ответов графическому процессору и подключения по IP-адресу. Для запуска используйте команды: $env:OLLAMA_HOST=»0.0.0.0″ — задает переменную окружения для запуска в качестве внешнего IP-адреса, без этого Ollama будет слушать только localhost внутри компьютера setx OLLAMA_HOST 0.0.0.0 /M — запись в постоянные переменные окружения, это нужно сделать от имени администратора и перезапустить терминал ollama pull gemma3n:e4b — загружает модель gemma3n ollama serve — запускает ollama ollama list — показывает загруженные модели, после загрузки модели и запуска Ollama модель будет видна в приложении IP-адрес — адрес вашего компьютера в сети, обычно 192.168.., его можно посмотреть в настройках WiFi на вашем компьютере или в настройках роутера
- Настройки OpenAI LocalHost: вы можете запустить модель на своем компьютере в LM Studio или других программах, совместимых с API OpenAI, чтобы генерировать ответы для GPU и подключаться по IP-адресу. IP-адрес — это адрес вашего компьютера в сети, обычно 192.168.., его можно посмотреть в настройках WiFi на вашем компьютере или в настройках роутера. Чтобы прослушивать LM Studio на порту вашего компьютера, выберите LM Studio — Разработчик — Настройки — Обслуживать в локальной сети и запустите ее, установив переключатель Состояние в положение Работает.
Будущие функции
- API LocalHost Server: приложение будет работать как сервер, совместимый с OpenAI API и Ollama API.
- AI Edge RAG SDK: будет добавлена поддержка AI Edge RAG SDK и векторной базы данных VectorStore. Вы сможете добавлять документы и данные в базу данных и использовать их при взаимодействии с моделью.
- LiteRT-LM NPU: будет добавлен движок LiteRT-LM. У меня есть доступ к документации, и, возможно, я смогу добавить поддержку.
Текущие реализации движков
llama.cpp
- Wikipedia: en.wikipedia.org/wiki/Llama.cpp.
- GitHub: github.com/ggml-org/llama.cpp
- Android: github.com/ggml-org/llama.cpp/tree/master/examples/llama.android
Google AI Edge MediaPipe
- Google Guide: ai.google.dev/edge/mediapipe/solutions/guide .
- GitHub: github.com/google-ai-edge/mediapipe.
- HuggingFace: huggingface.co/litert-community
- Kaggle: kaggle.com/models/google/gemma-3/tfLite
- Maven: mvnrepository.com/artifact/com.google.mediapipe
Local Host Engines
- Ollama: Поддерживается API Ollama. Вы можете запустить Ollama на ПК и взаимодействовать с моделью из приложения.
- OpenAI API: Поддерживается API OpenAI. Вы можете запустить LM Studio или любое другое приложение, совместимое с API OpenAI, на ПК и взаимодействовать с моделью из приложения.
Будущие реализации движков
LiteRT-LM
Будет добавлена поддержка моделей NPU и .litertlm после завершения альфа-тестирования.
- About: https://ai.google.dev/edge/litert/next/npu
- GitHub: https://github.com/google-ai-edge/LiteRT-LM
MLC LLM
пока только экспериментальное использование, так как модели на HuggingFace состоят из множества файлов, и их использование не удобно, также движок пока что плохо оптимизирован под Android и модели работают медленней llama.cpp и MediaPipe, в будущем планируется переупаковать некоторые модели в специализированный формат одним файлом и выложить на HuggingFace
- GitHub: github.com/mlc-ai/mlc-llm
- CLI: llm.mlc.ai/docs/deploy/cli.html.
- Android: llm.mlc.ai/docs/deploy/android.html.
- Compilation: llm.mlc.ai/docs/compilation/compile_models.html.
- HuggingFace: huggingface.co/mlc-ai
- Пример модели: huggingface.co/google/gemma-3-1b-it-qat-q4_0-unquantized
ONNX
пока только экспериментальное использование, так как модели на HuggingFace состоят из множества файлов и нет возможности запаковать их вы один файл, использование движка не удобно и работает он под Android медленно
- Wikipedia: en.wikipedia.org/wiki/Open_Neural_Network_Exchange
- GitHub: github.com/microsoft/onnxruntime-genai/tree/main/src/java
- API: onnxruntime.ai/docs/genai/api/java.html.
- HuggingFace: huggingface.co/onnx-community
- Maven: mvnrepository.com/artifact/com.microsoft.onnxruntime
PyTorch
планирую добавить
- Wikipedia: ru.wikipedia.org/wiki/PyTorch
- Site: pytorch.org.
- GitHub: github.com/pytorch/pytorch
Дополнительные ресурсы почитать
- Большая языковая модель (Википедия)
- Список основных языковых моделей (Википедия)
- Лама (языковая модель) (Википедия)
- Тест языковой модели (Википедия)
- Модель оценки документа (arXiv)
Архитектура
- Модульная Clean Architecture by Robert C. Martin
https://en.wikipedia.org/wiki/Robert_C._Martin
Технологический стек
- Языки: Kotlin, Java, C++
- Build System: Gradle Groovy DSL, CMake