Агент и инструменты

ИИ-агент — нода ai_agent — это не «умная нода». Это цикл: модель получает сообщение и список доступных ей инструментов, решает, вызвать ли какой-то из них, получает результаты вызовов и снова идёт к модели — пока не ответит текстом. Каждый проход этого цикла называется раундом.

Сам агент работает на бесплатном тарифе без оговорок. Ограничения касаются отдельных инструментов: telegram_tools полезен только на опубликованном Telegram-боте, а это платный канал; свои модели (BYO) на Free запрещены; подключений к внешним сервисам на Free можно завести три. Всё остальное — поиск, файлы, базы знаний, суб-воркфлоу — доступно сразу.

Вход
LLM
Оконная памятьS
RAG-инструментT
ИИ-агент
Выход
  • Исполнение + данные
  • LLM
  • Память
  • Расширение
  • Исполнение + данные + стрим
Минимальный агент: вход запускает его сообщением, модель, память и инструмент подключены конфигурационными связями, ответ уходит в выход потоком токенов.

Агент против одного вызова модели

Второй способ поговорить с моделью — нода llm_response. Она делает ровно один вызов и отдаёт то, что вернула модель. Разница не в качестве, а в том, кто принимает решения.

llm_responseai_agent
Вызовов модели за один прогон нодыодинот одного до max_iterations + 1
Инструментынетпорт Extensions, модель вызывает сама
Память диалоганет порта; своя опция истории или нода chat_historyпорт Memory
Кто решает, что делать дальшеавтор графамодель
Предсказуемость стоимостивысокая: один вызовниже: сколько раундов — решает модель

Правило выбора простое: если последовательность шагов известна вам заранее — стройте её нодами графа и берите llm_response. Агент нужен там, где шаги зависят от того, что модель узна́ет по дороге: «найди в базе, если не нашёл — поищи в интернете, потом ответь».

Как подключается инструмент

Инструмент — это нода, у которой есть выход tool_out (или output) с проводом link_extension. Он тянется во вход Extensions агента. Порт принимает сколько угодно рёбер: пять инструментов — пять проводов в один порт.

RAG-инструментT

Обратите внимание на карточку: у неё нет входа исполнения. Это не упущение, а суть механизма. Инструмент не стоит в очереди выполнения графа и не исполняется, когда до него дошла очередь, — его вызывает модель, изнутри раунда, столько раз, сколько сочтёт нужным, и с теми аргументами, которые придумает сама. Планировщик графа об этих вызовах не знает вовсе. Отсюда же и то, что провод link_extension не влияет на порядок исполнения — подробнее на странице «Провода».

Что агент сообщает модели про каждый инструмент — это имя, описание и схема аргументов. Описание берётся из настроек ноды и является частью промпта: модель выбирает инструмент по нему. Расплывчатое «работа с файлами» — самая частая причина, по которой агент не вызывает нужный инструмент.

У самого инструмента могут быть входы — но конфигурационные, не исполнительные: file_tool принимает хранилище на порт file_store, calendar_tool — календарь, email_tool — почтовый аккаунт. Это «чем именно пользоваться», а не «когда сработать».

Что происходит внутри раунда

  1. Агент собирает запрос: системный промпт, история из подключённой памяти, сообщение пользователя и список инструментов.

  2. Модель отвечает потоком. Если в ответе нет ни одного вызова инструмента — это финальный ответ, цикл закончен.

  3. Если вызовы есть, они исполняются параллельно — до восьми одновременно; у каждого вызова свой потолок в 600 секунд.

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

Каждый раунд виден в истории запуска отдельной строкой — на вкладке Выполнение нод (4) у агента появляются записи #call_1, #call_2 и так далее, с аргументами и результатом каждого вызова. Это первое место, куда стоит смотреть, когда агент «ответил не то»: почти всегда видно, что он вызвал не тот инструмент или передал в него не те аргументы.

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

Бейдж Tool в палитре стоит у восемнадцати нод. По смыслу они делятся так:

ГруппаНодыЧто даёт модели
Знания и данныеrag_tool · dataframe_tool · json_parserпоиск по базе знаний по решению модели; операции над таблицами; принудительный JSON-формат ответа
Файлыfile_toolпоиск по маске, чтение и (по отдельному флагу) запись в хранилище воркспейса
Интернетwebsearch · openrouter_web_search · fetch_webpageбесплатный поиск, платный поиск с выдержками из источников, загрузка конкретной страницы
Внешние сервисыcalendar_tool · email_tool · telegram_tools · mcp_toolкалендарь CalDAV, почта, чтение и модерация Telegram-чата, любой MCP-сервер
Медиаimage_generate · text_to_speechнарисовать картинку и озвучить текст прямо в ходе диалога
Состояние агентаagent_memory · agent_plan · agent_skillsдолгая память, список задач, включаемые наборы инструкций
Свои инструментыwf_tool · widget_toolsкусок графа как инструмент; JS-функции на странице, где встроен виджет

