ИИ-агент в n8n собирается из четырёх частей: триггер, который принимает сообщение, узел (нода) AI Agent, языковая модель и память. Ни одна из них не требует кода. В этой инструкции мы соберём агента, который отвечает в Telegram, помнит контекст разговора и умеет искать в интернете. Восемь шагов, около 40 минут, в конце готовый workflow для импорта. Проверено на n8n 2.x в сентябре 2026.

Что получится в итоге: Telegram-бот, которому можно написать «Меня зовут Антон», через два сообщения спросить «Как меня зовут?» и получить правильный ответ. А на вопрос «Какое сегодня число?» он сходит в поиск и ответит по факту, а не по памяти модели.

Workflow ИИ-агента в n8n: Telegram-триггер, узел AI Agent с моделью, памятью и инструментами, отправка ответа в Telegram

Инструкция подойдёт, если вы никогда не открывали n8n. Понадобятся четыре вещи: аккаунт n8n, Telegram-бот, ключ к языковой модели и ключ поискового сервиса. Про каждую расскажем по ходу.

Оглавление:

Что такое ИИ-агент и чем он отличается от чат-бота

Обычный чат-бот работает по жёсткому сценарию: пришло сообщение, сработало условие, ушёл заранее написанный ответ. Обычный workflow в n8n устроен так же, только шаги могут быть сложнее: прочитать таблицу, отправить письмо, записать в CRM.

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

  • Модель (Chat Model). Мозг агента. Именно она понимает вопрос и формулирует ответ.
  • Память (Memory). История диалога. Без неё модель не помнит даже предыдущее сообщение.
  • Инструменты (Tools). Внешние функции, которые агент может вызвать: поиск, HTTP-запрос, таблица, другой workflow.
  • Парсер вывода (Output Parser). Приводит ответ к нужному формату, например к JSON. Для чат-бота необязателен.

В нашей сборке это выглядит так: Telegram Trigger принимает сообщение, AI Agent передаёт его модели, память хранит историю диалога, инструмент поиска достаёт свежие данные, а готовый ответ уходит обратно в Telegram. Парсер вывода понадобится в других сценариях, когда результат нужно передавать дальше в строго заданном формате.

Схема ИИ-агента в n8n: узел AI Agent, к которому подключены модель, инструменты и парсер вывода

Работает агент циклом. Получил сообщение, отдал модели вместе с системным промптом и историей. Модель решила: ответить или позвать инструмент. Если позвала, результат инструмента возвращается в модель, и она думает ещё раз. Так до тех пор, пока не получится финальный ответ или не кончится лимит итераций. Промежуточные шаги, вызовы инструментов и их результаты видно в логах n8n, и это главный способ понять, почему агент повёл себя не так, как вы ждали.

Что понадобится

Аккаунт n8n. Есть три пути. Облачная версия n8n даёт 14 дней бесплатно и без карты, для первого агента этого хватит. Дальше подписка оплачивается картой, из России нужна иностранная, поэтому для постоянной работы обычно выбирают второй путь. Второй путь: поставить n8n на свой сервер. Сама программа бесплатна, платите только за сервер, и все данные workflow остаются у вас; у российских хостингов есть готовые образы, разворачивается за 10 минут. Третий: готовый хостинг n8n у российского провайдера. Установка на свой сервер в этой статье не разбирается, ей будет посвящён отдельный материал.

Telegram-бот. Создаётся за минуту через BotFather. Шаг 1 ниже.

Ключ к языковой модели. Самая частая точка, где новички застревают, потому что OpenAI напрямую нужна иностранная карта. В шаге 3 разберём, как получить ключ из России.

Ключ к поиску. Для инструмента поиска мы используем SerpAPI. Бесплатный тариф даёт 250 запросов в месяц и не больше 50 в час, для тестов этого достаточно. Платные тарифы оплачиваются иностранной картой.

Шаг 1. Создаём Telegram-бота и сохраняем токен в n8n

Откройте в Telegram бота BotFather и отправьте команду /newbot. Он спросит имя и username бота, а в ответ пришлёт токен: длинную строку вида 1234567890:AAH.... Это и есть ключ доступа к вашему боту.

