Автоматизация давно перестала быть инструментом только для разработчиков. Сегодня с помощью n8n каждый может создавать собственных AI-агентов: они отвечают на сообщения, парсят документы, синхронизируются с CRM, анализируют массивы данных и генерируют контент без вашего прямого участия.
n8n остается одной из самых гибких low-code платформ на рынке. Она поддерживает сотни нативных интеграций, позволяет подключать любые современные языковые модели (LLM) и собирать сложные сценарии из визуальных блоков. Именно поэтому её выбирают как новички, делающие первые шаги в AI, так и опытные архитекторы.
В этом руководстве мы разберем, как быстро развернуть n8n, подключить к ней нейросети, создать AI-агента, настроить его память и инструменты, и, наконец, научить его решать реальные бизнес-задачи.
Что такое ИИ-агент (AI Agent) в n8n и чем он отличается от обычного workflow?
ИИ-агент в n8n — это автономный программный модуль, который использует большую языковую модель (LLM) в качестве «мозга». Он анализирует цель, самостоятельно планирует шаги и выполняет их с помощью подключенных инструментов.
В отличие от классического линейного workflow (воркфлоу), где каждый шаг жестко задан разработчиком (шаг А -> шаг Б -> шаг В), агент принимает решения динамически. Он адаптируется к контексту и промежуточным результатам.
Ключевые функции агента:
- Анализ контекста: понимание скрытых смыслов в запросе.
- Использование инструментов (Tools): поиск в интернете, выполнение кода, запросы к внешним API.
- Память (Memory): сохранение истории диалога, чтобы не переспрашивать пользователя.
Официальная документация n8n позиционирует платформу как «универсальный клей» для создания таких гибридных решений. Главное преимущество агента — гибкость. Он решает неструктурированные задачи: вместо проектирования десятков условных ветвлений вы просто задаете конечную цель, а агент сам выстраивает путь к ней.
Что вам понадобится перед началом: подготовка среды, инфраструктура и LLM-инференс
Прежде чем переходить к визуальным схемам, нужно подготовить фундамент. И если раньше настройка среды отнимала часы, то сегодня этот процесс можно сократить до нескольких минут.
Быстрый деплой n8n на платформе Dockhost
Забудьте про рутину с арендой и настройкой VPS, прописыванием Nginx и выпуском SSL-сертификатов. Чтобы начать работу с AI-агентами, вам просто нужно развернуть n8n в облаке.
На платформе Dockhost это делается в несколько простых шагов:
- Первым шагом переходим в раздел «Приложения» в панели управления Dockhost, и в открывшемся каталоге в разделе Low‑code выбираем приложение n8n.
- Выбираем необходимую вам конфигурацию приложения. К установке доступно 8 конфигураций, отличающиеся выделенными для приложения ресурсами. После выбора конфигурации нажимаем кнопку «Установить».
- После завершения процесса установки приложения будет установлено: само приложение n8n, база данных PostgreSQL и для удобства создан динамический домен, по которому вы сможете подключиться к приложению.
- Ваше приложение создано и готово к использованию. Для перехода в web версию приложения нужно перейти в раздел «Приложения / Установленные» и нажать кнопку «Web» справа от выбранного приложения.
Вся инфраструктурная рутина остается на стороне Dockhost, а вы сразу переходите к созданию агентов.
LLM-инференс от Dockhost: один ключ для всех нейросетей
Типичная проблема при работе с AI — зоопарк API. Вам нужны OpenAI для GPT-5, Anthropic для Claude, локальные модели для дешевых задач. Это значит разные SDK, разные форматы авторизации и разные биллинги.
Решение от Dockhost — единый LLM-инференс. Вы получаете один API-ключ и один базовый URL (эндпоинт), который предоставляет доступ к парку моделей.
Как это интегрируется в n8n (технический нюанс):
Поскольку эндпоинт Dockhost полностью совместим с API OpenAI, вам не нужно искать специфичные ноды.
- В n8n создайте Credential типа OpenAI.
- В поле
Base URL(илиEndpoint) вставьте URL инференса Dockhost: https://inference.dockhost.io/v1 - В поле
API Keyвставьте ваш API ключ, полученный в разделе LLM инференс панели Dockhost.
Теперь во всех нодах Chat Model (OpenAI) вы можете просто менять название модели в выпадающем списке (например, с gpt-4o на claude-3-sonnet или Deepseek v4-pro), и n8n будет ходить через один и тот же credential. Это идеально подходит для A/B тестирования моделей и роутинга запросов.
Никогда не вставляйте API-ключи напрямую в поля нод. Всегда используйте встроенную систему Credentials в n8n.
Пошаговая инструкция: создаем и настраиваем первого ИИ-агента в n8n
Процесс создания агента разбивается на шесть ключевых этапов. Центральным элементом, связывающим всё воедино, является узел AI Agent.
Шаг 1: Добавляем и настраиваем ноду 'AI Agent'
Откройте палитру узлов в редакторе n8n, введите «AI Agent» в поиск и перетащите узел на холст. При двойном клике откроется интерфейс, где сосредоточены все настройки: «Goal» (Цель), «Model» (Модель), а также секции для подключения «Tools» (Инструменты) и «Memory» (Память).
Шаг 2: Определяем цель (Goal) агента
Goal — это системный промпт, инструкция на естественном языке. Качество цели напрямую определяет адекватность агента.
- Плохая цель: «Помогать пользователю».
- Хорошая цель: «Ты — ассистент по подбору рецептов. Получай запросы из Telegram, ищи рецепты через поисковый API, учитывай аллергии из истории чата и возвращай пошаговый план приготовления».
Чем четче заданы границы и роль, тем меньше модель будет «галлюцинировать».
Шаг 3: Выбираем и подключаем LLM (модель ИИ)
В поле «Model» выберите нужную модель. Здесь мы используем LLM-инференс от Dockhost: просто вставляем наш единый API-ключ и выбираем из списка нужную LLM (например, gpt 5.4 для сложной логики или deepseek v4-flash для быстрых и дешевых задач).
Обратите внимание на параметры:
- Temperature (0.0–2.0): контролирует креативность. Для аналитики ставьте 0.1–0.3, для генерации текстов — 0.7–0.9.
- Max Tokens: жесткий лимит на длину ответа.
Шаг 4: Добавляем инструменты (Tools)
Инструменты — это «руки» агента. Встроенные инструменты (Calculator, Code) полезны, но главная сила — во внешних сервисах.
Обязательно подключите инструмент для поиска в интернете (например, Tavily API или SerpApi). Это стандарт индустрии, который позволяет агенту выходить за рамки обучающей выборки модели и получать свежие данные. Для подключения других сервисов (CRM, базы данных) используйте ноду «Tool», оборачивая в нее стандартные HTTP-запросы.
Шаг 5: Настраиваем память (Memory)
Чтобы агент помнил контекст диалога, подключите ноду Window Buffer Memory.
Ключевой параметр — Context Window Length (количество последних сообщений, которые модель «видит»). Это предотвращает переполнение контекста и экономит токены. Для долгосрочной памяти (чтобы агент помнил вас через неделю) потребуется подключение векторных баз данных (например, Pinecone или Qdrant), но для старта хватит стандартного буфера.
Шаг 6: Запускаем, тестируем и анализируем
Нажмите «Execute Workflow» и отправьте тестовый запрос. Обязательно загляните во вкладку Debug. Там можно посмотреть логи «Reasoning» (рассуждения) — это самый важный инструмент отладки, где видно, как именно агент думал, какой инструмент выбрал и почему.
Пример практического AI Agent: Ассистент для анализа новостей

