Зачем заморачиваться с локальными моделями, если есть OpenAI?
Потому что облачные API - это черный ящик. Вы платите за токены, ваши данные утекают непонятно куда, а скорость ответа зависит от загрузки серверов где-то в Айове. Локальный агент на Ollama и n8n - это принципиально другая история. Он работает когда угодно, не отправляет ваши бизнес-секреты в облако и может быть расширен любым workflow, который вы придумаете.
Представьте, что ваш AI-агент не просто болтает, а реально работает: парсит почту, обновляет базы данных, генерирует отчеты и даже управляет умным домом. И все это без единой строчки кода (ну, почти). Звучит как фантастика? Это реальность 2026 года.
Важно: этот гайд написан для актуальных версий на 20 апреля 2026 года. Если вы читаете это позже, проверьте обновления - мир локальных LLM меняется каждый месяц.
Что у нас под капотом?
Архитектура до смешного проста:
- Ollama - движок для запуска локальных моделей вроде Llama 3.2, Mistral 2 или Phi-3. Работает как демон с REST API.
- n8n - low-code платформа для оркестрации workflow. Каждый workflow - это потенциальный "инструмент" для агента.
- Связка - нода HTTP Request в n8n, которая стучится к Ollama и получает ответы от модели.
В отличие от облачных агентов на OpenRouter, здесь вообще нет внешних зависимостей. Интернет отключили? Агент продолжает работать.
1 Ставим Ollama и выбираем модель (не тупите с выбором)
Первое, что делают все неправильно - качают самую большую и крутую модель. А потом удивляются, почему агент думает 30 секунд. На старте берите что-то легкое и быстрое.
# Установка Ollama (актуально на апрель 2026)
curl -fsSL https://ollama.ai/install.sh | sh
# Запускаем демона
ollama serve &
# Теперь качаем модель. Мой выбор для начала:
ollama pull llama3.2:3b # Быстрая, умная, потребляет мало памяти
# Альтернативы, если у вас мощное железо:
# ollama pull mistral2:7b # Лучшее качество, но медленнее
# ollama pull phi3:mini # Молниеносная, но чуть тупее
Проверяем, что все работает:
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2:3b",
"prompt": "Привет, как дела?",
"stream": false
}'
Если видите JSON с ответом - отлично. Если нет, проверьте, что демон запущен. (Да, я знаю, что вы пропустили этот шаг).
2 Настраиваем n8n для работы с локальным API
Если n8n у вас еще не стоит - поставьте через Docker. Это займет 2 минуты. Если стоит - переходите к следующему шагу.
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n:latest
Открываем n8n на localhost:5678. Создаем новый workflow. Тащим на канву ноду HTTP Request.
Вот как ее настроить:
- Method: POST
- URL: http://localhost:11434/api/generate
- Headers: Content-Type: application/json
- Body (JSON):
{ "model": "llama3.2:3b", "prompt": "{{ $json.prompt }}", "stream": false, "options": { "temperature": 0.7, "num_predict": 256 } }
Температуру ставьте 0.7 для баланса креативности и адекватности. num_predict - это лимит токенов в ответе. Для агента, который должен быть кратким, хватит и 256.
3 Делаем из запросчика - интеллектуального агента
Одна нода, которая просто пересылает запросы в Ollama - это еще не агент. Это попугай. Настоящий агент должен уметь:
- Анализировать запрос пользователя
- Решать, какие инструменты (workflow) использовать
- Выполнять последовательность действий
- Запоминать контекст разговора
Добавьте перед HTTP Request ноду Code. В ней мы будем формировать промпт с системной инструкцией для модели.
// Нода Code - системный промпт
const userQuestion = $input.first().json.prompt;
const systemPrompt = `Ты - AI-агент, интегрированный в n8n.
У тебя есть доступ к следующим инструментам:
1. Поиск в интернете (через HTTP запросы)
2. Работа с Google Sheets
3. Отправка email
4. Парсинг веб-страниц
Твоя задача - понять, что хочет пользователь, и решить,
какой инструмент использовать. Если инструмент не требуется,
просто ответь на вопрос.
Вопрос пользователя: ${userQuestion}
Твой ответ должен быть в формате:
ДЕЙСТВИЕ: [название_инструмента или "ответ"]
ОБЪЯСНЕНИЕ: [краткое объяснение]
ДАННЫЕ: [если нужны данные для инструмента]`;
return [{ json: { prompt: systemPrompt } }];
После ноды HTTP Request добавьте еще одну ноду Code - для парсинга ответа модели и принятия решения о следующем шаге. Это уже похоже на архитектуру planner/executor.
4 Добавляем память и контекст (без этого агент - золотая рыбка)
Агент, который забывает прошлый разговор через секунду - бесполезен. Реализуем простую память через переменные n8n или внешнюю базу.
Самый простой способ - хранить историю в массиве и передавать ее с каждым запросом:
// В ноде Code, которая формирует промпт
const history = $input.first().json.history || [];
history.push({ role: "user", content: userQuestion });
// Ограничиваем историю последними 10 сообщениями
if (history.length > 20) {
history.splice(0, history.length - 20);
}
const context = history.map(msg =>
`${msg.role}: ${msg.content}`
).join("\n\n");
const systemPrompt = `Контекст предыдущего разговора:
${context}
${systemPrompt}`; // Используем systemPrompt из предыдущего шага
return [{ json: { prompt: systemPrompt, history } }];
После получения ответа от модели, не забудьте добавить его в историю. Так агент будет помнить, о чем вы говорили минуту назад. Для сложных проектов посмотрите статью про долгосрочную память NPC.
Где все ломается: 5 ошибок, которые совершают 90% людей
- Модель молчит или возвращает мусор. Проверьте, что в запросе к Ollama "stream": false. При stream: true API возвращает потоковые данные, которые n8n не умеет парсить без дополнительной обработки.
- Агент игнорирует системный промпт. Многие маленькие модели плохо следуют инструкциям. Попробуйте повторить ключевые указания в промпте несколько раз или используйте более новую модель, например Llama 3.2 вместо старой Llama 2.
- n8n падает при длинных ответах. В настройках HTTP Request ноды увеличьте Timeout. По умолчанию он 10 секунд, а большая модель может думать дольше.
- История разговора съедает всю память. Не храните всю историю с начала времен. Оставляйте только последние 10-20 сообщений. Или используйте суммаризацию: периодически отправляйте старую историю в модель с просьбой сделать краткое содержание.
- Агент зацикливается. Классическая проблема агентов: они решают, что нужно выполнить действие, выполняют его, получают результат, и снова решают, что нужно выполнить то же действие. Ставьте hard limit на количество итераций в workflow.
А что если мне нужно больше, чем просто чат?
Добавьте в агента инструменты. Каждый инструмент - это отдельный workflow в n8n. Например, workflow "Поиск в интернете" принимает запрос, делает запрос к DuckDuckGo или SearXNG (локальный мета-поисковик) и возвращает результат.
Тогда алгоритм агента становится таким:
- Пользователь спрашивает: "Какая погода в Москве?"
- Агент решает: ДЕЙСТВИЕ: поиск_в_интернете, ДАННЫЕ: погода Москва
- n8n запускает workflow поиска, получает результат
- Агент получает результат поиска и формирует итоговый ответ пользователю
Это уже уровень автономии 3, как в нашем гайде про облачных агентов, но полностью локально.
Кстати, если вы хотите не только технически настроить агента, но и научиться создавать с его помощью контент, посмотрите курс AI-креатор: создаём контент с помощью нейросетей. Там учат, как заставить AI работать на ваши творческие задачи, а не просто отвечать на вопросы.
Вопросы, которые вы зададите через 10 минут после запуска
| Вопрос | Ответ |
|---|---|
| Модель отвечает слишком медленно | Используйте квантованную версию модели (например, llama3.2:3b-q4_K_M) или перейдите на более легкую модель. Phi-3:mini работает в 3 раза быстрее Llama с минимальной потерей качества. |
| Как подключить голосовой интерфейс? | Добавьте в начало workflow ноду, которая принимает аудио, конвертирует его в текст (через локальную ASR, например Whisper.cpp), и в конец - ноду, которая синтезирует речь из текста. Полная инструкция в статье про голосового ассистента. |
| Можно ли использовать несколько моделей одновременно? | Да. Создайте разные экземпляры HTTP Request нод, каждая со своим model параметром. Или запустите несколько экземпляров Ollama на разных портах с разными моделями. |
| Как обучить модель на своих данных? | Ollama поддерживает создание модифицированных моделей через Modelfile. Создайте файл с инструкциями и примеры, затем запустите ollama create. Но для начала лучше использовать RAG (Retrieval-Augmented Generation) - просто подмешивайте нужные данные в промпт. |
Главное, что нужно понять: локальный AI-агент на n8n и Ollama - это не игрушка. Это рабочий инструмент, который может автоматизировать рутину, не прося ключей API и не отправляя ваши данные в чужие руки. Начните с простого workflow, добавьте пару инструментов, и через неделю вы не поймете, как жили без этого.
А если кажется, что все слишком сложно - вспомните, что даже junior-разработчики собирают таких агентов за день. У вас точно получится.