Локальные LLM всё доступнее. Gemma 4 в Ollama
от aNNiMON
Недавно Google выпустил опенсорс LLM модель Gemma 4. Её E2B и E4B варианты не требуют мощного железа, в тестах она держится достаточно хорошо, поддерживает умеет запускать тулы, поэтому поставим её локально и попробуем в качестве чат-бота, распознавателя картинок, а также прикрутим к Claude Code одной командой.
А потянет?Прежде чем начать, разберёмся, потянёт ли вообще железо эту модель? На сайте https://www.canirun.ai/ выберите конфигурацию своего железа и обязательно объём ОЗУ.

Я запускаю Gemma 4 E4B на ноутбуке с RTX 3060 Laptop и 32 Гб ОЗУ, работает хоть и не супербыстро, но достаточно, чтобы не идти заваривать чай каждый раз, когда ждёшь ответа. Да и ОЗУ под IDE и браузер остаётся много.

Ollama
Поставим Ollama с официального сайта https://ollama.com/download или из репозитория дистрибутива (если там есть).
На самом деле локальные модели можно запускать и в LM Studio, и в llama.cpp, но в Ollama намного проще подключить локальную модель к другим приложениям, о чём будет речь дальше.
В зависимости от платформы и типа установки, с Ollama может поставиться CLI и GUI, а может только CLI. Так что дальше я продолжу с CLI версией.
Gemma 4
На сайте Ollama есть страница с описанием модели Gemma 4. Там расписано что это за модель, что она может, с какими приложениями можно интегрировать и как, даны советы по использованию и характеристики.
Ставим E4B, если железо потянет:
или E2B
Если это первый запуск, модель начнёт скачиваться. После скачивания, появится промпт.

Если не работает, возможно сервер не запущен. Запустим командой ollama serve в отдельной вкладке терминала.
Уже можно что-либо поспрашивать. Модель понимает 140 языков, так что можно писать не только на английском. По-умолчанию включен режим рассуждения (reasoning), он ведётся на английском, так что не пугайтесь.
>>> Здароў, як справы?
Видно, что модель знает разные варианты, подбирает по тону и определяется с окончательным ответом. Чтобы отключить рассуждения и повысить скорость ответа, введите /set nothink:
>>> /set
Available Commands:
/set parameter ... Set a parameter
/set system <string> Set system message
/set history Enable history
/set nohistory Disable history
/set wordwrap Enable wordwrap
/set nowordwrap Disable wordwrap
/set format json Enable JSON mode
/set noformat Disable formatting
/set verbose Show LLM stats
/set quiet Disable LLM stats
/set think Enable thinking
/set nothink Disable thinking
>>> /set nothink
Set 'nothink' mode.
>>> Ես հիանալի եմ։ Ի՞նչ ես անում։
Я — вялікая моўная мадэль, стратэгія, распрацаваная Google DeepMind.
Па сутнасці, я тут, каб да адказваць на пытанні, пісаць разным рэчывам, перакладаць мовы і да дапамагаць з разным па матэрыялах, што мне дадасць.
А што жэ я магу для цябе зрабіць сёння? 😊
Белорусский и армянский понимает, что уже хорошо для переводов.
Распознавание изображений
Можно добавлять изображения, просто вставив полный путь к файлу. Я попробовал на простых скриншотах с текстом. Отлично определяет текст на английском, японском и даже когда на одном скриншоте несколько языков.
С чем модель не справилась, так это с определением точных координат. Я сделал скриншот страницы и попросил найти координаты кнопки входа, регистрации и поиска, а ответ выдать в формате json объекта с полями x, y. С форматом проблем не возникло, но вот точные координаты выдать не смогло.
Затем для контроля попросил найти кнопку Like на скриншоте страницы ютуба, и снова мимо. Что в режиме рассуждения, что без него. Но когда я попросил сказать сколько лайков на странице, Gemma 4 спокойно нашла кнопку, увидела в режиме рассуждения и название видео, и название канала, и кнопку лайка, и что там возле неё и успешно назвала количество лайков.
Вывод: модель справляется с понимаем что перед ней, понимает разные языки, может сразу же перевести текст, но с позиционированием она не поможет, для автоматизации веб-сёрфинга не подойдёт.
Claude Code / Codex / OpenCode
Чат в Ollama это, конечно, хорошо, но хочется и файлы дать поанализировать, и код поредактировать, и тулы повызывать с MCPшками.
Важно: для нормальной работы агентов нужно увеличить размер контекста в настройках (если есть UI Ollama) или задав переменную окружения OLLAMA_CONTEXT_LENGTH и перезапустив сервер:
Если вы пользуетесь Claude Code, Codex, OpenCode или Pi, то локальную модель можно добавить, просто запустив что-то из этого:
Если ничего из вышеперечиленного не поставлено, тогда попробуйте Claude Code, и Codex . Первый очень удобен, а во втором иногда тулы работают лучше на локальных моделях. Что самое интересное, в оба можно даже не логиниться. Поставили Claude Code, запускаете:
Выбираете gemma 4