В n8n такие ключи хранятся в разделе Credentials. Откройте его, нажмите Create credential, выберите Telegram API и вставьте токен. Правило простое: ключи живут только в Credentials, никогда в самих узлах. Тогда workflow можно безопасно экспортировать и показывать.

Параметры узла Telegram: credentials, ресурс Message, операция Send Message и Chat ID

Шаг 2. Собираем эхо-бота: триггер и ответ

Прежде чем добавлять интеллект, соберём бота, который просто повторяет сообщение. Так вы проверите связку с Telegram, и дальше будет понятно, где именно что-то сломалось.

Создайте новый workflow. Добавьте первый узел: Telegram Trigger, событие On Message. Выберите созданный credential. Нажмите Execute Workflow: триггер перейдёт в статус Waiting for Trigger Event и будет ждать сообщение.

Напишите боту в Telegram «Привет, робот». Вернитесь в n8n: в узле появился входящий элемент данных. Разверните его и посмотрите структуру. Нам нужны два поля: текст сообщения message.text и идентификатор чата message.chat.id. По второму бот поймёт, кому отвечать.

Узел Telegram Trigger получил один элемент данных после сообщения в бота

Добавьте второй узел: Telegram, ресурс Message, операция Send Message (все параметры узла есть в документации n8n). В поле Chat ID нужно не фиксированное значение, а выражение. Переключите поле в режим Expression и вставьте:

{{ $('Telegram Trigger').item.json.message.chat.id }}

В поле Text для эхо-бота подставьте {{ $json.message.text }}. Разница между режимами простая: Fixed подходит для текста, который не меняется, Expression вычисляется из данных предыдущих узлов и всегда пишется в двойных фигурных скобках.

Поле Chat ID в режиме Expression с выражением, которое берёт идентификатор чата из триггера

Поле Text в режиме Fixed с обычным текстом ответа

Нажмите Execute Step и проверьте Telegram. Бот ответил, но в конце сообщения появилась приписка про n8n. Чтобы её убрать, в узле Telegram добавьте поле Append n8n Attribution и выключите его.

Шаг 3. Получаем ключ к языковой модели, в том числе из России

Агенту нужна модель, а модели нужен API-ключ. Если у вас есть ключ OpenAI, Anthropic или Google, пропустите этот шаг: в n8n для каждого из них есть свой узел Chat Model. Если нет, вот обходной путь.

Ключ OpenAI напрямую оплачивается только иностранной картой. Обходной путь: OpenAI-совместимые агрегаторы, которые продают доступ к тем же моделям за рубли. На курсе используем VseLLM, но таких сервисов несколько, и выбирать стоит по цене: наценка у агрегаторов спрятана не в проценте комиссии, а в собственном курсе доллара, зашитом в тариф, поэтому сравнивайте стоимость миллиона токенов, а не «комиссию 0 %». Для n8n такие сервисы удобны тем, что подключаются через стандартный узел OpenAI, только с другим адресом.

Как подключить:

  1. Зарегистрируйтесь у агрегатора и создайте ключ.
  2. В n8n откройте Credentials, создайте OpenAI и вставьте ключ в поле API Key.
  3. В поле Base URL укажите адрес API агрегатора вместо адреса OpenAI.
  4. Сохраните. Должна появиться зелёная плашка Connection tested successfully.

Грабли, на которые наступают почти все: в агрегаторах модели называются с префиксом провайдера, openai/имя-модели, а не просто имя-модели. У большинства агрегаторов имя без префикса даёт ошибку. Точные имена смотрите в списке моделей в кабинете агрегатора.

Какую модель брать для первого агента: самую дешёвую из актуальной линейки крупного провайдера. Она поддерживает вызов инструментов и стоит копейки за запрос. К имени модели не привязывайтесь: OpenAI отключает старые снапшоты каждые несколько месяцев, актуальное имя всегда в списке агрегатора. Более дорогие модели имеет смысл подключать, когда агент начнёт путаться в инструментах.

Если возиться с ключами не хочется, на курсе «ИИ-агенты и n8n» в тарифах «Оптимальный» и «Плюс» доступ к n8n и единый API к языковым моделям выдаются на время обучения, а подключение сервисов разбирается пошагово.

