Узел ИИ-агент

ИИ-агент — это компонент платформы Nodul, предназначенный для построения интеллектуальных сценариев на базе больших языковых моделей (LLM). Он позволяет интегрировать внешние функции, вести контекстные диалоги и выполнять последовательные действия на основе пользовательского ввода.
Назначение
ИИ-агент используется для:
- генерации ответов на пользовательские запросы
- вызова других узлов в сценарии как функций
- работы с кратковременной памятью в рамках сессии
- получения структурированных JSON-ответов
- выполнения сценариев с ограниченным числом итераций
Интерфейс ИИ-агента

Основные поля
| Поле | Описание |
|---|---|
| Model | Название используемой LLM-модели (например, openai/gpt-4.1) определяет качество и стоимость выполнения. |
| Session ID | Идентификатор для загрузки и разделения истории диалога. Если указан, агент включит соответствующую историю диалога в контекст. Если пуст или не указан, каждый запрос будет обрабатываться как новая сессия без истории. Например, это может быть ID чата или ID пользователя для различения разных потоков диалога. |
| User Prompt | Основной запрос пользователя. Поддерживает интерполяцию переменных. |
| System Message | Инструкция для языковой модели. Управляет поведением агента (тон, стиль, ограничения и т.д.). |
Дополнительные настройки
| Context Window Length | Указывает количество последних пар сообщений (пользователь и ассистент), которые будут включены в контекстное окно, передаваемое LLM. Увеличение этого значения позволяет модели учитывать более длинную историю диалога, что может улучшить связность, но также может потреблять больше токенов и влиять на производительность |
|---|---|
| Max Iterations | Определяет верхний предел вызовов инструментов, разрешённых для LLM-агента в одном процессе рассуждения. Если этот порог достигнут, агент прекратит выполнение и ответит сообщением о том, что был остановлен из-за достижения максимального числа итераций. |
| Temperature | Температура сэмплирования, от 0 до 2. Более высокие значения (например, 0.8) делают вывод более случайным, тогда как более низкие значения (например, 0.2) делают его более сфокусированным и детерминированным. |
| Max Tokens | Верхняя граница количества токенов, которые могут быть сгенерированы для завершения |
| Structured output (переключатель) | При включении LLM будет вынужден отвечать в формате JSON. Вы должны определить ожидаемую структуру JSON и правила форматирования в промпте или в «Output JSON Schema» |
| Output JSON Schema | При указании эта JSON Schema определяет точную структуру, типы и ограничения ожидаемого JSON-вывода от LLM. Модель будет направляться на строгое следование этой схеме при генерации. Пример: { "type": "object", "properties": { "output": { "type": "string", "description": "Provide output here" } } } |
| Quick Preview Schema | Это поле позволяет форматировать данные ответа для удобного чтения. Определите пары ключ-путь в JSON, где ключ — это заголовок, а значение — путь к данным |
Чтобы изучить все доступные модели, их названия, цены и описания, вы можете использовать узел List Models. Он возвращает структурированный список моделей, поддерживаемых узлом ИИ-агент.

Как это работает
ИИ-агент реализует концепцию Function Calling (как определено OpenAI) или Tool Call. При запуске он формирует стандартный чат-запрос с ролями (system, user) и списком доступных инструментов на основе подключённых узлов.
Запрос включает:

-
User Prompt(1) — запрос пользователя (role: user), -
System Message(2) — системное сообщение (role: system), -
Метаданные инструмента — каждый подключённый узел должен предоставить:

- имя (3) (берётся из заголовка узла),
- описание (4) (из поля
Tool Description), - список аргументов (5), определённых через
fromAIAgent()в полях ввода.
Пример:
{{fromAIAgent("Email Body"; "Включите тело письма как обычный текст или HTML. Если HTML, убедитесь, что свойство «Body Type» установлено в html")}}Каждый такой узел рассматривается как вызываемая функция с именем, аргументами и описанием. Если модель решит вызвать одну из функций, Nodul выполнит соответствующий узел и вернёт результат ИИ-агенту.
Модель сама решает, какие инструменты вызывать, в зависимости от смысла пользовательского запроса. Вы можете подключить несколько инструментов — только релевантные будут запущены в зависимости от контекста.
AI Chat

