Как использовать ИИ в бизнесе?

Представьте гипотетический запрос клиента: «Где мой заказ и когда он будет доставлен?». Чтобы ответить на него, одной ИИ-модели мало. Сначала нужно найти клиента в базе, получить информацию о заказе, при необходимости обратиться к другому сервису, и только затем сгенерировать и отправить ответ. Приходится задействовать множество систем, которые как-то должны работать в унисон, и всей системе желательно быть гибкой и легко масштабируемой.

Обычный чат-бот тут не справится. Дело для серьезного дяди n8n.

Если вы искали инструмент с открытым исходным кодом, с помощью которого производится визуальная оркестрация рабочих процессов, и всё это происходит на основе графа — заканчивайте поиски.

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


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

В данном случае - это работа с узлами, которые представляют собой программный модуль, имеющий входы/выходы, соединения которых и образуют граф. Узлы можно классифицировать следующим образом: инициирующее событие, трансформация данных, вызов внешнего API, условное ветвление. 

Логотип n8n
Логотип n8n

Архитектурно n8n построена как движок, базирующийся на событиях. Это значит, что запуск нашего проекта в n8n инициируется триггером(к примеру: webhookcron‑расписание, polling внешнего сервиса, или же ручной активацией).

В ходе исполнения данные последовательно обрабатываются цепочкой узлов, каждый из которых выполняет определенное действие: HTTP‑запрос, парсинг JSON, маппинг полей, LLM‑инференс, запись в БД.

Главное отличие от проприетарных систем — возможность самостоятельного хостинга, в чем n8n схож с LangFlow. Лицензия Sustainable Use License разрешает изменение кода при условии отсутствия коммерческой перепродажи в формате SaaS 

Мы рассмотрим данную платформу с точки зрения оркестрации LLM агентов, деплой, интеграцию с внешними сервисами и предполагаемые сценарии использования. 

Развёртывание через Docker

Простейший способ запуска n8n — использование Docker или Docker Compose. Контейнеризация обеспечивает упаковку приложения со всеми зависимостями в единый образ, что исключает ручную установку Node.js и СУБД, и прочих. Быстрый запуск осуществляется следующей командой:

         
    docker run -it --name n8n -p 5678:5678 n8nio/n8n    

После выполнения команды веб‑интерфейс становится доступен по адресу http://localhost:5678. Не забудьте настроить volume‑маппинг в docker-compose файле, чтобы не потерять данные при перезагрузке контейнера. Осуществить это можно с помощью следующего docker-compose.yml:

version: '3'    
    services:    
      n8n:    
        image: n8nio/n8n    
        ports:    
          - "5678:5678"    
        volumes:    
          - ./n8n-data:/home/node/.n8n    
        environment:    
          - GENERIC_TIMEZONE=UTC    
          - TZ=UTC    

Данная конфигурация выполняет следующие функции: volume-маппинг локальной директории ./n8n-data в каталог /home/node/.n8n внутри контейнера, где хранятся БД и конфигурация. Также, при такой настройке проект и креды сохраняются на диске хоста и не теряются при удалении или обновлении контейнера. В результате - переменные окружения задают временную зону.

Теперь нам хватит следующей команды для запуска:

docker-compose up -d   

Интеграция ИИ-моделей в проект выполняется очень просто через встроенные узлы OpenAI, или любых других провайдеров.

Добавление credentials в n8n

Перед началом работы с основными узлами и доступных функционалом, предлагаю узнать, как работать с внешними сервисами, в нашем случае  Google таблицы, и добавлять креды к LLM моделям.

Данный аспект может вызывать много вопросов и зачастую плохо/не очевидным образом задокументирован, с чем я на своей практике довольно часто сталкивался.

В редакторе n8n переходим в раздел Credentials , в верхнем меню, или в добавление узла OpenAI (или любого другого API-провайдера, для максимальной выгоды можно использовать BotHub) с выбором "Create new credential".

В диалоге credentials, где поле API Key — вставка скопированного ключа, а поле Organization ID — опционально. После сохранения n8n шифрует и хранит credential в БД.

При добавлении узла OpenAI в проект автоматически используется выбранные креды. В настройках узла выбирается модель и параметры.
Важно заметить, что API-ключи не должны размещаться в открытом виде в function узлах или других видимых местах. Используется исключительно механизм Credentials.

