Все ноды/AI/Agents

ИИ-агент

Автономный агент с поддержкой инструментов. Получает сообщение, вызывает подключённые инструменты и возвращает ответ. Модель приходит на вход «Модель». Опционально: memory (история диалога), skills/extensions (инструменты).

ИИ-агент▶▦
МодельОтвет модели
СообщениеРасширение агента
Память
Расширения агента

Тип в графе: ai_agent

ExecSubgraph

Можно включить выход ошибки и обработать сбой отдельным путём.

Порты можно разделить на исполнение и данные (split ports).

Как попробовать

Минимальный рабочий сценарий

Вход
ИИ-агент▶▦
LLM▦
Вся история диалога▶S
Выход▶
  • Исполнение + данные
  • LLM
  • Память
  • Исполнение + данные + стрим
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Запускается сразу

Как применять

ИИ-агент нужен, когда модель должна сама решить, что сделать перед ответом: сходить в базу знаний, вызвать инструмент, посмотреть историю — и только потом отвечать. Инструменты подключаются в порт «Расширения агента», память диалога — в порт «Память», модель — в порт «Модель». Если ни инструментов, ни памяти не требуется, Ответ LLM проще и предсказуемее.

Как это работает

Агент работает раундами. Модель отвечает; если она запросила инструменты, все вызовы этого раунда выполняются параллельно, результаты возвращаются в диалог, и начинается следующий раунд. «Макс. итераций инструментов» (по умолчанию 10) ограничивает именно раунды: в одном раунде модель может запросить сразу десяток инструментов. Ограничить объём работы, а не число обменов, позволяет «Макс. вызовов инструментов».

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

Каждый раунд виден в журнале запуска отдельной строкой «Вызов N»: вход, вызовы инструментов, результат и токены.

Субагент. Включите «Открыть как инструмент» и задайте «Имя инструмента» — вместо обычного выхода у ноды появится порт «Расширение агента», который подключается в порт «Расширения агента» другого агента. По умолчанию субагент берёт модель родителя; чтобы дать ему свою, переключите «Источник LLM» на внешний и подключите отдельную ноду LLM.

Частые ошибки

  • Инструмент подключают ребром исполнения. Инструменты идут в порт «Расширения агента» своим типом ребра, и порядок вызовов решает модель, а не граф. Порт принимает сколько угодно рёбер.
  • У субагента пустое «Имя инструмента». Нода не проходит валидацию: имя — это то, чем модель вызывает субагента.
  • Пишут nodes.<id>.output.text. На ребро и в шаблон уходит сама строка ответа: {{ nodes.<id>.output }}.
  • Складывают в одного агента всё подряд. Если инструментов становится много, выделите часть в субагента или подключите готовый сценарий нодой Свой инструмент; сгруппировать несколько инструментов помогает Набор инструментов.

Входы

ПортПроводДанныеПримечания
МодельllmLLMlink_llm—

Модель, которой отвечает эта нода: подключите ноду «LLM».

показывается, когда is_subagent = false или llm_source ≠ "from_parent"

СообщениеinputИсполнение + данныеexecute_datamessage

Запускает шаг и приносит сообщение пользователя для агента.

ПамятьmemoryПамятьlink_memory—

Память с историей разговора: подключите ноду памяти.

Расширения агентаextensionsРасширениеlink_extension—

несколько связей

Выходы

ПортПроводДанныеПримечания
Ответ моделиoutputИсполнение + данные + стримexecute_data_streamingobject

показывается, когда is_subagent = false

Расширение агентаtool_outРасширениеlink_extension—

показывается, когда is_subagent = true

Настройки

ПолеТипПо умолчаниюОписание
Источник сообщенияmessage_sourcestringconnected

«Подключённый вход» — сообщение приходит из ребра; «Шаблон» — из текста ниже

Варианты: connected — Подключённый вход, template — Шаблон

Шаблон сообщения пользователяuser_prompt_templatestring""

Используется, когда источник сообщения — template. Поддерживает {{inputs.message}}, {{nodes.xxx.output.yyy}}

поддерживает шаблоны

показывается при «Источник сообщения» = Шаблон

Системный промптsystem_promptstring""

Системный промпт для агента

поддерживает шаблоны

Дополнительно
Макс. итераций инструментовmax_iterationsinteger10

Макс. итераций инструментов

Макс. вызовов инструментовmax_tool_callsintegernull

Максимум вызовов инструментов для этого агента (пусто = бюджет рана). «Макс. итераций инструментов» ограничивает только раунды — в одном раунде вызовов может быть десятки.

Открыть как инструментis_subagentbooleanfalse

Когда включено, этот агент можно подключить как инструмент к другим агентам

Описаниеdescriptionstring""

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

показывается при «Открыть как инструмент» = да

Источник LLMllm_sourcestringfrom_parent

«от родителя» — модель родительского агента, когда эта нода является субагентом; «внешняя» — модель с входа «Модель»

Варианты: from_parent — От родительского агента, external — Внешняя модель

показывается при «Открыть как инструмент» = да

Имя инструментаsubagent_namestring""

Имя функции, используемое когда этот агент вызывается как инструмент

показывается при «Открыть как инструмент» = да

Включить размышлениеenable_thinkingbooleanfalse

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

Промпт размышленияthinking_promptstringAnalyze the tool results and think about the next steps.

Сообщение, вставляемое после результатов инструментов для направления рассуждения модели

поддерживает шаблоны

показывается при «Включить размышление» = да

Обезличивание данныхmask_sensitive_datastring""

Заменять распознанные персональные данные метками в тексте, который уходит модели, и возвращать оригиналы в её ответе. Не покрывает вложения, базы знаний, веб-поиск и вызовы HTTP-нод. Полнота распознавания не гарантируется.

Варианты: — По умолчанию для пространства, on — Обезличивать, off — Не обезличивать

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этой ноды.
  • split_ports_in — Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.
  • split_ports_out — Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.

Готовые примеры с этой нодой