Список провайдеров моделей в n8n: OpenAI, Anthropic, DeepSeek, Google Gemini, Groq, Mistral, Ollama, OpenRouter и другие

Альтернативы, если агрегатор не подходит:

Способ Плюсы Минусы
OpenAI напрямую Стандартный путь, все модели Нужна иностранная карта
OpenRouter Сотни моделей в одном месте С мая 2026 не принимает оплату из России, аккаунты с регионом РФ отключены
Groq Быстро, есть бесплатный лимит Ограниченный набор моделей
Локальная модель через Ollama Бесплатно, данные не уходят наружу Нужен мощный компьютер, слабее облачных

Шаг 4. Добавляем узел AI Agent и подключаем модель

Теперь превращаем эхо-бота в агента. Между Telegram Trigger и Telegram Send Message вставьте узел AI Agent. У него снизу три разъёма: Chat Model, Memory, Tool. Четвёртый, Output Parser, появляется только после включения опции Require Specific Output Format, на скриншоте она включена. Пока агент подсвечен красным: без модели он работать не может.

Узел AI Agent с четырьмя разъёмами для модели, памяти, инструментов и парсера вывода

Откройте узел. В поле Prompt (User Message) выберите режим Define below и вставьте выражение с текстом сообщения:

{{ $json.message.text }}

Поле Prompt (User Message) в узле AI Agent с выражением, которое передаёт текст пользователя

Нажмите плюс у разъёма Chat Model, выберите OpenAI Chat Model (или узел своего провайдера, например Anthropic Chat Model), укажите credential из шага 3 и модель. В узле Telegram Send Message замените текст на {{ $json.output }}: так называется поле, в которое агент кладёт ответ. Все параметры узла описаны в документации AI Agent.

Проверять агента пока рано: по документации n8n к узлу AI Agent должен быть подключён хотя бы один инструмент. Добавим его в следующем шаге и проверим всё сразу.

Шаг 5. Подключаем инструмент: поиск в интернете

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

Нажмите плюс у разъёма Tool и выберите SerpAPI. Создайте credential с ключом сервиса. Больше настраивать ничего не нужно.

Список инструментов для агента в n8n: вызов другого workflow, код, HTTP-запрос, MCP, векторные хранилища

Первая проверка агента: отправьте боту «Привет» и нажмите Execute Step на узле AI Agent. В выводе узла должен появиться ответ модели. Затем спросите «Какое сегодня число?»: в логе выполнения будет видно, что агент вызвал SerpAPI, а в ответе появится сегодняшняя дата.

Кнопка Execute Step в панели узла AI Agent

Здесь же два правила, которые чаще всего недооценивают:

  1. Модель читает описание инструмента. У каждого инструмента есть поле Description. Если написать в нём, когда инструмент нужно вызывать, агент будет вызывать его чаще и точнее. Для готовых инструментов вроде SerpAPI описание уже есть, для своих HTTP-запросов его придётся писать самому.
  2. Не все модели умеют вызывать инструменты. Если агент упорно отвечает «в уме», первое, что стоит проверить, поддерживает ли модель tool calling. Дешёвые модели крупных провайдеров поддерживают, у бесплатных и локальных это бывает не так.

Что ещё бывает инструментом: HTTP Request к любому API, Google Sheets, Gmail, календарь, другой workflow n8n, MCP-сервер. В следующих статьях разберём подключение агента к своим документам через RAG и к внешним сервисам через MCP.

Шаг 6. Даём агенту память

Напишите боту «Меня зовут Антон», а следом «Как меня зовут?». Агент не ответит. Это не ошибка настройки: языковые модели не хранят состояние, каждый запрос для них первый. Чтобы модель «помнила», ей нужно каждый раз передавать историю диалога. За это и отвечает память.

Нажмите плюс у разъёма Memory и выберите Simple Memory. Она хранит последние N сообщений прямо в n8n, без базы данных и credentials.

Варианты памяти для агента в n8n: Simple Memory для начала, Redis, Postgres, MongoDB и другие для продакшена