n8n не раскрывает credentials в логах и ответах.

Если хотите подключить несколько моделей через один ключ — от Claude до GPT-5 — без переключения провайдеров, используйте BotHub как OpenAI-совместимый шлюз. В поле Base URL вместо стандартного указываете https://openai.bothub.chat/v1, а API Key — ваш ключ BotHub. Остальное n8n делает сам. Оплачивать можно российской картой по цене ниже официального API.

Интеграция сторонних сервисов

Теперь же рассмотрим интеграцию с другими сервисами на примере Google Таблиц: Для доступа к Google таблицам без интерактивной OAuth-авторизации используется Google Service Account — "роботизированный аккаунт" в Google Cloud, аутентифицируемый посредством JSON-ключа. 

Сначала мы создаем проект, к примеру “n8n Automation”. После этого, мы должны включить Google Sheets API и Google Drive API. После того, как мы проделали эти манипуляции, мы должны выполнить ряд переходов:

  • Сначала в “APIs & Services”, потом в “Credentials”, там мы нажимаем на “Create Credentials”.

  • Уже отсюда переходим в нужный нам Service Account.

  • Присваиваем любое имя аккаунту и в разделе Keys создаем новый JSON-ключ. 

После получения JSON-ключа, уже в Google Sheets мы предоставляем доступ к личным файлам диска Drive, нажав  “поделиться” и добавив email сервис аккаунта в качестве редактора. Формат email следующий будет: name@project-id.iam.gserviceaccount.com

При отсутствии данного шага n8n возвращает ошибки "401 unauthorized" или "not found".

В результате, мы можем наконец перейти в n8n в раздел Credentials, выбрать настройку для Google Sheets и внести поля client_email JSON-файла и private key.

Аналогичным образом вы можете интегрировать прочие сервисы, совместимые по типу авторизации.

Построение агентных систем с LangChain и векторными БД

В ходе распространения оркестрации LLM агентов и появления LangChain, n8n включило интеграцию концепций LangChain непосредственно в платформу, т.к изначально их не было: специализированные узлы для LLM, цепочек, агентов, tools и векторных хранилищ. В общем все необходимые атрибуты современной оркестрации агентов.

Мы работаем непосредственно с агентным окружением — пайплайном, в котором LLM принимает решения и использует другие узлы как инструменты для выполнения многошаговых задач. К примеру, сравниваем векторизованный запрос пользователя с векторизованным фукнциональным описанием субагента (этот подход называется semantic router, он использует эмбеддинг модели, которые представляют текст в виде векторов). 

Есть и иной подход, который называется Judge: в промпте описываем логику, по которой оркестратор перенаправляет запросы, и в конце просим оценить агента-судью результат работы оркестратора. При неудовлетворительном результате агент запустит систему заново, указав в промпте свои замечания. 

Пример: Агент получает запрос клиента, определяет необходимость обращения к БД, выполняет запрос через DB-узел, затем формирует ответ. В качестве базы знаний мы будем использовать векторную базу данных Supabase (open-source альтернатива Firebase на основе PostgreSQL) с расширением pgvector она используется как векторное хранилище. 

Данная конфигурация позволяет реализовать RAG — это поиск релевантного контекста из данных перед генерацией ответа. 

RAG в n8n можно разделить на следующие составные шаги: Документы разбиваются на чанки (куски фиксированной длины). Чанки векторизуются через узел Embedding и в результате векторы и текст сохраняются в Supabase через узел Supabase Vector Store.

Теперь обсудим конфигурацию агента с использованием векторного хранилища. Прежде всего нужно настроить узел AI Agent: выбираем LLM, API провайдера, системный промпт. В качестве провайдера можно выбрать OpenAI-совместимый вариант и подключить BotHub — так в одной n8n-инсталляции получаете доступ к GPT, Claude, Gemini и десяткам других моделей через единый API-ключ. Полезно когда нужно быстро сравнить, какая модель лучше справляется с конкретным агентным сценарием, не переписывая credentials.

По ссылке для новых пользователей бесплатные 300 тысяч CAPS, сразу доступные для использования.

После этих шагов, можно также настроить опциональную память, которая будет называться memory в самом приложении - она нужна для сохранения контекста диалога с агентом. После этой настройки, мы можем подключить непосредственно “Vector Store Query” в качестве инструмента для нашего агента. 

