- BrainTools - https://www.braintools.ru -
Как использовать ИИ в бизнесе?
Представьте гипотетический запрос клиента: «Где мой заказ и когда он будет доставлен?». Чтобы ответить на него, одной ИИ-модели мало. Сначала нужно найти клиента в базе, получить информацию о заказе, при необходимости обратиться к другому сервису, и только затем сгенерировать и отправить ответ. Приходится задействовать множество систем, которые как-то должны работать в унисон, и всей системе желательно быть гибкой и легко масштабируемой.
Обычный чат-бот тут не справится. Дело для серьезного дяди n8n.
Если вы искали инструмент с открытым исходным кодом, с помощью которого производится визуальная оркестрация рабочих процессов, и всё это происходит на основе графа — заканчивайте поиски.
Сегодня мы поймем как работать с одним из самых популярных ИИ-оркестраторов, в чем он хорош и как может помочь вам уже сейчас.
Для тех, кто не знаком с таким подходом к программированию: n8n [1] это визуальный конструктор, где вы прописываете логику [2] ИИ-агентов прямо в браузере, соединяя готовые блоки стрелочками. В n8n встроена поддержка сотен готовых сервисов [3], подключаемые за пару движений курсором.
В данном случае – это работа с узлами, которые представляют собой программный модуль, имеющий входы/выходы, соединения которых и образуют граф. Узлы можно классифицировать следующим образом: инициирующее событие, трансформация данных, вызов внешнего API, условное ветвление.
Архитектурно n8n построена как движок, базирующийся на событиях. Это значит, что запуск нашего проекта в n8n инициируется триггером(к примеру: webhook, cron‑расписание, polling внешнего сервиса, или же ручной активацией).
В ходе исполнения данные последовательно обрабатываются цепочкой узлов, каждый из которых выполняет определенное действие: HTTP‑запрос, парсинг JSON, маппинг полей, LLM‑инференс, запись в БД.
Главное отличие от проприетарных систем — возможность самостоятельного хостинга, в чем n8n схож с LangFlow [4]. Лицензия Sustainable Use License разрешает изменение кода при условии отсутствия коммерческой перепродажи в формате SaaS
Мы рассмотрим данную платформу с точки зрения [5] оркестрации LLM агентов, деплой, интеграцию с внешними сервисами и предполагаемые сценарии использования.
Простейший способ запуска n8n — использование Docker или Docker Compose. Контейнеризация обеспечивает упаковку приложения со всеми зависимостями в единый образ, что исключает ручную установку Node.js и СУБД, и прочих. Быстрый запуск осуществляется следующей командой:
docker run -it --name n8n -p 5678:5678 n8nio/n8n
После выполнения команды веб‑интерфейс становится доступен по адресу http://localhost:5678 [6]. Не забудьте настроить 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 [7]) с выбором "Create new credential".
В диалоге credentials, где поле API Key — вставка скопированного ключа, а поле Organization ID — опционально. После сохранения n8n шифрует и хранит credential в БД.
При добавлении узла OpenAI в проект автоматически используется выбранные креды. В настройках узла выбирается модель и параметры.
Важно заметить, что API-ключи не должны размещаться в открытом виде в function узлах или других видимых местах. Используется исключительно механизм Credentials.
n8n не раскрывает credentials в логах и ответах.
Если хотите подключить несколько моделей через один ключ — от Claude до GPT-5 — без переключения провайдеров, используйте BotHub [7] как OpenAI-совместимый шлюз. В поле Base URL вместо стандартного указываете https://openai.bothub.chat/v1 [8], а API Key — ваш ключ BotHub [7]. Остальное 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 [9]
При отсутствии данного шага n8n возвращает ошибки [10] "401 unauthorized" или "not found".
В результате, мы можем наконец перейти в n8n в раздел Credentials, выбрать настройку для Google Sheets и внести поля client_email JSON-файла и private key.
Аналогичным образом вы можете интегрировать прочие сервисы, совместимые по типу авторизации.
В ходе распространения оркестрации LLM агентов и появления LangChain, n8n включило интеграцию концепций LangChain непосредственно в платформу, т.к изначально их не было: специализированные узлы для LLM, цепочек, агентов, tools и векторных хранилищ. В общем все необходимые атрибуты современной оркестрации агентов.
Мы работаем непосредственно с агентным окружением — пайплайном, в котором LLM принимает решения и использует другие узлы как инструменты для выполнения многошаговых задач. К примеру, сравниваем векторизованный запрос пользователя с векторизованным фукнциональным описанием субагента (этот подход называется semantic router, он использует эмбеддинг модели, которые представляют текст в виде векторов).
Есть и иной подход, который называется Judge: в промпте описываем логику, по которой оркестратор перенаправляет запросы, и в конце просим оценить агента-судью результат работы оркестратора. При неудовлетворительном результате агент запустит систему заново, указав в промпте свои замечания.
Пример: Агент получает запрос клиента, определяет необходимость обращения к БД, выполняет запрос через DB-узел, затем формирует ответ. В качестве базы знаний мы будем использовать векторную базу данных Supabase [11] (open-source альтернатива Firebase на основе PostgreSQL) с расширением pgvector она используется как векторное хранилище.
Данная конфигурация позволяет реализовать RAG — это поиск релевантного контекста из данных перед генерацией ответа.
RAG в n8n можно разделить на следующие составные шаги: Документы разбиваются на чанки (куски фиксированной длины). Чанки векторизуются через узел Embedding и в результате векторы и текст сохраняются в Supabase через узел Supabase Vector Store.
Теперь обсудим конфигурацию агента с использованием векторного хранилища. Прежде всего нужно настроить узел AI Agent: выбираем LLM, API провайдера, системный промпт. В качестве провайдера можно выбрать OpenAI-совместимый вариант и подключить BotHub [7] — так в одной n8n-инсталляции получаете доступ к GPT, Claude, Gemini и десяткам других моделей через единый API-ключ. Полезно когда нужно быстро сравнить, какая модель лучше справляется с конкретным агентным сценарием, не переписывая credentials.
По ссылке для новых пользователей [7] бесплатные 300 тысяч CAPS, сразу доступные для использования.
После этих шагов, можно также настроить опциональную память [12], которая будет называться 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 обрабатывает этапы рассуждения.
Мы обсудили некоторые доступные узлы, но рассмотрим подробнее их существующие типы:
Проект в 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-узлов возможно определение повторных попыток на основе кода ответа (например, повторять [13] при 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 [7]: подключается как стандартный OpenAI-провайдер, одна строка в credentials. Остальную работу n8n возьмёт на себя.
Для задач, где требуется исключительно прототипирование LLM-пайплайнов с быстрым переключением моделей, специализированные инструменты (Langflow, Flowise) могут оказаться проще. Для продакшн-автоматизации с cron, условной маршрутизацией и агентными сценариями n8n покрывает значительно больше проблем, объединяя традиционную оркестрацию и агентную в единой платформе. Сочетание открытого исходного кода, бурного развития и популярности делает n8n очень хорошим выбором на долгосрочную перспективу.
Благодарю за прочтение!
Автор: Magnificus
Источник [14]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/35121
URLs in this post:
[1] n8n: https://n8n.io
[2] логику: http://www.braintools.ru/article/7640
[3] поддержка сотен готовых сервисов: https://n8n.io/integrations/
[4] LangFlow: https://www.langflow.org
[5] зрения: http://www.braintools.ru/article/6238
[6] http://localhost:5678: http://localhost:5678/
[7] BotHub: https://bothub.ru/?invitedBy=zx7xIePYIOcWHhTfgg6-O
[8] https://openai.bothub.chat/v1: https://openai.bothub.chat/v1
[9] name@project-id.iam.gserviceaccount.com: mailto:name@project-id.iam.gserviceaccount.com
[10] ошибки: http://www.braintools.ru/article/4192
[11] Supabase: https://supabase.com
[12] память: http://www.braintools.ru/article/4140
[13] повторять: http://www.braintools.ru/article/4012
[14] Источник: https://habr.com/ru/companies/bothub/articles/1079114/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1079114
Нажмите здесь для печати.