Два параметра, которые важно выставить правильно:

  • Session ID. Ключ, по которому агент отличает один диалог от другого. Выберите Define below и вставьте {{ $('Telegram Trigger').item.json.message.chat.id }}. В личной переписке chat.id совпадает с пользователем, и у каждого будет своя история. В групповом чате история окажется общей на всю группу, и правило разделения придётся продумать отдельно.
  • Context Window Length. Сколько последних сообщений помнить. Для начала 10.

Повторите тест с именем. Теперь агент ответит «Антон».

Одна деталь для тех, кто поднимает n8n на своём сервере. Если n8n запущен в queue mode, узел Simple Memory не работает в опубликованном workflow, об этом прямо сказано в документации Simple Memory: запросы распределяются между несколькими исполнителями, и история не обязательно попадёт в тот же процесс. В этом случае ставится Redis Chat Memory: тот же принцип, только история хранится в Redis, и у неё есть параметр TTL, время жизни истории. Для чат-бота хватает 5–10 минут.

Шаг 7. Пишем системный промпт

Без системного промпта агент ведёт себя как обычный чат: вежливо и ни о чём. Промпт задаёт роль, правила и объясняет, когда звать инструменты. В узле AI Agent откройте Options, добавьте System Message.

Опции узла AI Agent: System Message, Max Iterations, Return Intermediate Steps и другие

Общие правила, как составлять промпты, чтобы модель понимала задачу, разбирали отдельно: промпты для нейросетей, с примерами. Здесь только структура для агента с инструментами: роль, цель, инструкции, список инструментов, стиль ответа. Вот шаблон, который можно скопировать и подставить своё:

Роль: Ты — [кто агент и для кого работает].
Цель: [одно предложение, что агент должен делать].

Инструкции:
1. Если вопрос про [факты, которые меняются: даты, цены, новости], сначала вызови инструмент [название] и отвечай по его результатам.
2. Если не знаешь ответа и инструмент не помог, скажи об этом честно. Не выдумывай [цены, сроки, факты].
3. Помни контекст разговора: имя пользователя и его прошлые вопросы.

Инструменты:
- [Название]: [когда вызывать, что возвращает].

Стиль: [коротко, по-русски, без markdown, списки через дефис].

Пример: помощник магазина цветов. Роль: помощник магазина «Флора». Правила: отвечать про букеты, доставку и оплату, не выдумывать цены, а если точной информации нет, предлагать уточнить по телефону. Одна такая строчка про цены снимает половину претензий к боту.

Два совета по промпту. Чем точнее агент сфокусирован на задаче, тем лучше он работает и тем меньше тратит токенов. И пункт про markdown не лишний. Telegram понимает только свою разметку, режим задаётся полем Parse Mode в узле Telegram, по умолчанию это HTML. Модели же по привычке пишут markdown со звёздочками. В режиме HTML звёздочки просто видны в тексте, а если переключить Parse Mode на Markdown, незакрытые * и _ дадут ошибку 400 «can't parse entities», и бот замолчит. Надёжный вариант для первого бота: оставить HTML и запретить разметку в промпте. Если форматирование нужно, попросите модель писать HTML-теги <b> и <i>.

Если агенту нужно отвечать не текстом, а структурой, например JSON для записи в таблицу, включите в узле Require Specific Output Format и подключите Structured Output Parser. Если модель иногда ошибается в формате, поверх ставится отдельный узел Auto-fixing Output Parser: он оборачивает основной парсер и при ошибке просит модель переделать ответ.

Переключатель Require Specific Output Format в узле AI Agent и подсказка подключить парсер вывода

Шаг 8. Публикуем и проверяем

До этого момента workflow работал только по кнопке. Чтобы бот отвечал постоянно, нажмите Publish в верхней панели (или Shift+P). Начиная с n8n 2.0 правки автосохраняются как версии и попадают в работу только после публикации, поэтому после каждого изменения публикуйте заново; в версиях до 2.0 вместо этого тумблер Active. Это самая частая причина вопроса «почему бот молчит»: workflow просто не опубликован.

