Как создать своего ИИ-агента в n8n: пошаговое руководство для начинающих и не только

Как создать своего ИИ-агента в n8n: пошаговое руководство для начинающих и не только

Автоматизация давно перестала быть инструментом только для разработчиков. Сегодня с помощью 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 это делается в несколько простых шагов:

  1. Первым шагом переходим в раздел «Приложения» в панели управления Dockhost, и в открывшемся каталоге в разделе Low‑code выбираем приложение n8n.
  2. Выбираем необходимую вам конфигурацию приложения. К установке доступно 8 конфигураций, отличающиеся выделенными для приложения ресурсами. После выбора конфигурации нажимаем кнопку «Установить».
  3. После завершения процесса установки приложения будет установлено: само приложение n8n, база данных PostgreSQL и для удобства создан динамический домен, по которому вы сможете подключиться к приложению.
  4. Ваше приложение создано и готово к использованию. Для перехода в web версию приложения нужно перейти в раздел «Приложения / Установленные» и нажать кнопку «Web» справа от выбранного приложения.

Вся инфраструктурная рутина остается на стороне Dockhost, а вы сразу переходите к созданию агентов.

LLM-инференс от Dockhost: один ключ для всех нейросетей

Типичная проблема при работе с AI — зоопарк API. Вам нужны OpenAI для GPT-5, Anthropic для Claude, локальные модели для дешевых задач. Это значит разные SDK, разные форматы авторизации и разные биллинги.

Решение от Dockhost — единый LLM-инференс. Вы получаете один API-ключ и один базовый URL (эндпоинт), который предоставляет доступ к парку моделей. 

Как это интегрируется в n8n (технический нюанс):
Поскольку эндпоинт Dockhost полностью совместим с API OpenAI, вам не нужно искать специфичные ноды.

  1. В n8n создайте Credential типа OpenAI. 
  2. В поле Base URL (или Endpoint) вставьте URL инференса Dockhost: https://inference.dockhost.io/v1
  3. В поле 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: Ассистент для анализа новостей

N8n 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

Сервис
Тип учётных данных в n8n
Что указать
Tavily
Header Auth
Name: Authorization, Value: Bearer tvly-...
Telegram
Telegram API
Access Token бота от @BotFather
OpenAI / Anthropic
OpenAI API / Anthropic API
API-ключ провайдера (или ключ Dockhost с переопределённым Base URL в credential OpenAI)

Советы по внедрению

  1. Tool Calling, а не линейный пайплайн. Важно: search_fintech_news и Telegram — не следующие шаги в цепочке, а инструменты, которые агент вызывает по мере необходимости (механизм Tool Calling).
  2. Обработка ошибок. Создайте отдельный Error Workflow с нодой Error Trigger и привяжите его в настройках каждого воркфлоу (Settings → Error Workflow). Тогда при падении Tavily или блокировке бота вы получите уведомление, а не молча упавшую execution.
  3. parse_mode в Telegram. Используйте legacy Markdown — он прощает незакрытые * и _ в тексте, сгенерированном моделью. MarkdownV2 требует экранирования символов ., -, (, ), ! и часто ломает отправку на длинных дайджестах.
  4. Кэширование. Если агент запускается по расписанию (Schedule Trigger), сохраняйте хеши отправленных новостей (Redis / Supabase), чтобы не дублировать дайджесты.

Пример настройки Главного агента и управления несколькими агентами

В сложных корпоративных сценариях один AI-агент не может качественно выполнять все задачи. Вместо этого мы создаем иерархическую систему, где:

  • Главный агент (Оркестратор) — принимает сложный запрос, анализирует его и разбивает на подзадачи;
  • Дочерние агенты — специализированные эксперты, каждый из которых решает свою узкую задачу;
  • Инструменты-маршрутизаторы — ноды Call n8n Workflow Tool, мосты между Оркестратором и дочерними агентами.

Главный агент не выполняет работу сам — он принимает сложный запрос, декомпозирует его на подзадачи, делегирует их «дочерним» агентам и собирает финальный результат.

Пример: Обработка запроса клиента

Главный Агент N8n Схема

Входящий запрос

Подготовь квартальный отчет по продажам, напиши пост для соцсетей о результатах и рассчитай бонусы для менеджеров