И вас приветствует Claude Code с локальной моделью.

То же самое с Codex:

Агенты
Немного сравнений. Довольно показательно, что на одной и той же модели, результаты могут кардинально отличаться из-за разных контекстов, которые добавляет Claude Code и Codex.
Я специально поставил оба, запустил на одном и том же чистом Rust проекте (без всяких AGENTS.md) и дал пару задач.
What version is the project currently on?
В Claude:
Gemma 4 вызвала git tag и выяснила, что версия 0.9.0.
В Codex:
Модель прочитала файл Cargo.toml и выяснила, что версия проекта 0.9.0.
Считаю, что правильнее в данном случае читать Cargo.toml, потому что гит тегов может и не быть, или там могли быть другие данные.
Вторая задача: посчитать количество тестов в проекте. Для усложнения задачи, проект содержал очевидную ошибку и не компилировался:
Check the project and tell how many tests it have
В Claude:
Gemma попыталась найти test.rs, затем tests/**/*.rs, затем строчку #[test] в папке src (рекурсивно), не нашла ничего и полезла смотреть *.md файлы. Дальше подытожила, что пробовала то, то и это, но ничего не нашла. Ни слова об ошибке компиляции, ни одной попытки запустить cargo test.
Затраченное время: 1м 29с.
Дальше я подтолкнул: "Maybe run cargo test or something?". Она вызвала, увидела ошибку и спросила нужно ли исправлять. После подтверждения попыталась исправить так:
Обновила файл, запустила cargo test ещё раз, получила другую ошибку и начала придумывать уже совсем адовые варианты - переписать match на if...
В Codex:
Gemma посмотрела с чем имеет дело (ls -R), поняла, что это проект на Rust, вызвала cargo test, который упал с ошибкой компиляции, после этого модель попыталась просто поискать #[test], но тоже не нашла. В итоге сказала, что ошибка на такой-то строке и из-за неё точное число тестов сказать не может. Спросила разрешение исправить самой.
Поискала немного по коду, выдала правильный ответ
I generated a patch to fix this by changing the pattern match
from (, Some(yy), Some(ww), Some(hh)) to (Some(xx), Some(yy), Some(ww), Some(hh))Но вот патч применить не получилось, вероятно, из-за несовместимости тула. После того как я исправил код, Gemma запустила cargo test и посчитала количество тестов. В целом всё заняло порядка 5 минут.
Вообще, если какой-то тул не работает, это может быть проблемой Ollama. Например, некоторое время Gemma 4 абсолютно не вызывала никаких тулов в Codex, но потом это исправили.
Итог: эта модель способна выполнять задачи, генерировать простые скрипты или небольшой кусок кода. Всё, что сложнее этого - понадобится несколько попыток или лёгкие подталкивания к решению задачи.
VS Code
Локальные модели можно подключать и к редакторам кода. Zed, VS Code и прочие.

Здесь всё то же самое, что и Claude / Codex, простой анализ и чат работают хорошо, а вот на некоторых тулах возникают проблемы.

Зато если нажать Try again или Retry, то результат всё-таки может получиться. Я попросил написать тесты для небольшого скрипта на Python и модель успешно сгенерировала и записала файл на 120 строчек, предложила обновить README,md и добавила туда раздел о том, как запускать тест.ы. За это время было 3 ошибки.
Заключение
Модель хороша в качестве ежедневного помощника в разных задачах и, думаю, для управления другими агентами. Для кода всё-таки лучше поискать более стабильную модель. Так же модели E2B и E4B понимают аудио в формате wav. Но команды на языке, отличном от английского, распознаются с трудом: либо оллама крашится от недостатка памяти (особенно на записях длиннее 30 секунд), либо происходят галлюцинации.
А потянет?Прежде чем начать, разберёмся, потянёт ли вообще железо эту модель? На сайте https://www.canirun.ai/ выберите конфигурацию своего железа и обязательно объём ОЗУ.