Три проверки после сборки:

  1. Ответ по теме. Задайте вопрос из области, которую описали в промпте.
  2. Память. Напишите «Запомни слово: карандаш», задайте любой другой вопрос, потом спросите «Какое слово я просил запомнить?».
  3. Инструмент. Спросите про сегодняшнюю дату или актуальную новость и посмотрите в лог выполнения, был ли вызов SerpAPI.

Если что-то не сработало, включите в опциях агента Return Intermediate Steps: в выводе появятся промежуточные шаги: какие инструменты агент вызывал, с какими аргументами и что получил в ответ. По ним обычно понятно, почему он не пошёл в поиск.

Ещё один приём для отладки: Pin Data. Запустите узел один раз, нажмите на кнопку с булавкой в панели вывода, и n8n запомнит результат. Дальше при тестировании следующих узлов данные будут браться из закреплённого состояния, а не запрашиваться заново. Это экономит запросы к модели и к Telegram, пока вы настраиваете остальное.

Панель вывода узла с закреплёнными данными: This data is pinned

Что дальше с этим ботом. На курсе «ИИ-агенты и n8n» этот же агент за несколько модулей дорастает до ассистента, который ищет ответы в ваших документах, управляет почтой и задачами через MCP и понимает голосовые сообщения. Программа и ближайший поток: курс «ИИ-агенты и n8n».

Онлайн-курс ИИ-агенты и n8n
За 2 месяца научитесь создавать мощных AI-агентов и чат-ботов в Telegram, работать с n8n, внешними API и векторными базами данных, а также развёртывать self-hosted-решения
Узнать больше →

Типичные ошибки и как их починить

Все ситуации из таблицы встречаются у студентов курса в первую неделю. Порядок примерно по частоте.

Симптом Причина Что сделать
Бот молчит в Telegram, хотя Execute Step работает Workflow не опубликован или последние правки не опубликованы Нажать Publish (в n8n до 2.0 включить тумблер Active)
Бот замолчал после смены Parse Mode, в логе ошибка 400 can't parse entities Модель прислала markdown, а Telegram ждёт свою разметку Вернуть Parse Mode = HTML и запретить разметку в промпте, либо просить модель писать HTML-теги
Агент отвечал в тестовом чате n8n, а после подключения Telegram не помнит контекст В Session ID памяти остался ключ от тестового чата Поставить {{ $('Telegram Trigger').item.json.message.chat.id }}
Узел модели возвращает ошибку сразу после подключения агрегатора Имя модели без префикса провайдера Указать openai/имя-модели точно так, как в списке агрегатора
Simple Memory не сохраняет историю в опубликованном workflow n8n запущен в queue mode Заменить на Redis Chat Memory с TTL
Агент отвечает сам, не вызывая инструмент Слабое описание инструмента, нет правила в промпте или модель без tool calling Дописать в System Message, когда вызывать инструмент; проверить модель
Ответ приходит не в том формате, ломается следующий узел Модель вероятностна, формат «плывёт» Включить Require Specific Output Format, добавить Structured Output Parser, при повторных сбоях обернуть его в Auto-fixing Output Parser
Сообщения доходят через раз или триггер не срабатывает Один бот подключён к двум workflow или к двум n8n: у Telegram один вебхук на бота Оставить боту один активный триггер, лишний workflow выключить
На своём сервере триггер не срабатывает вообще Нет публичного HTTPS-адреса, Telegram не может доставить вебхук Задать WEBHOOK_URL с доменом и SSL; подробнее будет в отдельной статье про установку
Ошибки лимитов или таймаут от API модели Превышен rate limit, сервис недоступен В настройках узла включить Retry On Fail, добавить Fallback Model, повесить Error Trigger с уведомлением

Последняя строка про надёжность: для первого бота достаточно Retry On Fail с тремя попытками и паузой в секунду, а точные значения подбирают по ошибкам конкретного API.

Скачать готовый workflow

Чтобы не собирать руками, импортируйте готовый файл: workflow.json. Внутри ровно шесть узлов из этой статьи: Telegram Trigger, AI Agent, OpenAI Chat Model, Simple Memory, SerpAPI и Telegram Send Message. Системный промпт из шага 7 уже вписан.

