Системы агентов (Agent Systems)
Визуальные DAG‑схемы, которые позволяют связать нескольких агентов и функции в единый сценарий с разветвлениями, условиями и контролем времени выполнения.
Введение
Система агентов — это направленный ациклический граф (DAG) из узлов‑шагов (агенты, функции, условия), которые выполняются в заданном порядке. Вы можете строить ветвящиеся сценарии: запускать несколько веток параллельно, разветвлять поток по условиям и собирать результат в финальном узле output.
Системы агентов удобны, когда одного чат‑бота недостаточно: нужно последовательно вызвать несколько агентов, подготовить данные функциями (Custom API, интеграции) и принять решение в условном узле.
Режим Orchestrator — альтернатива DAG: один агент динамически вызывает инструменты и под‑агентов. Подробнее о Orchestrator.
Технические детали формата definition и алгоритма исполнения смотрите в документе
docs/agent_systems.md внутри репозитория.
Ключевые сущности
- AgentSystem — объект, хранящий схему DAG в поле
definition(узлы, рёбра, viewport). - AgentSystemRun — один запуск схемы, со статусом, входом/выходом и результатами по узлам.
- Узел (node) — шаг в DAG: триггер, агент, инструмент (функция), условие или финальный вывод.
- Ребро (edge) — связь между узлами; может содержать
data_mappingилиdata_mapping_templateдля подготовки входа следующего узла.
Редактор схемы
- Откройте раздел Системы агентов и создайте систему.
- На странице редактирования перетаскивайте узлы, соединяйте их рёбрами и настраивайте каждый узел через боковую панель «Настройки узла».
- Снизу формы хранится JSON‑представление схемы; оно обновляется автоматически и используется для валидации и исполнения.
Типы узлов
Доступные типы узлов:
- trigger — начальная точка; передаёт в схему вход
AgentSystemRun.input. Типы: manual, webhook, email, telegram, cron. Подробнее о триггерах и каналах. - agent — запускает выбранного
Agentсо сконструированным сообщением. - tool — вызывает функцию
Function(Custom API и другие провайдеры). - condition — проверяет JSONPath‑условие над результатами предыдущих узлов и
направляет поток по рёбрам с
condition: true/false. - map — выполняет целевой узел (agent или tool) для каждого элемента массива; Подробнее о Map.
- output — финальный сборщик результата; выбирает, какие узлы попадут в общий
output.
В боковой панели доступны дополнительные параметры: таймаут узла, число попыток и пауза
между ретраями, список required_sources (обязательные предшествующие узлы).
Рёбра, маппинг и условия
Каждое ребро соединяет source → target и может содержать:
data_mapping— JSON‑объект, описывающий, какие поля из выходов исходных узлов попадут во вход целевого узла.data_mapping_template— Liquid‑шаблон, позволяющий собирать произвольные строки/структуры на основе контекста.condition(для рёбер из узла типаcondition):true,falseили пусто (всегда).
В редакторе есть отдельная панель «Настройки ребра», где можно переключаться между режимами JSON‑маппинга и Liquid‑шаблона, а также задать, по какому результату условного узла будет активировано ребро.
Запуск и отладка
- Запустите систему с её страницы (кнопка «Запустить систему»). Создаётся
AgentSystemRun, запуск идёт в фоне. - Страница запуска показывает:
- общий статус и длительность;
- итоговый output (строка как markdown или JSON);
- таблицу «Результаты по узлам» с порядком выполнения, статусами, временем и количеством попыток;
- для каждого узла — кнопки «Показать» (JSON), «Скопировать» и «Открыть» (модальное окно с JSON и, при необходимости, markdown‑представлением).
- Невыполненные узлы не имеют действий; узлы, которые не завершились, не показывают действия над выводом.
Эта же информация доступна для внутренних агентов (например, Setup Assistant) через AgentSystem,
AgentSystemRun и описание формата в docs/agent_systems.md.