Я запускаю Gemma 4 E4B на ноутбуке с RTX 3060 Laptop и 32 Гб ОЗУ, работает хоть и не супербыстро, но достаточно, чтобы не идти заваривать чай каждый раз, когда ждёшь ответа. Да и ОЗУ под IDE и браузер остаётся много.

Ollama
Поставим Ollama с официального сайта https://ollama.com/download или из репозитория дистрибутива (если там есть).
На самом деле локальные модели можно запускать и в LM Studio, и в llama.cpp, но в Ollama намного проще подключить локальную модель к другим приложениям, о чём будет речь дальше.
В зависимости от платформы и типа установки, с Ollama может поставиться CLI и GUI, а может только CLI. Так что дальше я продолжу с CLI версией.
- > ollama --version
- ollama version is 0.20.7
Gemma 4
На сайте Ollama есть страница с описанием модели Gemma 4. Там расписано что это за модель, что она может, с какими приложениями можно интегрировать и как, даны советы по использованию и характеристики.
Ставим E4B, если железо потянет:
- ollama run gemma4:e4b
- ollama run gemma4:e2b
Если это первый запуск, модель начнёт скачиваться. После скачивания, появится промпт.

Если не работает, возможно сервер не запущен. Запустим командой ollama serve в отдельной вкладке терминала.
Уже можно что-либо поспрашивать. Модель понимает 140 языков, так что можно писать не только на английском. По-умолчанию включен режим рассуждения (reasoning), он ведётся на английском, так что не пугайтесь.
>>> Здароў, як справы?
Рассуждения
Добра, дзякуй! Усё ў парадку. 😄 А ў цябе? (А ў вас?)Видно, что модель знает разные варианты, подбирает по тону и определяется с окончательным ответом. Чтобы отключить рассуждения и повысить скорость ответа, введите /set nothink:
>>> /set
Available Commands:
/set parameter ... Set a parameter
/set system <string> Set system message
/set history Enable history
/set nohistory Disable history
/set wordwrap Enable wordwrap
/set nowordwrap Disable wordwrap
/set format json Enable JSON mode
/set noformat Disable formatting
/set verbose Show LLM stats
/set quiet Disable LLM stats
/set think Enable thinking
/set nothink Disable thinking
>>> /set nothink
Set 'nothink' mode.
>>> Ես հիանալի եմ։ Ի՞նչ ես անում։
Я — вялікая моўная мадэль, стратэгія, распрацаваная Google DeepMind.
Па сутнасці, я тут, каб да адказваць на пытанні, пісаць разным рэчывам, перакладаць мовы і да дапамагаць з разным па матэрыялах, што мне дадасць.
А што жэ я магу для цябе зрабіць сёння? 😊
Белорусский и армянский понимает, что уже хорошо для переводов.
Распознавание изображений
Можно добавлять изображения, просто вставив полный путь к файлу. Я попробовал на простых скриншотах с текстом. Отлично определяет текст на английском, японском и даже когда на одном скриншоте несколько языков.
С чем модель не справилась, так это с определением точных координат. Я сделал скриншот страницы и попросил найти координаты кнопки входа, регистрации и поиска, а ответ выдать в формате json объекта с полями x, y. С форматом проблем не возникло, но вот точные координаты выдать не смогло.
Затем для контроля попросил найти кнопку Like на скриншоте страницы ютуба, и снова мимо. Что в режиме рассуждения, что без него. Но когда я попросил сказать сколько лайков на странице, Gemma 4 спокойно нашла кнопку, увидела в режиме рассуждения и название видео, и название канала, и кнопку лайка, и что там возле неё и успешно назвала количество лайков.
Вывод: модель справляется с понимаем что перед ней, понимает разные языки, может сразу же перевести текст, но с позиционированием она не поможет, для автоматизации веб-сёрфинга не подойдёт.
Claude Code / Codex / OpenCode
Чат в Ollama это, конечно, хорошо, но хочется и файлы дать поанализировать, и код поредактировать, и тулы повызывать с MCPшками.
Важно: для нормальной работы агентов нужно увеличить размер контекста в настройках (если есть UI Ollama) или задав переменную окружения OLLAMA_CONTEXT_LENGTH и перезапустив сервер:
- OLLAMA_CONTEXT_LENGTH=80000
Если вы пользуетесь Claude Code, Codex, OpenCode или Pi, то локальную модель можно добавить, просто запустив что-то из этого:
- ollama launch claude
- ollama launch codex
- ollama launch opencode
- ollama launch pi
Если ничего из вышеперечиленного не поставлено, тогда попробуйте Claude Code, и Codex . Первый очень удобен, а во втором иногда тулы работают лучше на локальных моделях. Что самое интересное, в оба можно даже не логиниться. Поставили Claude Code, запускаете:
- ollama launch claude
Выбираете gemma 4