После этого останется указать креды к векторному хранилищу, и использовать ранее настроенные эмбеддер и деление документа на чанки. Далее агент сам по контексту определит, когда нужно будет использовать подключенный инструмент. Точно также, при необходмости, в качестве инструментов можно подключить HTTP Request, Database Query и др.

Все вызовы tools и мыслительный процесс агента логируются во вкладке Logs в n8n.

Пример работы в сценарии ответа на запрос о заказах клиента

Декомпозируем описанный сценарий поэтапно:

Триггер в данной задаче: ручной или входящее сообщение. Основа у нас агент, к которому подключены два инструмента: Database Read (для получения заказов из БД) и опционально Email Send.

Системный промпт у нас будет такой: "Ты — ассистент компании. У тебя есть доступ к БД заказов (через DB-узел). При запросе о заказе сначала используй DB tool для получения информации, затем составь ответ", а пользовательский запрос: "Заказывал ли клиент Alice что-либо на этой неделе?".

По итогу агент выполняет запрос к БД через DB tool и формирует ответ: "Да, Alice заказала синюю футболку 5 января. Проект письма с уведомлением о доставке: …", который может быть отправлен через email узел или возвращен в качестве JSON, который получит некоторый API.

Вся логика реализуется без написания кастомного кода — интеграция LangChain обрабатывает этапы рассуждения.

Структура workflow и типы узлов

Мы обсудили некоторые доступные узлы, но рассмотрим подробнее их существующие типы:

Пример workflow
Пример workflow


Проект в n8n сериализуется как JSON-объект, содержащий массив nodes и массив connections. Эта особенность также позволяет работать с проектом как с JSON файлом и загружать его в иные LLM в частности. Каждый узел определяется параметрами:

type — идентификатор операции (например, n8n-nodes-base.httpRequest, n8n-nodes-base.code)

parameters — конфигурация: URL, метод, body, expression-шаблоны

position — координаты на canvas (чисто визуальный атрибут)

credentials — ссылка на сохранённый объект аутентификации

Типы узлов условно делятся на несколько категорий:

Категория

Примеры

Назначение

Триггеры

Webhook, Cron, Manual, Event-based

Инициация исполнения

Интеграции

HTTP Request, Gmail, Slack, PostgreSQL

Взаимодействие с внешними сервисами

Трансформация

Set, Merge, Split In Batches, Code

Манипуляция payload

Логика

IF, Switch, Wait, Loop

Ветвление и управление потоком

AI / LLM

OpenAI, LangChain, Vector Store

Инференс, RAG, агентные цепочки

В параметрах узлов допускается использование выражений на основе JavaScript. Встроенные функции включают операции над строками, числами, массивами и объектами:$json.field$node["NodeName"].json$item$env.VARIABLE. Выражения вычисляются в реальном времени перед выполнением узла.

Реализована поддержка тернарных операторов, регулярных выражений и преобразований дат. Выражения могут ссылаться на данные из предыдущих узлов, включая отдельные элементы массивов.

Узлы типа Split In Batches и Loop Over Items позволяют выполнять итеративную обработку набора записей. При использовании Loop внутри тела цикла доступны переменные $index, $loopCount, $first, $last. Это обеспечивает реализацию пагинации, обработки больших массивов данных и повторных вызовов API с параметрами.

Управление ошибками и повторные попытки

В n8n встроены механизмы обработки сбоев на уровне отдельных узлов и всего проекта. Чаще всего мы будем использовать узел Error Trigger, который выполняет перехват ошибок, возникших в любом другом узле. При сбое выполнение основного потока прерывается, и управление передаётся ветке, начинающейся с Error Trigger.

В данной ветке доступны объект ошибки с полями message, stack, nodeName, timestamp. Это позволяет реализовать логику уведомлений, записи в лог, повторного запуска или эскалации.

Кроме того, до логики обработки ошибок, для каждого узла, кроме триггеров, настраивается количество повторных попыток и интервал между ними. Параметры задаются в расширенных настройках узла: maxTries, retryDelay. По умолчанию повторные попытки выполняются при сетевых ошибках или таймаутах. Для HTTP-узлов возможно определение повторных попыток на основе кода ответа (например, повторять при 500 или 429). 