Цель: «Анализируй новости из категории "Финтех" за последние 24 часа. Найди 3 ключевых события, суммируй их и отправь структурированный отчет в Telegram».
Агент самостоятельно выстраивает цепочку: принять запрос → сформулировать ключевые слова → найти статьи → отфильтровать → summarize → отправить. Это наглядный пример динамического планирования.
Архитектура и блоки n8n:
Для реализации динамического планирования мы не строим жесткий линейный пайплайн. Вместо этого мы создаем «Мозг» (AI Agent), который вызывает набор Инструментов (Tools) в зависимости от контекста.
Важный архитектурный принцип. Поиск (Tavily) и фильтрацию (Code) мы объединяем в один суб-воркфлоу. Если отдать агенту Tavily как «голый» инструмент, модель будет переписывать килобайты сырого JSON в аргументы следующего вызова — это лишние токены и риск искажения данных. Поэтому наружу агенту торчит один инструмент
search_fintech_news(query), а данные между нодами Tavily → Code идут внутри суб-воркфлоу, минуя LLM.
1. Chat Trigger (Триггер)
- Роль: Точка входа. Принимает запрос от пользователя.
- Настройки: Chat UI n8n или подключенный чат-канал.
2. AI Agent Node (Мозг агента)
- Роль: Оркестратор. Анализирует запрос, формулирует поисковые запросы, делает summarize, вызывает отправку.
- Настройки:
- Agent Type: Tools Agent (рекомендуемый тип для tool calling; ReAct — текстовый фолбэк для слабых моделей);
- Model: GPT-4o / Claude 3.7 Sonnet — подключается отдельной нодой (OpenAI Chat Model / Anthropic Chat Model) к порту
ai_languageModel; - System Prompt: см. ниже.
Ты — профессиональный AI-аналитик новостей в сфере финтеха. Твоя цель — дайджест из 3 ключевых событий за последние 24 часа.
Доступные инструменты:
1. search_fintech_news(query) — ищет и фильтрует свежие финтех-новости, возвращает до 3 статей в формате Markdown. Принимает поисковый запрос.
2. telegram(digest_text) — отправляет готовый дайджест пользователю.
Порядок действий:
1. Сформулируй 2–3 точных поисковых запроса (банкинг, крипто-регулирование, платежи, финтех-стартапы) и вызови search_fintech_news для каждого из них по очереди.
2. Из всех полученных статей выбери 3 самые значимые, убери дубликаты.
3. Напиши по каждому событию краткое, но ёмкое резюме: суть, цифры, влияние на рынок.
4. Вызови telegram и передай в него готовый дайджест.
Формат сообщения:
Финтех-дайджест за 24 часа
1) [Название]
Суть: ...
Влияние: ...
Ссылка: ...
(и так далее для 3 новостей)
3. Tool: Call n8n Workflow Tool → суб-воркфлоу «search_fintech_news»
- Роль: Единый инструмент поиска. Агент передаёт в него сформулированный запрос (
query) — и получает очищенный Markdown. - Внутри суб-воркфлоу: Execute Workflow Trigger → HTTP Request (Tavily) → Code node (фильтрация мусора, проверка даты — строго последние 24 часа, форматирование Markdown).
- Настройки Tavily:
topic: "news",days: 1— свежесть ограничиваем ещё на стороне API.
4. Tool: Telegram
- Роль: Финальный инструмент. Агент передаёт в него готовый дайджест (
digest_text) через$fromAI().chat_idзахардкожен в ноде — модель его не генерирует. - Настройки: встроенная нода Telegram Tool (не HTTP Request),
parse_mode: Markdown.
Главный воркфлоу — экспортируемый JSON
Перед импортом замените:
YOUR_OPENAI_CRED_ID,YOUR_TELEGRAM_CRED_ID,SUBWORKFLOW_ID,chatId. JSON соответствует n8n версии 1.6x+; в других версиях возможны незначительные отличия параметров.
{
"name": "Финтех-дайджест: главный агент",
"nodes": [
{
"parameters": {},
"id": "fa-0001",
"name": "Chat Trigger",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"typeVersion": 1.2,
"position": [-420, 300]
},
{
"parameters": {
"agent": "toolsAgent",
"promptType": "define",
"text": "={{ $json.chatInput }}",
"options": {
"systemMessage": "<СИСТЕМНЫЙ ПРОМПТ — см. раздел выше>",
"maxIterations": 10
}
},
"id": "fa-0002",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.8,
"position": [-180, 300]
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-4o",
"mode": "list",
"cachedResultName": "gpt-4o"
},
"options": { "temperature": 0.3 }
},
"id": "fa-0003",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [-300, 540],
"credentials": {
"openAiApi": { "id": "YOUR_OPENAI_CRED_ID", "name": "OpenAI account" }
}
},
{
"parameters": {
"name": "search_fintech_news",
"description": "Ищет свежие (за последние 24 часа) новости финтеха, фильтрует мусор и возвращает до 3 статей в Markdown. Вызывай с готовым поисковым запросом.",
"workflowId": {
"__rl": true,
"value": "SUBWORKFLOW_ID",
"mode": "list",
"cachedResultName": "Инструмент: Поиск финтех-новостей"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"query": "={{ $fromAI('query', 'Поисковый запрос для поиска новостей', 'string') }}"
},
"matchingColumns": [],
"schema": [
{
"id": "query",
"displayName": "query",
"required": true,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
]
}
},
"id": "fa-0004",
"name": "Поиск финтех-новостей",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2.2,
"position": [-20, 540]
},
{
"parameters": {
"resource": "message",
"operation": "sendMessage",
"chatId": "123456789",
"text": "={{ $fromAI('digest_text', 'Финальный текст дайджеста в формате Markdown', 'string') }}",
"additionalFields": { "parse_mode": "Markdown" }
},
"id": "fa-0005",
"name": "Telegram",
"type": "n8n-nodes-base.telegramTool",
"typeVersion": 1,
"position": [240, 540],
"credentials": {
"telegramApi": { "id": "YOUR_TELEGRAM_CRED_ID", "name": "Telegram Bot" }
}
}
],
"connections": {
"Chat Trigger": {
"main": [[{ "node": "AI Agent", "type": "main", "index": 0 }]]
},
"OpenAI Chat Model": {
"ai_languageModel": [[{ "node": "AI Agent", "type": "ai_languageModel", "index": 0 }]]
},
"Поиск финтех-новостей": {
"ai_tool": [[{ "node": "AI Agent", "type": "ai_tool", "index": 0 }]]
},
"Telegram": {
"ai_tool": [[{ "node": "AI Agent", "type": "ai_tool", "index": 0 }]]
}
},
"settings": {},
"pinData": {}
}
Суб-воркфлоу «search_fintech_news» — экспортируемый JSON
Суб-воркфлоу, вызываемый через Call n8n Workflow Tool, обязан начинаться с Execute Workflow Trigger (не Webhook и не Chat Trigger) и должен быть активирован (Active), иначе агент не сможет его вызвать. В поле
jsCodeноды «Фильтрация и форматирование» вставьте код из следующего раздела.
{
"name": "Инструмент: Поиск финтех-новостей",
"nodes": [
{
"parameters": {
"inputSource": "workflowInputs",
"workflowInputs": {
"values": [
{ "name": "query", "type": "string" }
]
}
},
"id": "sw-0001",
"name": "Execute Workflow Trigger",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [0, 300]
},
{
"parameters": {
"method": "POST",
"url": "https://api.tavily.com/search",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"contentType": "json",
"specifyBody": "keypair",
"bodyParameters": {
"parameters": [
{ "name": "query", "value": "={{ $json.query }}" },
{ "name": "topic", "value": "news" },
{ "name": "days", "value": "=1" },
{ "name": "max_results", "value": "=10" },
{ "name": "search_depth", "value": "basic" }
]
},
"options": {}
},
"id": "sw-0002",
"name": "Tavily Search",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [260, 300],
"credentials": {
"httpHeaderAuth": { "id": "YOUR_TAVILY_CRED_ID", "name": "Tavily API (Bearer)" }
}
},
{
"parameters": {
"jsCode": "<ВСТАВЬТЕ КОД ИЗ РАЗДЕЛА «Code node» НИЖЕ>"
},
"id": "sw-0003",
"name": "Фильтрация и форматирование",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [540, 300]
}
],
"connections": {
"Execute Workflow Trigger": {
"main": [[{ "node": "Tavily Search", "type": "main", "index": 0 }]]
},
"Tavily Search": {
"main": [[{ "node": "Фильтрация и форматирование", "type": "main", "index": 0 }]]
}
},
"settings": {},
"pinData": {}
}
Code node (JavaScript) — фильтрация и форматирование
Режим: Run Once for All Items.
// Вход: ответ Tavily API
const tavilyResponse = $input.first().json;
const results = tavilyResponse.results || [];
const now = Date.now();
const DAY_MS = 24 * 60 * 60 * 1000;
const filteredNews = results
.filter(item => {
const pubDate = item.published_date ? new Date(item.published_date) : null;
const isRecent = pubDate && !isNaN(pubDate) && (now - pubDate.getTime()) <= DAY_MS;
const text = ((item.title || '') + ' ' + (item.content || '')).toLowerCase();
const isFintech = /fintech|crypto|bank|payment|defi|cbdc|blockchain/.test(text);
return isRecent && isFintech;
})
.slice(0, 3);
let markdownOutput = '';
if (filteredNews.length === 0) {
markdownOutput = 'За последние 24 часа значимых новостей не найдено.';
} else {
filteredNews.forEach((item, index) => {
markdownOutput += `${index + 1}. ${item.title}\n`;
markdownOutput += `${(item.content || '').substring(0, 300)}...\n`;
markdownOutput += `Ссылка: ${item.url}\n\n`;
});
}
return [{ json: { cleaned_news: markdownOutput, count: filteredNews.length } }];
Credentials
Советы по внедрению
- Tool Calling, а не линейный пайплайн. Важно:
search_fintech_newsиTelegram— не следующие шаги в цепочке, а инструменты, которые агент вызывает по мере необходимости (механизм Tool Calling). - Обработка ошибок. Создайте отдельный Error Workflow с нодой Error Trigger и привяжите его в настройках каждого воркфлоу (Settings → Error Workflow). Тогда при падении Tavily или блокировке бота вы получите уведомление, а не молча упавшую execution.
- parse_mode в Telegram. Используйте legacy
Markdown— он прощает незакрытые*и_в тексте, сгенерированном моделью.MarkdownV2требует экранирования символов.,-,(,),!и часто ломает отправку на длинных дайджестах. - Кэширование. Если агент запускается по расписанию (Schedule Trigger), сохраняйте хеши отправленных новостей (Redis / Supabase), чтобы не дублировать дайджесты.
Пример настройки Главного агента и управления несколькими агентами
В сложных корпоративных сценариях один AI-агент не может качественно выполнять все задачи. Вместо этого мы создаем иерархическую систему, где:
- Главный агент (Оркестратор) — принимает сложный запрос, анализирует его и разбивает на подзадачи;
- Дочерние агенты — специализированные эксперты, каждый из которых решает свою узкую задачу;
- Инструменты-маршрутизаторы — ноды Call n8n Workflow Tool, мосты между Оркестратором и дочерними агентами.
Главный агент не выполняет работу сам — он принимает сложный запрос, декомпозирует его на подзадачи, делегирует их «дочерним» агентам и собирает финальный результат.
Пример: Обработка запроса клиента
Входящий запрос
Подготовь квартальный отчет по продажам, напиши пост для соцсетей о результатах и рассчитай бонусы для менеджеров
Декомпозиция Оркестратором
Оркестратор анализирует запрос и разбивает его на 3 независимые подзадачи:
Процесс выполнения
Внутри AI агента инструменты выполняются последовательно: модель на каждой итерации эмитит один или несколько tool calls, которые n8n исполняет и возвращает результаты обратно в модель. Настоящий параллелизм в n8n достигается только разветвлением веток канвы вне агента (несколько нод Execute Workflow в параллельных ветках) — но тогда это уже статическая схема, а не динамическое планирование. Для большинства сценариев последовательных вызовов достаточно.
Настройки Главного агента (Оркестратора)
- Мощная LLM: через инференс Dockhost подключаем одну из мощных моделей (например, Claude 3.7 Sonnet или GPT-4o) для качественного планирования. Поскольку Dockhost отдаёт OpenAI-совместимый API — используем ноду OpenAI Chat Model с переопределённым Base URL в credential.
- Тип агента: Tools Agent (рекомендуемый для tool calling). Вариант
Plan and Executeтакже существует в AI Agent и уместен для очень длинных многошаговых задач, но требует совместимой модели и даёт менее предсказуемые вызовы инструментов. - Инструменты-маршрутизаторы: вместо прямого выполнения задач главный агент использует инструменты Call n8n Workflow Tool, которые триггерят запуск специализированных воркфлоу («Агент-бухгалтер», «Агент-копирайтер» и т.д.).
Системный промпт для AI Agent Node
Вставьте этот текст в поле System Prompt узла AI Agent:
Ты — Главный Оркестратор корпоративной AI-системы. Твоя роль — НЕ выполнять задачи самостоятельно, а:
1. АНАЛИЗИРОВАТЬ: Разбери запрос пользователя на составные части
2. ПЛАНИРОВАТЬ: Определи, какие дочерние агенты нужны для каждой подзадачи
3. ДЕЛЕГИРОВАТЬ: Вызови соответствующие инструменты-маршрутизаторы
4. СИНТЕЗИРОВАТЬ: Собери результаты от всех агентов в единый финальный ответ
Доступные дочерние агенты (вызывай через инструменты):
- delegate_to_analyst — данные, отчеты, статистика
- delegate_to_copywriter — тексты, посты, презентации
- delegate_to_accountant — финансовые расчеты, бонусы, налоги
- delegate_to_researcher — поиск информации, конкуренты, тренды
ВАЖНО:
- Инструменты выполняются последовательно — один вызов за шаг. Учитывай это при планировании.
- Если задача сложная, разбей её на 2–4 подзадачи.
- Если между подзадачами есть зависимости — вызывай инструменты строго по порядку
(например: сначала delegate_to_analyst, затем передай его результат в delegate_to_copywriter).
- Всегда объясняй пользователю, какие агенты были задействованы.
Формат ответа:
Задача выполнена с помощью:
- [Название агента 1] → [Что сделал]
- [Название агента 2] → [Что сделал]
Итоговый результат:
[Собранный финальный ответ]
Главный воркфлоу Оркестратора — экспортируемый JSON
Перед импортом замените
YOUR_ANTHROPIC_CRED_ID,ID_СУБВОРКФЛОУ_*на реальные ID. Все 4 суб-воркфлоу должны быть созданы и активны (Active).
{
"name": "Оркестратор: главный агент",
"nodes": [
{
"parameters": {},
"id": "or-0001",
"name": "Chat Trigger",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"typeVersion": 1.2,
"position": [-520, 320]
},
{
"parameters": {
"agent": "toolsAgent",
"promptType": "define",
"text": "={{ $json.chatInput }}",
"options": {
"systemMessage": "<СИСТЕМНЫЙ ПРОМПТ — см. раздел выше>",
"maxIterations": 10
}
},
"id": "or-0002",
"name": "AI Agent (Оркестратор)",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.8,
"position": [-280, 320]
},
{
"parameters": {
"model": {
"__rl": true,
"value": "claude-3-7-sonnet-20250219",
"mode": "list",
"cachedResultName": "Claude 3.7 Sonnet"
},
"options": { "temperature": 0.3 }
},
"id": "or-0003",
"name": "Anthropic Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"typeVersion": 1.3,
"position": [-400, 560],
"credentials": {
"anthropicApi": { "id": "YOUR_ANTHROPIC_CRED_ID", "name": "Dockhost / Anthropic" }
}
},
{
"parameters": {
"name": "delegate_to_analyst",
"description": "Делегирует задачу Агенту-аналитику: данные, отчеты, статистика, визуализация. Используй для анализа продаж, графиков, расчета метрик, подготовки отчетов.",
"workflowId": { "__rl": true, "value": "ID_СУБВОРКФЛОУ_АНАЛИТИКА", "mode": "list", "cachedResultName": "Суб-воркфлоу: Агент-аналитик" },
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"task_description": "={{ $fromAI('task_description', 'Детальное описание задачи для аналитика', 'string') }}",
"output_format": "={{ $fromAI('output_format', 'Формат вывода: markdown | json | csv', 'string', 'markdown') }}"
},
"matchingColumns": [],
"schema": [
{ "id": "task_description", "displayName": "task_description", "required": true, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string", "removed": false },
{ "id": "output_format", "displayName": "output_format", "required": false, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string", "removed": false }
]
}
},
"id": "or-0004",
"name": "Router: Аналитик",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2.2,
"position": [-160, 560]
},
{
"parameters": {
"name": "delegate_to_copywriter",
"description": "Делегирует задачу Агенту-копирайтеру: тексты, посты, презентации. Используй для написания постов, описаний, маркетинговых материалов.",
"workflowId": { "__rl": true, "value": "ID_СУБВОРКФЛОУ_КОПИРАЙТЕРА", "mode": "list", "cachedResultName": "Суб-воркфлоу: Агент-копирайтер" },
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"task_description": "={{ $fromAI('task_description', 'Детальное описание задачи для копирайтера', 'string') }}",
"tone": "={{ $fromAI('tone', 'Тон текста: formal | casual | professional | friendly', 'string', 'professional') }}",
"target_audience": "={{ $fromAI('target_audience', 'Целевая аудитория', 'string') }}"
},
"matchingColumns": [],
"schema": [
{ "id": "task_description", "displayName": "task_description", "required": true, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string", "removed": false },
{ "id": "tone", "displayName": "tone", "required": false, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string", "removed": false },
{ "id": "target_audience", "displayName": "target_audience", "required": false, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string", "removed": false }
]
}
},
"id": "or-0005",
"name": "Router: Копирайтер",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2.2,
"position": [80, 560]
},
{
"parameters": {
"name": "delegate_to_accountant",
"description": "Делегирует задачу Агенту-бухгалтеру: расчет бонусов, зарплат, налогов, бюджетов, финансовые отчеты.",
"workflowId": { "__rl": true, "value": "ID_СУБВОРКФЛОУ_БУХГАЛТЕРА", "mode": "list", "cachedResultName": "Суб-воркфлоу: Агент-бухгалтер" },
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"task_description": "={{ $fromAI('task_description', 'Детальное описание задачи для бухгалтера', 'string') }}",
"calculation_type": "={{ $fromAI('calculation_type', 'Тип расчета: bonus | salary | tax | budget', 'string') }}",
"data": "={{ $fromAI('data', 'Данные для расчета (JSON-массив объектов)', 'json') }}"
},
"matchingColumns": [],
"schema": [
{ "id": "task_description", "displayName": "task_description", "required": true, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string", "removed": false },
{ "id": "calculation_type", "displayName": "calculation_type", "required": true, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string", "removed": false },
{ "id": "data", "displayName": "data", "required": true, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string", "removed": false }
]
}
},
"id": "or-0006",
"name": "Router: Бухгалтер",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2.2,
"position": [320, 560]
},
{
"parameters": {
"name": "delegate_to_researcher",
"description": "Делегирует задачу Агенту-исследователю: поиск информации, анализ конкурентов, тренды рынка.",
"workflowId": { "__rl": true, "value": "ID_СУБВОРКФЛОУ_ИССЛЕДОВАТЕЛЯ", "mode": "list", "cachedResultName": "Суб-воркфлоу: Агент-исследователь" },
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"task_description": "={{ $fromAI('task_description', 'Детальное описание задачи для исследователя', 'string') }}"
},
"matchingColumns": [],
"schema": [
{ "id": "task_description", "displayName": "task_description", "required": true, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string", "removed": false }
]
}
},
"id": "or-0007",
"name": "Router: Исследователь",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2.2,
"position": [560, 560]
}
],
"connections": {
"Chat Trigger": {
"main": [[{ "node": "AI Agent (Оркестратор)", "type": "main", "index": 0 }]]
},
"Anthropic Chat Model": {
"ai_languageModel": [[{ "node": "AI Agent (Оркестратор)", "type": "ai_languageModel", "index": 0 }]]
},
"Router: Аналитик": {
"ai_tool": [[{ "node": "AI Agent (Оркестратор)", "type": "ai_tool", "index": 0 }]]
},
"Router: Копирайтер": {
"ai_tool": [[{ "node": "AI Agent (Оркестратор)", "type": "ai_tool", "index": 0 }]]
},
"Router: Бухгалтер": {
"ai_tool": [[{ "node": "AI Agent (Оркестратор)", "type": "ai_tool", "index": 0 }]]
},
"Router: Исследователь": {
"ai_tool": [[{ "node": "AI Agent (Оркестратор)", "type": "ai_tool", "index": 0 }]]
}
},
"settings": {},
"pinData": {}
}
Настройка инструментов-маршрутизаторов
Каждый маршрутизатор — нода Call n8n Workflow Tool (@n8n/n8n-nodes-langchain.toolWorkflow). Полные параметры всех четырёх — в JSON выше. Ключевые моменты при настройке в UI:
- Name — латиницей без пробелов (
delegate_to_analyst): это имя попадает в tool-схему модели. - Description — самое важное поле: по нему Оркестратор решает, когда вызывать инструмент. Пишите максимально конкретно, с примерами задач.
- Workflow — выбираем суб-воркфлоу из списка (он должен быть активен).
- Workflow Inputs — режим «Define Below»: каждое поле маппим через
$fromAI('ключ', 'описание', 'тип', 'значение_по_умолчанию')— так модель сама заполняет параметры при вызове. Имена полей должны совпадать с входами Execute Workflow Trigger в суб-воркфлоу.
Пример суб-воркфлоу «Агент-аналитик»
Структура:
Триггер суб-воркфлоу — только Execute Workflow Trigger. Webhook Trigger / Chat Trigger вызвать через Call n8n Workflow Tool нельзя. Входы описываются в режиме Input Schema → Fields (
task_description: string,output_format: string).
Системный промпт суб-агента:
Ты — эксперт по анализу данных и бизнес-аналитике. Твоя специализация:
1. Анализ данных из баз данных (SQL)
2. Построение графиков и визуализаций
3. Расчет бизнес-метрик (KPI, конверсии, retention)
4. Подготовка отчетов в формате Markdown
Когда получаешь задачу:
- Сначала определи, какие данные нужны
- Напиши SQL-запрос для получения данных
- Обработай данные через инструмент Code
- Построй визуализацию, если нужно
- Верни результат в формате Markdown с выводами и рекомендациями
Code node (JavaScript) — аналитика и график. Режим: Run Once for All Items.
// Берём строки из ноды SQL Query (обращение по имени ноды — работает в JS-режиме)
const rows = $('SQL Query').all().map(item => item.json);
if (rows.length === 0) {
return [{ json: { error: 'Нет данных за выбранный период' } }];
}
// --- Аналитика ---
const totalSales = rows.reduce((sum, r) => sum + Number(r.amount || 0), 0);
const avgCheck = totalSales / rows.length;
const byProduct = {};
for (const r of rows) {
byProduct[r.product] = (byProduct[r.product] || 0) + Number(r.amount || 0);
}
const top5 = Object.entries(byProduct)
.sort((a, b) => b[1] - a[1])
.slice(0, 5);
// --- График через QuickChart API ---
// URL можно напрямую передать в Telegram (sendPhoto принимает URL) —
// не нужны base64 и binary-обработка.
const chartConfig = {
type: 'bar',
data: {
labels: top5.map(([name]) => name),
datasets: [{ label: 'Продажи, руб.', data: top5.map(([, v]) => v) }]
},
options: { title: { display: true, text: 'Топ-5 продуктов по продажам' } }
};
const chartUrl = 'https://quickchart.io/chart?width=800&height=400&c='
+ encodeURIComponent(JSON.stringify(chartConfig));
return [{
json: {
total_sales: totalSales,
avg_check: Math.round(avgCheck),
top_products: Object.fromEntries(top5),
chart_url: chartUrl,
insights: [
`Общие продажи за период: ${totalSales.toLocaleString('ru-RU')} руб.`,
`Средний чек: ${Math.round(avgCheck).toLocaleString('ru-RU')} руб.`,
`Лидер продаж: ${top5[0][0]} (${top5[0][1].toLocaleString('ru-RU')} руб.)`
]
}
}];
Ключевые преимущества паттерна
Когда использовать паттерн "Оркестратор"
✅ Используйте, когда:
- Сложные многоэтапные задачи с разнородными подзадачами
- Корпоративные системы с множеством экспертов
- Задачи требуют разных инструментов (анализ + текст + расчеты)
- Нужна масштабируемость и переиспользование компонентов
❌ Не рекомендуется использовать, когда:
- Простые линейные задачи (используйте обычный AI Agent)
- Все подзадачи однотипные (нет смысла в специализации)
- Ограниченный бюджет на токены (Оркестратор добавляет overhead)
Отладка и мониторинг
Логирование вызовов агентов. Code node в начале каждого суб-воркфлоу:
// Входные данные суб-воркфлоу = то, что передал Оркестратор
const task = $input.first().json.task_description;
const agentName = 'Агент-аналитик';
const timestamp = new Date().toISOString();
console.log(`[${timestamp}] ${agentName} получил задачу: ${task}`);
return [{ json: { agent_name: agentName, task, timestamp, status: 'started' } }];
Обработка ошибок.Создайте отдельный Error Workflow с нодой Error Trigger и привяжите его в настройках каждого воркфлоу (Settings → Error Workflow) — автоматически он не подхватывается. Реальная структура входных данных Error Trigger:
// Error Workflow: первая нода — Error Trigger
const err = $input.first().json;
const nodeName = err.execution?.lastNodeExecuted ?? 'unknown';
const message = err.execution?.error?.message ?? 'no message';
const workflowName = err.workflow?.name ?? err.workflow?.id;
// Далее — отправка уведомления администратору (Telegram / email)
return [{
json: {
alert: `❌ Ошибка в workflow "${workflowName}", нода "${nodeName}": ${message}`,
timestamp: new Date().toISOString(),
execution_url: err.execution?.url
}
}];
Итоговый чеклист настройки
-
Создан главный AI Agent (Tools Agent) с промптом Оркестратора
-
Подключены 4 инструмента-маршрутизатора (Call n8n Workflow Tool) к нижним портам
ai_tool -
Созданы 4 суб-воркфлоу, каждый начинается с Execute Workflow Trigger и активирован
-
Имена входов суб-воркфлоу совпадают с ключами
$fromAI()в инструментах -
Каждый суб-воркфлоу имеет свой системный промпт
-
Настроено логирование вызовов агентов
-
Создан Error Workflow и привязан в Settings каждого воркфлоу
-
Протестирован пример с обработкой запроса клиента
-
Проверена обработка зависимых подзадач (последовательные вызовы с передачей результатов)
Итак, мы рассмотрели паттерн «Оркестратор», где главный AI-агент разбивает сложные запросы на подзадачи и делегирует их узкопрофильным суб-агентам через инструменты-маршрутизаторы Call n8n Workflow Tool. Теперь вы можете проектировать масштабируемые корпоративные AI-системы в n8n, настраивать модульную архитектуру и управлять работой нескольких специализированных экспертов с корректной обработкой зависимостей и ошибок.
Расширенные настройки и лучшие практики
Создание собственных инструментов (Custom Tools)
Если готового инструмента нет, создайте его. Напишите логику запроса к вашему внутреннему API в ноде «Code», а затем оберните её в ноду «Tool». Обязательно пропишите понятное описание и JSON-схему параметров — именно их читает LLM, чтобы понять, когда и как использовать ваш инструмент.
Управление контекстом и оптимизация затрат
Токены стоят денег. Чтобы не слить бюджет:
- Суммаризация: настройте логику, которая каждые N сообщений сжимает историю диалога в короткое резюме.
- Маршрутизация моделей: используйте дешевые и быстрые модели (через тот же API Dockhost) для простых классификаций, а дорогие — только для финальной генерации.
- Лимиты: всегда ставьте ограничение на количество шагов (Max Iterations), чтобы агент не ушел в бесконечный цикл рассуждений.
Стратегии отладки
- Изолированное тестирование: сначала проверьте каждый инструмент отдельно, без агента.
- Анализ Reasoning: если агент тупит, читайте его логи. Часто проблема не в модели, а в неочевидном описании инструмента.
- Упрощение Goal: разбейте сложную цель на цепочку более простых нод, если агент не справляется с многошаговыми задачами.
FAQ: Частые вопросы и их решение
Агент игнорирует инструменты и отвечает «из головы»
Скорее всего, описание инструмента в ноде «Tool» слишком абстрактное. Перепишите его так, чтобы модель точно понимала, в каком случае его вызывать. Добавьте в Goal прямую инструкцию: «Если тебя спрашивают о курсе валют, ОБЯЗАТЕЛЬНО используй инструмент Exchange API».
Почему агент отвечает слишком долго и стоит дорого?
Он делает лишние итерации. Уменьшите Temperature, сделайте Goal более жестким и конкретным, а также ограничьте количество шагов (Max tool calls) в настройках агента.
Агент «забывает» начало диалога
Вы уперлись в лимит контекстного окна модели. Увеличьте параметр Context Window Length в ноде Memory или переключитесь на модель с большим контекстом (например, с расширенным окном через LLM-инференс Dockhost).
Заключение
Создание первого AI-агента в n8n — это только начало. Следующий логичный шаг — научить его не только анализировать, но и действовать: создавать тикеты в Jira, отправлять письма, обновлять базы данных. Концепция Agents with Tools трансформирует нейросети из простых «болталок» в полноценных цифровых сотрудников.
Визуальные конструкторы вроде n8n ускоряют прототипирование и запуск AI-автоматизаций в десятки раз по сравнению с написанием кода с нуля. А использование облачных решений, таких как Dockhost, позволяет полностью исключить DevOps-рутину и сфокусироваться на том, что действительно важно — на создании интеллектуальной логики вашего бизнеса.




