Ollama: установка, модели, API и Modelfile. Полный гайд
Что такое Ollama?
Ollama - open-source (MIT) программа для запуска языковых моделей на своём компьютере. Она скачивает модели из библиотеки, управляет ими через CLI и поднимает локальный сервер на порту 11434 с нативным REST API, OpenAI-совместимым и Anthropic-совместимым эндпоинтами.
TL;DR
- -Ollama ставится скриптом install.sh на macOS и Linux, скриптом install.ps1 или установщиком на Windows, есть образ ollama/ollama для Docker. Сервер по умолчанию слушает 127.0.0.1:11434, ключ для локальных запросов не нужен.
- -Модель выбирают по памяти, а не по размеру файла. В замере на Ollama 0.40.14 файл qwen2.5-coder:7b весит 4.7 GB, а в памяти с контекстом 32768 токенов модель заняла 6.6 GB; qwen3:8b при файле 5.2 GB заняла 9.9 GB.
- -API два: нативный /api/* (generate, chat, embed, tags, ps) и OpenAI-совместимый /v1/* (chat/completions, responses, models, embeddings). Любой клиент OpenAI SDK подключается сменой base_url.
- -Контекст по умолчанию зависит от видеопамяти: 4k при VRAM меньше 24 GiB, 32k при 24-48 GiB, 256k от 48 GiB. Для агентов документация Ollama рекомендует не меньше 64000 токенов, но выше нативного окна модели num_ctx не поднимается.
- -Modelfile задаёт производную модель: базовую модель, параметры (num_ctx, temperature), системный промпт. Собирается командой ollama create, проверяется через ollama show и ollama ps.
Ollama - open-source программа под лицензией MIT для запуска языковых моделей на своём компьютере. Она скачивает модели из библиотеки ollama.com, управляет ими через CLI и поднимает локальный сервер на порту 11434: нативный REST API, OpenAI-совместимый /v1 и Anthropic-совместимый /v1/messages. У репозитория ollama/ollama больше 186 тысяч звёзд, последний релиз на 6 ноября 2026 года - v0.40.15.
Установка занимает одну команду, первая модель запускается второй. Сложности начинаются потом: модель не помещается в память, агент теряет начало промпта, потому что на машине с видеопамятью меньше 24 GiB контекст по умолчанию всего 4k, num_ctx в Modelfile молча обрезается, а «кодовая» модель печатает вызовы инструментов текстом вместо того, чтобы их выполнить.
Статья о том, как поставить Ollama на macOS, Windows, Linux и в Docker, выбрать модель под объём памяти, работать с ней через CLI, /api и /v1, настроить контекст и собрать свой Modelfile. Цифры скорости и памяти сняты на Mac с Apple M4 Max и 36 ГБ памяти на Ollama 0.40.14. Где проверки не было (Windows, Linux, NVIDIA), это сказано прямо, команды взяты из документации.
Что такое Ollama и когда она нужна
Ollama закрывает три задачи. Скачивает веса моделей из своей библиотеки (или берёт ваш GGUF-файл). Запускает модель на GPU, а если видеопамяти не хватает, частично на CPU. И держит HTTP-сервер, к которому обращаются CLI, приложение Ollama, ваш код и сторонние инструменты. Если выбираете между Ollama и LM Studio, сравнение с замерами на одной модели есть в статье LM Studio или Ollama.
Чем локальная модель отличается от облачного API:
| Ollama (локально) | Облачный API (Claude, GPT) | |
|---|---|---|
| Данные | Не покидают машину | Уходят провайдеру |
| Стоимость | Железо и электричество | Оплата за токены |
| Качество | Ниже фронтирных моделей, зависит от размера | Фронтирные модели |
| Скорость | Зависит от GPU и размера модели | Зависит от провайдера и нагрузки |
| Доступность | Работает офлайн после загрузки модели | Нужны сеть, аккаунт, оплата |
Про приватность в FAQ сказано прямо: при локальном запуске Ollama не видит ваши промпты и данные. Это частый аргумент за локальную модель: классификация личных данных, разбор логов, эксперименты без счёта за токены. Пример такого применения разобран в постмортеме Ambient AI для macOS: там llama3.2:3b через Ollama анализирует паттерны работы, и данные не уходят в облако.
В production-архитектуре локальная модель обычно становится одним из провайдеров, а не заменой облаку. Как роутить задачи между моделями и держать fallback, разобрано в статье Production LLM Stack.
Как установить Ollama
Команды ниже взяты из README и документации на ноябрь 2026. На macOS установка проверена, остальные платформы описаны по документации.
macOS
Требования: macOS Sonoma (14) или новее. На Apple Silicon работают CPU и GPU, на Intel-Маках только CPU (docs.ollama.com/macos).
curl -fsSL https://ollama.com/install.sh | sh
Второй вариант: скачать Ollama.dmg и перетащить приложение в Applications. При первом запуске приложение предложит создать ссылку на CLI в /usr/local/bin.
В Homebrew есть формула ollama в homebrew-core. Официальная документация этот способ не описывает. Формула ставит CLI и сервер без GUI-приложения, фоновый сервис запускается через brew services start ollama:
brew install ollama
brew services start ollama
Windows
По документации: Windows 10 22H2 или новее либо Windows 11, для NVIDIA нужен драйвер 551.61+, для AMD - стек с поддержкой ROCm v7 или Vulkan-драйвер Radeon. Права администратора не нужны, установщик ставит Ollama в домашнюю папку.
irm https://ollama.com/install.ps1 | iex
Или скачать OllamaSetup.exe. Для запуска Ollama как службы есть архив ollama-windows-amd64.zip.
Linux
curl -fsSL https://ollama.com/install.sh | sh
Скрипт создаёт пользователя ollama и systemd-сервис. Для ручной установки на странице Linux есть архивы .tar.zst под amd64, arm64 и отдельный ROCm-пакет для AMD. Управление сервисом:
sudo systemctl status ollama
journalctl -e -u ollama # логи сервера
sudo systemctl edit ollama # переменные окружения
Обновление на Linux - повторный запуск того же скрипта.
Docker
# Только CPU
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# NVIDIA GPU (нужен NVIDIA Container Toolkit)
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
docker exec -it ollama ollama run llama3.2
Для AMD есть образ ollama/ollama:rocm (docs.ollama.com/docker). На macOS Docker-вариант бесполезен для скорости: в FAQ указано, что в Docker Desktop на macOS GPU-ускорения нет. На Маке Ollama ставят нативно.
Проверка установки
ollama --version
curl http://localhost:11434/api/version
# {"version":"0.40.14"}
Если CLI пишет could not connect to a running Ollama instance, сервер не запущен. Его поднимает приложение, systemd-сервис, brew services или команда ollama serve в отдельном терминале.
Модели Ollama: как выбрать под железо
Главное ограничение - память. Модель должна целиком поместиться в видеопамять (на Apple Silicon - в ту часть unified memory, которую видит GPU), иначе часть слоёв уйдёт на CPU и скорость упадёт. Память уходит и на веса, и на KV-кэш контекста. Общий расчёт памяти, сравнение семейств моделей и замеры на 27B-моделях собраны в гайде по локальным LLM.
Замер на Ollama 0.40.14 показывает разницу:
| Модель | Файл | В памяти (ollama ps, контекст 32768) |
|---|---|---|
| qwen2.5-coder:7b | 4.7 GB | 6.6 GB |
| qwen3:8b | 5.2 GB | 9.9 GB |
На macOS GPU доступна не вся память. На машине с 36 ГБ сервер Ollama в логе отчитался о total_vram=28.1 GiB.
Ориентиры по размерам ниже собраны по страницам тегов ollama.com/library на 6 ноября 2026. Это размеры файлов, к ним прибавляется память под контекст. Таблица даёт отправную точку, последнее слово за ollama ps на вашей машине.
| Память для GPU | Что разумно запускать | Примеры (размер файла) |
|---|---|---|
| 8 ГБ | 1-4B | qwen3:4b (2.5 GB), qwen3.5:4b (3.3-4.0 GB) |
| 16 ГБ | 7-9B | qwen2.5-coder:7b (4.7 GB), qwen3:8b (5.2 GB), qwen3.5:9b (6.6-7.6 GB) |
| 24-36 ГБ | 14-20B, MoE около 30B | qwen3:14b (9.3 GB), gpt-oss:20b (14 GB), qwen3:30b (19 GB) |
| 48 ГБ и больше | 27-35B | qwen3.8:27b (18 GB), qwen3.6:35b (23 GB) |
| Серверы, 80+ ГБ | 100B+ | gpt-oss:120b (65 GB), qwen3.5:122b (81 GB) |
Теги и квантизация
Имя модели состоит из семейства и тега: qwen3:8b, qwen3.6:27b-q4_K_M. Тег без суффикса - вариант по умолчанию. Суффиксы q4_K_M, q8_0, bf16 обозначают квантизацию: чем меньше бит на вес, тем меньше файл и расход памяти и тем заметнее потеря качества. У qwen3.8:27b это 18 GB в q4_K_M, 30 GB в q8_0 и 56 GB в bf16. У части свежих моделей есть теги -mlx под Apple Silicon.
На странице каждой модели стоят метки возможностей:
tools- модель обучена вызывать инструменты (function calling);thinking- умеет выдавать рассуждение перед ответом, его включают и выключают параметромthink;vision- принимает картинки;embedding- модель для векторов, а не для чата (nomic-embed-text, bge-m3, qwen3-embedding);cloud- у модели есть облачный вариант, который работает на серверах Ollama.
Метка tools не гарантирует, что модель справится с агентом: у qwen2.5-coder:7b метка есть, а в OpenCode она печатала вызовы инструментов текстом.
Ollama и Qwen
Модели Qwen в библиотеке занимают заметную часть верхних строк по загрузкам. На 6 ноября 2026 там есть:
| Модель | Размеры | Контекст | Метки |
|---|---|---|---|
| qwen2.5-coder | 0.5b-32b | 32K | tools |
| qwen3 | 0.6b-235b | 40K или 256K, зависит от размера | tools, thinking |
| qwen3-coder | 30b, 480b | 256K (30b) | tools |
| qwen3.5 | 0.8b-122b | 256K | vision, tools, thinking |
| qwen3.6 | 27b, 35b (35b-a3b) | 256K | vision, tools, thinking |
| qwen3.8 | 27b | 256K | vision, tools, thinking |
Для машины с 16 ГБ подходят qwen3:8b и qwen3.5:9b. qwen2.5-coder:7b справляется с короткими задачами на код в чате, но страница модели обновлялась больше года назад, а как агент она не работает. Нативный контекст у qwen3:8b - 40960 токенов, у qwen3.5 - 256K. Для агента это существенно: системный промпт OpenCode в тесте разрастался примерно до 53 тысяч токенов.
Нумерация семейств и состав библиотеки меняются каждые несколько недель: на момент проверки qwen3.8 обновлялась шесть дней назад, qwen3.6 - неделю назад. Перед выбором откройте страницу модели и проверьте дату обновления и теги.
Команды Ollama CLI
| Команда | Что делает |
|---|---|
ollama run qwen3:8b | Интерактивный чат; с аргументом-строкой выполняет один промпт |
ollama pull qwen3:8b | Скачивает модель, обрыв докачивается при повторном запуске |
ollama ls | Список скачанных моделей с размерами |
ollama ps | Загруженные в память модели: память, PROCESSOR, CONTEXT, время до выгрузки |
ollama stop qwen3:8b | Выгружает модель из памяти сразу |
ollama rm qwen3:8b | Удаляет модель с диска |
ollama show qwen3:8b | Параметры, нативный контекст, возможности; --modelfile выводит Modelfile |
ollama create name -f Modelfile | Собирает модель из Modelfile |
ollama cp src dst | Копирует модель под другим именем |
ollama serve | Запускает сервер в текущем терминале |
ollama launch [интеграция] | Настраивает и запускает внешний инструмент с Ollama |
Флаг --verbose у ollama run печатает статистику после ответа:
ollama run qwen2.5-coder:7b --verbose "Write a Python function is_prime(n)."
# total duration: ...
# load duration: ... # загрузка модели в память
# prompt eval rate: ... # скорость обработки промпта, tok/s
# eval count: ... # сколько токенов сгенерировано
# eval rate: ... # скорость генерации, tok/s
Для сравнения моделей смотрят eval rate, это скорость генерации ответа. load duration показывает, сколько ушло на загрузку модели: при первом запросе это секунды, у уже загруженной модели доли миллисекунды. У моделей с меткой thinking для коротких ответов рассуждение лучше выключить: ollama run qwen3:8b --think=false.
Замер: qwen2.5-coder:7b и qwen3:8b на M4 Max
Стенд: Mac с Apple M4 Max, 36 ГБ памяти, macOS 27.2, Ollama 0.40.14 из Homebrew (релиз 0.40.15 на момент замера в формулу не попал). Сервер с настройками по умолчанию.
| Модель | Загрузка (load / total) | Генерация, первый запрос | Генерация, прогретая модель | ollama ps |
|---|---|---|---|---|
| qwen2.5-coder:7b | 2.11 с / 4.0 с | 69.5 tok/s | 68.9 tok/s | 6.6 GB, CONTEXT 32768, 100% GPU |
qwen3:8b (--think=false) | 3.78 с / 6.5 с | 59.5 tok/s | 59.4 tok/s | 9.9 GB, CONTEXT 32768, 100% GPU |
Как читать цифры:
- Время загрузки снято, когда файлы модели уже лежали в кэше файловой системы macOS. Загрузку с холодного диска этот замер не показывает, она дольше.
- Скорость генерации у 7-8B моделей на этом железе держится около 60-70 токенов в секунду и почти не зависит от того, первый это запрос или нет.
- Скачивание qwen2.5-coder:7b (4.7 GB) на стабильном канале заняло около полутора минут. Время целиком определяется сетью.
Версия Ollama влияет на память. На Ollama 0.24.0 та же qwen2.5-coder:7b с тем же контекстом 32768 занимала 8.2 GB, на 0.40.14 - 6.6 GB, а скорость генерации почти не изменилась (72 и 70 tok/s против 69.5 и 68.9). Цифры из старых гайдов поэтому лучше перепроверять на своей версии.
REST API Ollama
Нативный API живёт по адресу http://localhost:11434/api. Ключ локально не нужен (docs.ollama.com/api). Полный список эндпоинтов есть в справочнике:
| Эндпоинт | Назначение |
|---|---|
POST /api/generate | Ответ на один промпт |
POST /api/chat | Ответ на историю сообщений, с tools |
POST /api/embed | Эмбеддинги |
GET /api/tags | Скачанные модели |
GET /api/ps | Загруженные модели, context_length, size_vram |
POST /api/show | Параметры и возможности модели |
POST /api/pull, /api/create, /api/copy, DELETE /api/delete | Управление моделями |
GET /api/version | Версия сервера |
Запрос к /api/generate:
curl -s http://localhost:11434/api/generate -d '{
"model": "qwen2.5-coder:7b",
"prompt": "Write a one-line Python lambda that squares a number. Code only.",
"stream": false,
"options": {"num_predict": 60}
}' | jq -r .response
# ```python
# square = lambda x: x ** 2
# ```
На прогретой модели такой запрос отработал за 0.27 с. /api/chat принимает массив messages вместо prompt:
curl -s http://localhost:11434/api/chat -d '{
"model": "qwen3:8b",
"messages": [{"role": "user", "content": "Explain a Python decorator in one sentence."}],
"think": false,
"stream": false
}' | jq -r .message.content
Параметры, которые нужны чаще других:
streamпо умолчаниюtrue: ответ приходит потоком частей. Для скриптов и curl ставятfalse.options- параметры генерации:temperature,top_k,top_p,seed,stop,num_predict,num_ctx.keep_aliveзадаёт, сколько модель держится в памяти после запроса ("10m",0- выгрузить сразу).think: falseвыключает рассуждение у моделей сthinking. Без него qwen3 тратит токены на размышления даже на однострочный ответ.formatпринимает"json"или JSON-схему для структурированного ответа.
В ответе есть метрики total_duration, load_duration, prompt_eval_count, eval_count, eval_duration. Длительности указаны в наносекундах, так что скорость генерации считается как eval_count / eval_duration * 1e9.
Для Python и JavaScript есть официальные библиотеки pip install ollama и npm i ollama:
from ollama import chat
response = chat(
model="qwen3:8b",
messages=[{"role": "user", "content": "Name three uses of embeddings."}],
think=False,
)
print(response.message.content)
OpenAI-совместимый API Ollama
Адрес http://localhost:11434/v1. Готовый клиент OpenAI подключается сменой base_url, ключ передаётся любой: SDK требует значение, Ollama его не проверяет (docs.ollama.com/openai).
from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1/", api_key="ollama")
resp = client.chat.completions.create(
model="qwen2.5-coder:7b",
messages=[{"role": "user", "content": "Write a one-line Python lambda that squares a number."}],
max_tokens=60,
)
print(resp.choices[0].message.content)
Поддерживаются эндпоинты /v1/chat/completions, /v1/completions, /v1/models, /v1/embeddings, /v1/responses (только без хранения состояния) и аудио-эндпоинты. В chat completions работают streaming, JSON mode, seed, картинки в base64, tools и reasoning_effort. Для qwen3 короткий ответ без рассуждения даёт "reasoning_effort": "none".
Чего в /v1 нет:
tool_choice,logit_bias,user,n, logprobs;- картинок по URL (только base64);
- параметра размера контекста. Если нужен другой
num_ctx, создают модель через Modelfile и обращаются к ней по имени.
Инструменту, который ждёт конкретное имя модели вроде gpt-3.5-turbo, отдают копию: ollama cp qwen3:8b gpt-3.5-turbo.
Оба API отвечают одинаково быстро: на прогретой qwen2.5-coder:7b /v1/chat/completions ответил за 0.23 с против 0.27 с у /api/generate. Выбор между ними - вопрос формата. Если код уже написан под OpenAI SDK или инструмент умеет только OpenAI-совместимых провайдеров, берите /v1. Если нужны num_ctx, keep_alive и управление моделями, берите /api.
Контекст и память в Ollama
Размер контекста определяет, сколько токенов модель видит за раз, и сколько памяти уходит на KV-кэш. Значение по умолчанию зависит от видеопамяти (docs.ollama.com/context-length):
| VRAM | Контекст по умолчанию |
|---|---|
| меньше 24 GiB | 4k |
| 24-48 GiB | 32k |
| 48 GiB и больше | 256k |
На тестовой машине сервер увидел 28.1 GiB и выставил 32768, что подтверждает строка лога vram-based default context ... default_num_ctx=32768. На странице про Modelfile при этом указано значение num_ctx по умолчанию 2048. Документация расходится, поэтому реальное значение смотрят в колонке CONTEXT у ollama ps.
Для агентов, веб-поиска и инструментов для кода документация рекомендует не меньше 64000 токенов. На машине с 16 ГБ по умолчанию будет 4k, и системный промпт агента туда не поместится: Ollama обрежет вход, а модель потеряет инструкции.
Как поменять контекст:
# для всего сервера
OLLAMA_CONTEXT_LENGTH=65536 ollama serve
# для одного запроса к /api
curl -s http://localhost:11434/api/generate -d '{"model":"qwen3:8b","prompt":"hi","options":{"num_ctx":32768}}'
В приложении Ollama контекст настраивается ползунком в Settings. Третий способ, через Modelfile, разобран в следующем разделе.
У увеличения контекста два ограничения:
- Нативное окно модели.
num_ctxвыше него не работает. У qwen3:8b окно 40960 токенов, и при запросе 65536 любым из трёх способовollama psпоказалCONTEXT 40960. У gemma4:e4b нативное окно 131072, и на ней 65536 выставились без урезания. Нативное окно показываетollama show <модель>. - Память. Контекст растёт, растёт и KV-кэш. qwen3:8b при контексте 40960 заняла 11 GB против 9.9 GB при 32768. Если памяти не хватит, часть модели уйдёт на CPU, и в PROCESSOR вместо
100% GPUпоявится разделение между CPU и GPU.
Сэкономить память на кэше помогают две переменные из FAQ. OLLAMA_KV_CACHE_TYPE=q8_0 вдвое уменьшает KV-кэш относительно f16 с очень небольшой потерей качества, q4_0 уменьшает вчетверо с небольшой или средней потерей. Квантизованный кэш работает только с Flash Attention: OLLAMA_FLASH_ATTENTION=1. Формула Homebrew в подсказке после установки предлагает именно эту пару переменных.
Modelfile: своя модель в Ollama
Modelfile - текстовый файл, который описывает производную модель: базовые веса, параметры и системный промпт (docs.ollama.com/modelfile). Проверенный пример:
FROM qwen3:8b
PARAMETER num_ctx 65536
PARAMETER temperature 0.2
SYSTEM You are a concise Python code assistant. Answer with code first.
ollama create fc-qwen3-64k -f Modelfile
ollama show fc-qwen3-64k # num_ctx 65536, temperature 0.2, System, Capabilities
ollama run fc-qwen3-64k --think=false "Reverse a string in Python."
ollama ps # CONTEXT 40960: урезано до нативного окна
ollama show показывает num_ctx 65536, а ollama ps после запуска выдаёт 40960. Сработал потолок нативного окна модели.
Инструкции Modelfile:
| Инструкция | Назначение |
|---|---|
FROM | Обязательная: модель из библиотеки, папка safetensors или GGUF-файл |
PARAMETER | Параметры генерации и контекста |
SYSTEM | Системный промпт |
TEMPLATE | Шаблон промпта (синтаксис Go templates) |
MESSAGE | Пример диалога в истории (system, user, assistant) |
LICENSE | Текст лицензии |
REQUIRES | Минимальная версия Ollama для модели |
CAPABILITY | Добавляет возможность GGUF- или MLX-модели |
Частые параметры и значения по умолчанию из документации: temperature 0.8, top_k 40, top_p 0.9, min_p 0.0, repeat_penalty 1.0, num_predict -1 (без ограничения), seed 0. stop можно задать несколько раз. Посмотреть Modelfile любой модели, включая шаблон из библиотеки, можно через ollama show --modelfile qwen3:8b.
Кроме контекста для OpenAI API, Modelfile нужен для системного промпта под задачу (код-ревьюер, классификатор тикетов) и фиксированной температуры. Ещё один сценарий - упаковать собственный GGUF под понятным именем.
Настройки сервера Ollama и безопасность
Сервер настраивается переменными окружения:
| Переменная | По умолчанию | Что меняет |
|---|---|---|
OLLAMA_HOST | 127.0.0.1:11434 | Адрес и порт сервера |
OLLAMA_MODELS | ~/.ollama/models (macOS) | Папка с моделями |
OLLAMA_KEEP_ALIVE | 5 минут | Сколько модель держится в памяти после запроса |
OLLAMA_CONTEXT_LENGTH | по VRAM | Контекст по умолчанию |
OLLAMA_NUM_PARALLEL | 1 | Параллельные запросы на модель |
OLLAMA_MAX_LOADED_MODELS | 3 × число GPU (3 на CPU) | Сколько моделей одновременно в памяти |
OLLAMA_MAX_QUEUE | 512 | Очередь запросов, сверх неё сервер отвечает 503 |
OLLAMA_ORIGINS | 127.0.0.1, 0.0.0.0 | Разрешённые CORS-источники |
Параллельные запросы стоят памяти: по документации она растёт пропорционально OLLAMA_NUM_PARALLEL × OLLAMA_CONTEXT_LENGTH.
Где задавать переменные, зависит от способа установки. В приложении на macOS это launchctl setenv и перезапуск приложения, на Linux - systemctl edit ollama и строки Environment= в секции [Service], на Windows - переменные окружения пользователя и перезапуск Ollama. Если сервер запущен вручную через ollama serve, переменные задают в том же терминале.
По умолчанию Ollama слушает только localhost. OLLAMA_HOST=0.0.0.0:11434 открывает её для локальной сети, но локальный API работает без ключа. Любой, кто достучится до порта, сможет запускать модели, скачивать новые и удалять существующие. Наружу Ollama открывают только через reverse proxy с аутентификацией, VPN или SSH-туннель (ssh -L 11434:localhost:11434 host).
Облачные функции (облачные модели и веб-поиск) выключаются переменной OLLAMA_NO_CLOUD=1 или настройкой "disable_ollama_cloud": true в ~/.ollama/server.json.
Интеграции: Ollama для агентов и IDE
Команда ollama launch настраивает внешний инструмент на работу с локальной моделью и запускает его. В версии 0.40.14 ollama launch --help перечисляет 18 интеграций, среди них claude, codex, opencode, copilot, droid, cline, vscode, openclaw, hermes и qwen. В разделе Integrations документации есть ещё страницы про JetBrains, Zed, Xcode, Goose, n8n и другие инструменты. Флаг --model выбирает модель, --config настраивает интеграцию без запуска, --restore возвращает инструменту исходный профиль. Сам launch в рамках подготовки статьи не запускался, потому что он меняет конфиги установленных инструментов.
Claude Code. Ollama с версии 0.14.0 поддерживает Anthropic Messages API (/v1/messages), поэтому Claude Code можно направить на локальную модель:
ollama launch claude --model qwen3.5
# или вручную
export ANTHROPIC_AUTH_TOKEN=ollama # обязательна, но не проверяется
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3.5
Документация интеграции требует для локальных моделей контекст от 64k. Anthropic не поддерживает работу Claude Code с моделями, отличными от Claude, так что такая связка на ваш риск. Подробности и ограничения разобраны в разделе про альтернативных провайдеров статьи Claude Code в России.
OpenCode. Open-source агент для терминала подключается командой ollama launch opencode или вручную через провайдер @ai-sdk/openai-compatible с адресом http://localhost:11434/v1. Конфиг и результаты теста локальных моделей разобраны в гайде по OpenCode.
Расширения IDE. Для Cline, Roo Code, VS Code, JetBrains и Zed в документации Ollama есть отдельные страницы интеграций. Для бесплатного стека это частый вариант, его место среди платных инструментов показано в обзоре нейросетей для кода.
Свой код и RAG. Для эмбеддингов есть модели nomic-embed-text, bge-m3, qwen3-embedding и эндпоинты /api/embed и /v1/embeddings. Эмбеддинги при подготовке статьи не проверялись. Как устроен retrieval поверх них, разобрано в гайде по RAG.
Ограничения и подводные камни Ollama
Хорошая модель для кода ≠ хороший агент
Агенту нужна модель, которая стабильно вызывает инструменты в правильном формате и держит длинный системный промпт. Код в чате - другая задача. В тесте с OpenCode на задаче «добавить функцию и тест к ней» результаты локальных моделей вышли такими:
| Модель | Контекст | Результат |
|---|---|---|
| qwen2.5-coder:7b | 32768 | Печатала вызовы инструментов текстом JSON, файлы не менялись. Повторилось на двух версиях Ollama |
| qwen3:8b | 32768 и 40960 | Нативные tool calls, но результат нестабилен: один чистый прогон на старой версии Ollama, на новой из четырёх запусков ни одного чистого (удалённая соседняя функция, дубли return, таймауты) |
| gemma4:e4b | 65536 | Задача за 79 с, но агент удалил существующую функцию и её тест |
Метка tools в библиотеке не гарантирует рабочих tool calls в конкретном агенте. Локальные 8B-модели в агентном режиме могут сработать, но их правки нужно проверять, а проект держать под git. Полная методика и логи теста - в гайде по OpenCode.
Контекст по умолчанию мал для агентов
На машинах с видеопамятью меньше 24 GiB по умолчанию стоит 4k, на 24-48 GiB - 32k. Системный промпт агента вместе с описаниями инструментов легко превышает и то и другое: в тесте OpenCode, который подхватил навыки других агентов из домашней папки, промпт вырос примерно до 53 тысяч токенов, и Ollama обрезала его до 32768 (truncating input prompt в логе сервера). Перед подключением агента проверьте CONTEXT в ollama ps и нативное окно модели.
num_ctx упирается в нативное окно
Modelfile, переменная окружения и options.num_ctx не поднимают контекст выше того, на что обучена модель. Ошибки нет: ollama show показывает заданное значение, а реальное видно только в ollama ps.
Версии меняются быстро
Между 0.24.0 и 0.40.14 расход памяти у одной и той же модели снизился на 1.6 GB. В библиотеке за неделю до проверки обновились qwen3.6 и qwen3.8. Цифры из любого гайда, включая этот, привязаны к версии Ollama и дате.
Качество и скорость не облачные
В проверках для этой статьи 7-8B модели правильно отвечали на короткие задачи вроде однострочной lambda, а многошаговую задачу агента с правкой двух файлов стабильно не решила ни одна. 60-70 токенов в секунду на M4 Max - скорость для одного пользователя. Для нескольких параллельных клиентов понадобятся OLLAMA_NUM_PARALLEL и память под каждый поток.
Docker на Mac и холодный старт
В Docker Desktop на macOS GPU-ускорения нет, модели там работают на CPU. Первый запрос после простоя ждёт загрузки модели (по умолчанию её выгружают через 5 минут без запросов). Если важна задержка, увеличьте OLLAMA_KEEP_ALIVE или передавайте keep_alive в запросе.
С чего начать
- Установите Ollama для своей ОС и проверьте
curl http://localhost:11434/api/version. - Выберите модель по таблице памяти: для 16 ГБ - qwen3:8b или qwen3.5:9b, для 8 ГБ - модели на 4B.
- Запустите
ollama run <модель> --verboseи посмотритеeval rate, затемollama ps: модель должна быть на100% GPU. - Подключите код через
/v1с OpenAI SDK или через библиотекуollama. - Для агента поднимите контекст до 64k, если модель это позволяет (
ollama show), и проверьте результат вollama ps. - Перед
OLLAMA_HOST=0.0.0.0поставьте перед сервером прокси с аутентификацией.