Декомпозиция Оркестратором

Оркестратор анализирует запрос и разбивает его на 3 независимые подзадачи:

№
Подзадача
Делегируется
Инструмент
1
Анализ данных продаж за квартал
Агент-аналитик
delegate_to_analyst
2
Написание поста для соцсетей
Агент-копирайтер
delegate_to_copywriter
3
Расчет бонусов для менеджеров
Агент-бухгалтер
delegate_to_accountant

Процесс выполнения

2. Анализирует и определяет 3 подзадачи
3. Параллельно вызывает 3 инструмента-маршрутизатора
4. Каждый суб-воркфлоу выполняет свою задачу
5. Оркестратор собирает результаты
6. Формирует единый финальный ответ
Внутри 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:

  1. Name — латиницей без пробелов (delegate_to_analyst): это имя попадает в tool-схему модели.
  2. Description — самое важное поле: по нему Оркестратор решает, когда вызывать инструмент. Пишите максимально конкретно, с примерами задач.
  3. Workflow — выбираем суб-воркфлоу из списка (он должен быть активен).
  4. Workflow Inputs — режим «Define Below»: каждое поле маппим через $fromAI('ключ', 'описание', 'тип', 'значение_по_умолчанию') — так модель сама заполняет параметры при вызове. Имена полей должны совпадать с входами Execute Workflow Trigger в суб-воркфлоу.

Пример суб-воркфлоу «Агент-аналитик»

Структура:

Execute Workflow Trigger (входы: task_description, output_format)
→ AI Agent (Tools Agent, специализированный промпт)
→ Tool: SQL Query (Postgres)
→ Tool: Code (JavaScript: аналитика + график)
→ Ответ последней ноды возвращается Оркестратору

Триггер суб-воркфлоу — только 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')} руб.)`
    ]
  }
}];

Ключевые преимущества паттерна

Преимущество
Описание
Масштабируемость
Добавляйте новых дочерних агентов без изменения Оркестратора
Специализация
Каждый агент заточен под свою задачу (лучшие промпты, инструменты)
Переиспользование
Суб-воркфлоу можно вызывать из разных Оркестраторов
Отладка
Легко найти, какой агент ошибся, и исправить только его
Экономия токенов
Оркестратор использует дорогую модель только для планирования; суб-агенты могут работать на более дешёвых моделях
Прозрачность выполнения
Каждый вызов инструмента виден в логах execution отдельным шагом. Учтите: внутри агента инструменты выполняются последовательно; реальный параллелизм — только разветвлением веток канвы вне агента

Когда использовать паттерн "Оркестратор"

✅ Используйте, когда:

  • Сложные многоэтапные задачи с разнородными подзадачами
  • Корпоративные системы с множеством экспертов
  • Задачи требуют разных инструментов (анализ + текст + расчеты)
  • Нужна масштабируемость и переиспользование компонентов

❌ Не рекомендуется использовать, когда:

  • Простые линейные задачи (используйте обычный 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, чтобы понять, когда и как использовать ваш инструмент.

Управление контекстом и оптимизация затрат

Токены стоят денег. Чтобы не слить бюджет:

  1. Суммаризация: настройте логику, которая каждые N сообщений сжимает историю диалога в короткое резюме.
  2. Маршрутизация моделей: используйте дешевые и быстрые модели (через тот же API Dockhost) для простых классификаций, а дорогие — только для финальной генерации.
  3. Лимиты: всегда ставьте ограничение на количество шагов (Max Iterations), чтобы агент не ушел в бесконечный цикл рассуждений.

Стратегии отладки

  1. Изолированное тестирование: сначала проверьте каждый инструмент отдельно, без агента.
  2. Анализ Reasoning: если агент тупит, читайте его логи. Часто проблема не в модели, а в неочевидном описании инструмента.
  3. Упрощение 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-рутину и сфокусироваться на том, что действительно важно — на создании интеллектуальной логики вашего бизнеса.

Запусти проект за 5 минут без настройки сервера

Деплой в несколько кликов · LLM через единый API-ключ · Оплата по факту

Попробовать бесплатно — бонус новым пользователям

Читайте также

Мы используем файлы cookies

Продолжив работу с сайтом, вы соглашаетесь с   политикой использования файлов Cookies