Точные списки портов и полей — в справочнике нод; подробности по внешним сервисам — на странице «Интеграции».

Нода, которая умеет быть и шагом, и инструментом

Три ноды объявляют оба интерфейса сразу: image_generate, text_to_speech и openrouter_web_search. Переключатель в их настройках — поле «Режим ноды» с двумя значениями:

  • Шаг графа — обычный шаг: есть вход запуска и выход Success, порт tool_out скрыт. Вы решаете, когда нода сработает.
  • Инструмент — расширение агента: остаётся только tool_out, а исполнительные порты и тумблер ветки ошибки исчезают. Когда сработает — решает модель.

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

Наборы, суб-воркфлоу и суб-агенты

Много инструментов на одном порту. Провода можно вести в порт Extensions по одному, но когда их становится больше пяти-шести, холст перестаёт читаться. Нода toolset собирает набор: инструменты подключаются в неё, а от неё в агента идёт один провод. На поведение это не влияет — модель видит тот же список.

Кусок графа как инструмент. wf_tool — обёртка подграфа: у неё выход Data (начало цепочки) и вход Result (конец), а между ними вы строите обычные ноды. Модель вызывает её по имени, цепочка исполняется, результат возвращается в диалог. Так делаются переиспользуемые операции: «создать заявку», «посчитать доставку» — то, что должно выполняться одинаково, а не пересказываться моделью каждый раз.

Агент внутри агента. Включите у второго ai_agent флаг «Открыть как инструмент (субагент)» — у него появится порт tool_out, и его можно подключить к первому. Суб-агент по умолчанию берёт модель у родителя (это можно переключить на собственный порт LLM), обязательно требует имени инструмента и, как и всякий инструмент, вызывается по решению модели. Осмысленно это там, где у подзадачи свой набор инструментов и свой системный промпт: «агент по счетам» со своим доступом к базе, «агент по расписанию» со своим календарём.

Состояние агента

Три ноды дают модели инструменты для работы с её собственным состоянием. Оно живёт отдельно от истории диалога и отдельно от переменных графа:

НодаЧто хранитКто пишет
agent_memoryсловарь «ключ — значение»модель, вызовом инструмента
agent_planсписок задач с отметками выполнениямодель, вызовом инструмента
agent_skillsнаборы инструкций, включаемые по ходу разговорамодель, вызовом инструмента
buffer/window/summary memoryисторию сообщенийсам агент, автоматически
var / var_setтипизированное значение по имениноды графа — вы решаете, когда

Разница между памятью диалога и памятью агента практическая: история — это то, что было сказано, и она растёт сама; agent_memory — это то, что модель сочла нужным запомнить, и она туда пишет явным вызовом. Если значение нужно вам в графе (условие, фильтр, поле запроса) — берите переменную, а не память агента. Подробный разбор всех трёх механизмов — на странице «Переменные и память».

У agent_skills отдельная роль: каждый «навык» — это кусок системного промпта, который модель включает и выключает сама. Так набор правил не висит в контексте целиком на каждом ходу.

Бюджет раундов

Поле «Макс. итераций инструментов» в разделе Дополнительно настроек агента — это число раундов, а не число вызовов. По умолчанию 10, допустимо от 1 до 50. Сорок вызовов инструментов в одном ответе модели — это один раунд.

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

Главное свойство обоих потолков: исчерпание не обрывает ход. Из пачки вызовов исполняется разрешённый префикс, на остальные модель получает ответ «бюджет исчерпан, этот вызов не выполнялся», а следующий раунд объявляется последним — с явной инструкцией ответить тем, что уже есть. Ход всегда заканчивается ответом модели, а не тишиной и не провалившимся запуском: иначе пользователь заплатил бы за десять раундов и не получил ничего.

Когда инструмент падает

Ошибка инструмента не роняет запуск. Она превращается в текст и возвращается модели как результат вызова — примерно так: Error executing tool 'fs_read': Файл не найден. Это сделано намеренно: модель часто способна исправиться сама — попробовать другой путь, другой запрос, другой инструмент, — и такое исправление и есть обработка ошибки. Статус запуска при этом остаётся успешным.

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

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

Сколько это стоит

Каждый раунд — это новый вызов модели со всей накопленной историей: системный промпт, переписка, все прошлые вызовы инструментов и все их результаты. Поэтому входные токены с каждым раундом растут, и агент, сходивший к модели пять раз, стоит заметно дороже одного вызова llm_response.

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

Практический вывод: длина системного промпта и объём того, что возвращают инструменты, влияют на счёт сильнее, чем кажется, — потому что и то, и другое пересылается заново каждый раунд. Инструмент, отдающий модели полный текст десяти документов, дорожает квадратично.

Что дальше