И вас приветствует Claude Code с локальной моделью.

То же самое с Codex:

Агенты
Немного сравнений. Довольно показательно, что на одной и той же модели, результаты могут кардинально отличаться из-за разных контекстов, которые добавляет Claude Code и Codex.
Я специально поставил оба, запустил на одном и том же чистом Rust проекте (без всяких AGENTS.md) и дал пару задач.
What version is the project currently on?
В Claude:
Gemma 4 вызвала git tag и выяснила, что версия 0.9.0.
В Codex:
Модель прочитала файл Cargo.toml и выяснила, что версия проекта 0.9.0.
Считаю, что правильнее в данном случае читать Cargo.toml, потому что гит тегов может и не быть, или там могли быть другие данные.
Вторая задача: посчитать количество тестов в проекте. Для усложнения задачи, проект содержал очевидную ошибку и не компилировался:
- match (sx, sy, sw, sh) {
- (, Some(yy), Some(ww), Some(hh)) => {
- let x = xx.parse::<u32>().unwrap();
- let y = yy.parse::<u32>().unwrap();
Check the project and tell how many tests it have
В Claude:
Gemma попыталась найти test.rs, затем tests/**/*.rs, затем строчку #[test] в папке src (рекурсивно), не нашла ничего и полезла смотреть *.md файлы. Дальше подытожила, что пробовала то, то и это, но ничего не нашла. Ни слова об ошибке компиляции, ни одной попытки запустить cargo test.
Затраченное время: 1м 29с.
Дальше я подтолкнул: "Maybe run cargo test or something?". Она вызвала, увидела ошибку и спросила нужно ли исправлять. После подтверждения попыталась исправить так:
- match (sx, sy, sw, sh) {
- (_, Some(yy), Some(ww), Some(hh)) => {
- let x = xx.parse::<u32>().unwrap();
Обновила файл, запустила cargo test ещё раз, получила другую ошибку и начала придумывать уже совсем адовые варианты - переписать match на if...
В Codex:
Gemma посмотрела с чем имеет дело (ls -R), поняла, что это проект на Rust, вызвала cargo test, который упал с ошибкой компиляции, после этого модель попыталась просто поискать #[test], но тоже не нашла. В итоге сказала, что ошибка на такой-то строке и из-за неё точное число тестов сказать не может. Спросила разрешение исправить самой.
Поискала немного по коду, выдала правильный ответ
I generated a patch to fix this by changing the pattern match
from (, Some(yy), Some(ww), Some(hh)) to (Some(xx), Some(yy), Some(ww), Some(hh))Но вот патч применить не получилось, вероятно, из-за несовместимости тула. После того как я исправил код, Gemma запустила cargo test и посчитала количество тестов. В целом всё заняло порядка 5 минут.
Вообще, если какой-то тул не работает, это может быть проблемой Ollama. Например, некоторое время Gemma 4 абсолютно не вызывала никаких тулов в Codex, но потом это исправили.
Итог: эта модель способна выполнять задачи, генерировать простые скрипты или небольшой кусок кода. Всё, что сложнее этого - понадобится несколько попыток или лёгкие подталкивания к решению задачи.
VS Code
Локальные модели можно подключать и к редакторам кода. Zed, VS Code и прочие.
- ollama launch vscode

Здесь всё то же самое, что и Claude / Codex, простой анализ и чат работают хорошо, а вот на некоторых тулах возникают проблемы.

Зато если нажать Try again или Retry, то результат всё-таки может получиться. Я попросил написать тесты для небольшого скрипта на Python и модель успешно сгенерировала и записала файл на 120 строчек, предложила обновить README,md и добавила туда раздел о том, как запускать тест.ы. За это время было 3 ошибки.
Заключение
Модель хороша в качестве ежедневного помощника в разных задачах и, думаю, для управления другими агентами. Для кода всё-таки лучше поискать более стабильную модель. Так же модели E2B и E4B понимают аудио в формате wav. Но команды на языке, отличном от английского, распознаются с трудом: либо оллама крашится от недостатка памяти (особенно на записях длиннее 30 секунд), либо происходят галлюцинации.