Как импортировать:

  1. В n8n откройте меню workflow (три точки справа сверху) и выберите Import from File.
  2. Выберите скачанный файл.
  3. Откройте узлы Telegram Trigger, Telegram Send Message, OpenAI Chat Model и SerpAPI и укажите свои credentials. В файле их нет намеренно.
  4. В узле OpenAI Chat Model выберите модель из своего списка: в файле стоит имя для примера, у агрегатора оно будет с префиксом провайдера.
  5. Опубликуйте workflow кнопкой Publish.

Что дальше: куда растёт агент

Бот, который вы собрали, это каркас. Дальше его можно наращивать в четырёх направлениях, и каждое в n8n делается без кода.

Ответы по вашим документам. Прайс, регламенты, база знаний поддержки. Документы режутся на фрагменты, превращаются в векторы и складываются в хранилище, а агент ищет по ним перед ответом. Это называется RAG, и он заметно снижает выдумывание, хотя полностью его не исключает. Отдельная статья про RAG выйдет следующей.

Внешние сервисы через MCP. Model Context Protocol позволяет подключить агенту календарь, таск-трекер, CRM одним узлом, а свой workflow n8n превратить в инструмент для других агентов.

Несколько агентов. Один мета-агент принимает запрос и раздаёт задачи специализированным: один работает с почтой, другой с задачами, третий с контактами. В n8n агент может вызывать другого агента как инструмент.

Не только Telegram. Замените Telegram Trigger на Webhook, а отправку на Respond to Webhook, и тот же агент отвечает на сайте или в любом сервисе, который умеет отправлять HTTP-запросы.

Всё, что описано выше, и следующие уровни, от RAG до мультиагентных систем, разбираются на курсе «ИИ-агенты и n8n»: 13 модулей, 56 уроков, готовые workflow к каждому занятию и проверка домашних заданий наставником. Другие программы по этой теме собраны в разделе курсы по нейросетям.

Вопросы и ответы

Нужно ли уметь программировать, чтобы создать ИИ-агента в n8n?

Нет. Все шаги в этой статье делаются мышкой и вставкой готовых выражений. Код в n8n нужен только для нестандартной логики, и даже там есть узел Code, который можно попросить написать саму модель.

Сколько стоит ИИ-агент в n8n?

n8n на своём сервере бесплатен, облачная версия платная после пробного периода. Дешёвая модель обходится в копейки за запрос: тысяча коротких диалогов по прямым ценам провайдера укладывается в несколько десятков рублей. Через агрегатор выйдет дороже, в 2–4 раза в зависимости от его курса. Основная статья расходов появляется только при больших объёмах или дорогих моделях. Чтобы оценить бюджет, прогоните десяток типичных диалогов и посмотрите фактический расход в кабинете провайдера.

Можно ли обойтись без OpenAI и использовать российские модели?

Да, но агенту нужен именно узел Chat Model: обычный HTTP Request к модели сюда не подключить. Если у российской модели или агрегатора есть OpenAI-совместимый API, её подключают через узел OpenAI Chat Model с другим Base URL, как в шаге 3. Главное, чтобы модель поддерживала вызов инструментов, иначе агент будет работать только как чат.

Чем n8n отличается от Make и Zapier для ИИ-агентов?

Агентов сегодня умеют все три: у Zapier это отдельный продукт Zapier Agents, у Make конструктор агентов и ассистент Maia. Отличие n8n в другом: его можно бесплатно поставить на свой сервер, история диалогов и логи остаются у вас (запросы к модели и поиску всё равно уходят их провайдерам), платите за запуск workflow, а не за каждую операцию, а модель, память и инструменты агента выбираете сами, вплоть до локальных моделей.

Можно ли подключить агента к сайту, а не к Telegram?

Да. Вместо Telegram Trigger ставится узел Webhook, вместо отправки в Telegram узел Respond to Webhook. Сайт отправляет вопрос HTTP-запросом и получает ответ агента.

Сколько времени занимает сборка первого агента?

Около 40 минут, если ключи к модели и Telegram уже есть. Больше всего времени уходит не на n8n, а на получение ключа к модели и на настройку системного промпта под свою задачу.