Проблема: облачные API - это медленно, дорого и скучно
Представьте: вам нужно сделать прототип приложения. Идея есть, время есть, но каждый запрос к GPT-4 занимает секунды. Каждая итерация - это ожидание. Каждый эксперимент - это счёт от OpenAI. А ещё эти лимиты токенов, эти падения API в самый неподходящий момент.
Знакомо? Мне - слишком. Поэтому я решил проверить, можно ли заменить облачные модели на локальные и не сойти с ума. Задача: создать работающее приложение для визуализации ментальных карт (MindMapp) с нуля за 12 часов. Без ChatGPT. Без Copilot. Только локальные LLM на моём MacBook Pro M2 с 16GB RAM.
Скептики скажут: "Локальные модели слабее!" Да, но они бесплатны, приватны и работают без интернета. А скорость? Иногда 30 токенов в секунду - это быстрее, чем ждать ответ от API через полмира.
Решение: агентное кодирование на стероидах
Агентное кодирование - это когда вы не просто просите модель написать код. Вы создаёте систему: один агент проектирует архитектуру, второй пишет компоненты, третий тестирует. Вы - дирижёр этого оркестра. С облачными моделями это дорого. С локальными - вопрос только в терпении и правильных инструментах.
Я выбрал три модели для теста:
- Devstrall Small 2 - 7B параметров, заточена именно под код
- Seed OSS - 14B, мультиязычная, с хорошим пониманием контекста
- GLM-4.5-Air - 9B, китайская разработка, но с отличным английским
1 Подготовка поля боя: выбираем инструменты
Первое правило локальных LLM: не используйте первый попавшийся инструмент. Я перепробовал всё - от LM Studio до самописных обёрток. Вот что сработало:
# Установка Ollama - мой фаворит для быстрого старта
curl -fsSL https://ollama.ai/install.sh | sh
# Загрузка моделей
ollama pull devstrall-small:2
ollama pull seed-oss:14b
ollama pull glm-4.5-air:9b
Почему Ollama? Потому что она просто работает. Не нужно возиться с трансформаторами, квантованиями, CUDA. Загрузил - запустил. Для более тонкой настройки можно использовать LM Studio или llama.cpp, но для скорости я выбрал простой путь.
2 Архитектура: как разбить задачу на куски
MindMapp - это веб-приложение для создания ментальных карт. Нужно: интерфейс перетаскивания, сохранение в JSON, экспорт в PNG. Вместо того чтобы просить одну модель сделать всё, я разбил задачу:
- Агент 1 (Devstrall Small 2): проектирует структуру данных для узлов и связей
- Агент 2 (Seed OSS): создаёт React-компоненты для интерфейса
- Агент 3 (GLM-4.5-Air): пишет логику перетаскивания и соединения
- Агент 4 (снова Devstrall): добавляет функционал экспорта
Каждый агент получает контекст от предыдущего. Если второй агент не понимает структуру данных от первого - возвращаемся и уточняем. Это не линейный процесс, это итеративный танец.
Самая частая ошибка: дать модели слишком общую задачу. "Создай приложение для ментальных карт" - это путь к галлюцинациям. "Создай React-компонент Node, который принимает props {id, label, x, y} и отрисовывает круг с текстом" - это работает.
3 Процесс: час за часом, компонент за компонентом
Старт: 9:00 утра. Первый промпт для Devstrall Small 2:
/*
Спроектируй структуру данных для ментальной карты.
Узлы должны иметь: id, label, позицию (x, y), массив childIds.
Связи должны храниться отдельно: id, sourceNodeId, targetNodeId.
Напиши пример на JavaScript.
*/
Ответ пришёл за 12 секунд. Чистый, работающий код. Не идеально, но основа есть. 9:15 - передаю результат Seed OSS с запросом на создание React-компонента. И так далее.
К 14:00 у меня есть работающий прототип. К 18:00 - добавлен экспорт, исправлены баги с перетаскиванием. К 21:00 - приложение готово. 12 часов с перерывами на кофе и проклятия в адрес CSS.
Сравнение моделей: кто лучше для кода?
Я вёл подробный лог. Вот что получилось:
| Модель | Размер | Скорость (токен/с) | Качество кода | Понимание контекста | Лучше всего для |
|---|---|---|---|---|---|
| Devstrall Small 2 | 7B | 28-32 | ★★★★☆ | ★★★☆☆ | Структуры данных, алгоритмы |
| Seed OSS | 14B | 18-22 | ★★★☆☆ | ★★★★☆ | Компоненты UI, интеграция |
| GLM-4.5-Air | 9B | 24-28 | ★★★☆☆ | ★★★★★ | Логика, обработка событий |
Выводы неочевидные:
- Devstrall Small 2 действительно хороша для кода, но иногда "зацикливается" на одном решении. Если попросить переписать - выдаёт почти то же самое.
- Seed OSS медленнее, но лучше понимает сложные инструкции. Когда нужно было сделать drag-and-drop с учётом иерархии узлов - только Seed справилась с первого раза.
- GLM-4.5-Air стала сюрпризом. Китайская модель, но с английским промптом работает отлично. Лучшая в понимании контекста: помнила детали из предыдущих запросов даже через 5-6 итераций.
Нюансы, которые сведут с ума
Локальные LLM - не волшебная палочка. Вот что бесит больше всего:
Контекстное окно - это не шутка
У большинства моделей 4K-8K токенов контекста. Когда вы передаёте код предыдущего компонента + новое задание + историю промптов - это окно быстро заканчивается. Решение: не передавайте весь код. Передавайте только сигнатуры и ключевые моменты. Или используйте модели с большим контекстом, но они медленнее.
Галлюцинации в коде - это норма
Модель может "придумать" несуществующий метод React или свойство CSS. Проверяйте каждый фрагмент кода. Не доверяйте слепо. Особенно это касается новых библиотек - локальные модели тренировались на данных до 2023 года в лучшем случае.
Температура - ваш враг и друг
По умолчанию в Ollama temperature=0.8. Для кодирования это слишком много - модель становится "креативной" там, где нужна точность. Ставьте 0.1-0.3 для предсказуемого кода. Но если зашли в тупик - повысьте до 0.7, возможно, модель предложит неочевидное решение.
# Запуск модели с низкой температурой для кода
ollama run devstrall-small:2 --temperature 0.2
FAQ: вопросы, которые вы хотели задать
Стоит ли полностью переходить на локальные LLM для разработки?
Нет. Это инструмент для конкретных сценариев: прототипирование, генерация шаблонного кода, эксперименты без интернета. Для production-кода нужны ревью, тесты и часто - более мощные облачные модели для сложных задач.
Какое железо нужно?
Мой MacBook M2 с 16GB RAM справился с тремя моделями одновременно (не одновременно запущенными, но переключался между ними). Для моделей до 14B параметров хватит 16GB RAM. Для больших - смотрите в сторону ноутбуков с 24GB VRAM или облачных инстансов с GPU.
Как избежать проблем с длинными промптами?
Разбивайте. Всегда. Если инструкция занимает больше 10 строк - вы уже рискуете. Модели, особенно локальные, теряют нить в длинных промптах. Используйте нумерованные списки, чёткие разделы, повторяйте ключевые требования.
А что насчёт мобильной разработки?
Тот же принцип. Для iOS/macOS можно использовать Swift Transformers или AnyLanguageModel. Да, на iPhone тоже можно запускать модели, как в Lekh AI, но для разработки это скорее экзотика.
Итог: 12 часов, 3 модели, 1 приложение
MindMapp работает. Это не шедевр, но прототип, который можно показывать инвесторам или использовать для внутренних нужд. Код не идеален, но его можно доработать. Главное - он создан без единого запроса к облачным API.
Что я вынес из этого эксперимента:
- Локальные LLM для разработки - не будущее. Они уже настоящее, просто другое.
- Скорость важнее размера: 7B модель, которая отвечает за 10 секунд, лучше 70B, которая думает минуту.
- Агентный подход работает, но требует дисциплины. Вы - архитектор, а модели - строители.
Попробуйте. Возьмите простую задачу, установите Ollama, загрузите Devstrall Small 2. Начните с малого: "напиши функцию сортировки на JavaScript". Потом усложняйте. Через месяц вы будете удивляться, как раньше жили без этого.
Прогноз на 2025: локальные LLM станут стандартной частью инструментария разработчика, как сейчас Git. Не заменят облачные, но займут свою нишу - приватную, быструю, независимую. И да, кто-то обязательно запустит модель на Raspberry Pi и будет хвастаться в Twitter.