Глобальный таймаут для всего проекта устанавливается через переменную окружения EXECUTIONS_TIMEOUT или в настройках инстанса. Для отдельных узлов возможно задание таймаута в миллисекундах. При превышении лимита исполнение прерывается с ошибкой, которая обрабатывается через Error Trigger. Этот параметр зачастую подбирается чисто эмпирически.

Мониторинг и логирование

Говоря об обработке ошибок, закономерно следует вопрос мониторинга, логирования и последующего дебага проекта.

Каждый запуск проекта фиксируется в БД с полным перечнем выполненных узлов, входными и выходными данными, временем выполнения и статусом. Логи доступны через веб-интерфейс во вкладке "Executions" для каждого проекта. Для долгосрочного хранения предусмотрен экспорт в JSON или интеграция с внешними системами через узлы. 

Для мониторинга n8n генерирует внутренние метрики (количество запусков, длительность, ошибки) в формате Prometheus при включении соответствующей переменной окружения (N8N_METRICS=true, N8N_METRICS_INCLUDE_DEFAULT_METRICS=true).

Метрики доступны на эндпоинте /metrics. Это позволяет подключать Графану для дашбордов и настройки алертов по пороговым значениям.

Если хочется более гибкой настройки логирования, то через переменные окружения настраивается вывод логов в stdout/stderr или в файл с указанием уровня детализации логирования. Поддерживается отправка логов в сервисы вроде Logstash или Datadog через узлы или с помощью драйверов Docker.

Безопасность и управление доступом

Немаловажно при локальном деплое и последующим совместным использованием n8n подумать о безопасности развернутой системы.

Говоря об аутентификации: Для локально развернутых систем активируется простой вход через переменные N8N_BASIC_AUTH_ACTIVE, N8N_BASIC_AUTH_USER, N8N_BASIC_AUTH_PASSWORD. Более продвинутый вариант — интеграция с OAuth 2.0, через Google или GitHub, с использованием сторонних модулей или reverse proxy с аутентификацией.

Также, все сохранённые креды, примеры которых были рассмотрены ранее, шифруются симметричным ключом, который генерируется при первом запуске и хранится в файле .n8n/config или задаётся через переменную N8N_ENCRYPTION_KEY. В случае утечки БД без ключа расшифровка невозможна.

Для многопользовательского использования, в коммерческой версии приложения доступна система ролей: администратор, редактор, пользователь (только выполнение). В open-source версии ролевая модель отсутствует, но ограничение доступа реализуется на уровне reverse proxy, к примеру - разделение по поддомена.

Также, говоря о многопользовательском использованни, важно отметить , что каждая execution запускается в отдельном процессе Node.js, что ограничивает влияние одного проекта на другие. Code-узел работает в sandbox с ограниченными правами: по умолчанию запрещён доступ к файловой системе, сетевым сокетам и дочерним процессам. Для разрешения отдельных модулей используются флаги NODE_FUNCTION_ALLOW_BUILTIN и NODE_FUNCTION_ALLOW_EXTERNAL.

Итог

n8n занимает нишу между визуальными автоматизаторами и полноценными оркестраторами уровня Airflow/Temporal. Визуальная среда снижает порог входа для построения пайплайнов, используя подходы интуитивно понятного и для многих знакомого визуального программирования, при этом Code-узлы и HTTP-запросы сохраняют гибкость для нестандартных сценариев. AI-модуль (Agent, Tools, Vector Store) позволяет собирать RAG - и агентные цепочки без внешнего фреймворка. Всё, что требуется — подключить ИИ-модели по API. Если нужен доступ к актуальным флагманским моделям с оплатой картой РФ, попробуйте BotHub: подключается как стандартный OpenAI-провайдер, одна строка в credentials. Остальную работу n8n возьмёт на себя.

Для задач, где требуется исключительно прототипирование LLM-пайплайнов с быстрым переключением моделей, специализированные инструменты (Langflow, Flowise) могут оказаться проще. Для продакшн-автоматизации с cron, условной маршрутизацией и агентными сценариями n8n покрывает значительно больше проблем, объединяя традиционную оркестрацию и агентную в единой платформе. Сочетание открытого исходного кода, бурного развития и популярности делает n8n очень хорошим выбором на долгосрочную перспективу. 

Благодарю за прочтение!

Комментарии (1)


  1. Sanja4
    07.09.2026 09:45

    Используем в проде - просто гениальная штука!