В правой части настройки узла есть вкладка AI Chat. Вы можете использовать её для общения с ассистентом в реальном времени и тестирования его поведения. Это полезно для проверки того, как модель интерпретирует промпт, какие действия предлагает и какие инструменты решает вызвать.
Подключение инструментов к агенту

Чтобы ИИ-агент использовал другие блоки сценария, они должны быть визуально подключены снизу через интерфейс конструктора.
Есть два способа сделать это:
- Перетащите нужный узел (например, HTTP Request, Telegram, Search и т.д.) и подключите его к нижнему коннектору узла ИИ-агента.
- Или нажмите на коннектор ИИ-агента и вручную свяжите его с существующим узлом.
После подключения связанный узел становится доступным как вызываемый инструмент для агента.
Передача параметров в подключённые инструменты

Чтобы передать данные от ИИ-агента в подключённый узел, используйте оператор fromAIAgent(). Этот оператор действует как плейсхолдер для динамического ввода — агент автоматически подставит в него релевантные значения во время выполнения.
Вы можете разместить {{fromAIAgent("parameter_name"; "parameter description")}} внутри любого поля ввода подключённого узла (например, Request Body, Prompt, Text и т.д.).
Это выражение определяет ожидаемый аргумент для инструмента:
"parameter_name"— внутреннее имя параметра"parameter description"— показывается модели и используется в схеме функции
Формат:
{{fromAIAgent("parameter_name"; "description")}}Пример:

{{fromAIAgent("Email Body"; "Включите тело письма как обычный текст")}}Это зарегистрирует узел как доступную функцию с:
- её именем (берётся из заголовка узла),
- описанием (берётся из поля
Tool Description), - списком параметров, определённых через выражения
fromAIAgent().
Каждый узел должен иметь уникальное имя. Если имя отсутствует, выполнение завершится ошибкой.
Пример: Прогноз погоды (без авторизации)

Посмотрим, как работает ИИ-агент на примере запроса прогноза погоды.
-
Поместите ИИ-агент на рабочую область.
-
В поле
System Messageнапишите:Ты ассистент, который может получать погоду. Используй соответствующий инструмент. -
Добавьте узел
HTTP Requestниже. -
Назовите узел, например,
Weather forecast -
Установите метод:
GET -
В поле URL вставьте:
https://wttr.in/{{fromAIAgent("city"; "Название города для прогноза погоды")}}?format=3 -
Запустите ИИ-агент с промптом:
Какая погода в Берлине?
В результате:
- ИИ-агент получает запрос пользователя;
- анализирует, что нужен прогноз погоды;
- находит узел с именем
weather_forecast, который используетfromAIAgentс параметромcity; - подставляет значение «Берлин» и выполняет HTTP-запрос;
- получает краткий прогноз и отправляет его обратно пользователю.

Пример: Гибкий Telegram-чатбот
ИИ-агент также хорошо работает в формате чатбота. Вы можете подключить несколько узлов и позволить модели решать, какой использовать.
Например, вот базовый Telegram-чатбот:

Триггер Telegram подключён к ИИ-агенту, а от ИИ-агента к:
Web Search(Perplexity);Create Note(Notion);Current Weather
В этом сценарии:
- Если пользователь отправляет обычное сообщение, агент просто отвечает текстом, не вызывая инструменты.

- Если пользователь просит создать заметку, он использует узел
Create Note.

- Если пользователь просит сделать что-то сложное, например, получить погоду и найти информацию в интернете, два инструмента —
Web SearchиCurrent Weather— будут запущены последовательно, и их результаты будут включены в ответ.

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

В таких сценариях агенты могут обмениваться данными, запускать друг друга условно и брать на себя различные обязанности в рамках одного запроса. Например, один агент может выступать как копирайтер, другой как редактор, а третий как фактчекер. Такое разделение ролей помогает уменьшить галлюцинации, которые обычно возникают, когда один агент перегружен множеством задач.
Эти паттерны особенно полезны для:
- многошагового рассуждения;
- оркестрации инструментов;
- ИИ-пайплайнов, требующих чёткого разделения логики и внутренних циклов обратной связи.
📘 Для более детальных пошаговых примеров того, как ИИ-агенты ведут себя и координируются в различных сценариях, смотрите полную статью: