Все ноды/AI/Agents

Инструменты виджета

Расширение агента: отдаёт LLM все JS-функции, объявленные в коде встраивания виджета (flowWidget.defineFunction), как инструменты. Когда модель вызывает инструмент — браузер посетителя выполняет привязанный JS и возвращает результат. Работает только в режиме виджета.

Инструменты виджетаT
Agent

Тип в графе: widget_tools

Tool

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

Минимальный рабочий воркфлоу

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

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

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

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

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

Собственных инструментов нода не объявляет. Она берёт список функций, которые страница объявила через flowWidget.defineFunction (форма {name, description, parameters}), и отдаёт их модели как инструменты. Обработчик остаётся в браузере — воркфлоу видит только объявление.

Имена приводятся к безопасному виду: нижний регистр, всё кроме букв, цифр, _ и - заменяется на _, длина режется до 64 символов. То есть Get Cart модель вызывает как get_cart; если два объявления сводятся к одному имени, второе получает числовой суффикс.

Вызов — это круговой рейс: запрос уходит в браузер, ваш обработчик отрабатывает, результат возвращается в воркфлоу. Нода ждёт его не дольше «Таймаута» (по умолчанию 30 секунд, максимум 300). «Разрешённые функции» — allow-list по исходному имени из объявления; пустой список означает «все объявленные».

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

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

  • Проверять ноду в тестовом запуске редактора, по API или в Telegram. Функций там нет и браузера тоже: модель получит только ошибку. Проверять надо на странице с виджетом.
  • Объявить функцию без описания. Модель выбирает инструмент по описанию; без него она либо не вызовет функцию, либо вызовет невпопад.
  • Забыть parameters. Объявление без схемы объекта отдаётся модели как функция без аргументов — передать в неё что-либо она не сможет.
  • Писать в allow-list уже нормализованное имя. Список сверяется с тем именем, которое вы указали в defineFunction.
  • Обработчик дольше таймаута. Тяжёлую работу лучше запускать на странице и отдавать результат отдельным ходом, а не держать модель в ожидании.

Входы

Выходы

ПортПроводДанныеПримечания
AgentoutputРасширениеlink_extension

Настройки

ПолеТипПо умолчаниюОписание
Разрешённые функцииallowed_functionsarray<string>

Опциональный allow-list имён клиентских функций, доступных LLM. Оставьте пустым, чтобы отдать все функции, объявленные виджетом.

Таймаут (секунды)timeout_secondsinteger30

Сколько ждать результат инструмента от браузера до ошибки.