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

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

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

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

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

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

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

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

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

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

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 · 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 и websearch. Переключатель в их настройках — поле режима с двумя значениями:

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

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

Наборы, суб-сценарии и суб-агенты

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

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

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

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

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

НодаЧто хранитКто пишет
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.

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

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

Что дальше