Параллельный запуск агентов: блоки «Разветвление» и «Слияние»
Блоки Разветвление и Слияние позволяют обработать запрос пользователя несколькими агентами параллельно — например, одновременно классифицировать обращение, проверить пользователя в CRM и найти ответ в базе знаний.
Возможность доступна только в движке версии 2.
Режим слияния
Блок Слияние может работать в одном из двух режимов:
-
Когда ответят все агенты.
Процесс продолжается, только когда все параллельные агенты завершили работу. Подходит, если нужно объединить результаты, прежде чем сформировать итоговый ответ.
-
Когда ответит первый агент.
Как только первый агент завершает работу, процесс сразу переходит к следующему блоку. Подходит, если важно отреагировать быстро: например, отправить клиенту ответ того агента, который справился первым. Остальные агенты не влияют на дальнейший ход процесса, однако их работа не прерывается.
Как настроить процесс
- Перейдите в проект и на левой панели нажмите , чтобы открыть конструктор процессов.
- В верхнем левом углу холста нажмите — откроется список блоков.
- Из раздела Код и логика перетащите на холст блоки Разветвление и Слияние.
- Дважды нажмите на блок Слияние и выберите режим: Когда ответят все агенты или Когда ответит первый агент.
- Добавьте блоки агентов и соедините их по схеме Разветвление → Агент → Слияние. Других промежуточных блоков между разветвлением и слиянием быть не должно.
Правила настройки параллельных агентов
-
Количество агентов — не менее двух.
-
Блок Слияние должен собирать ветки от одного блока Разветвление.
-
Передача управления другим агентам не поддерживается.
-
Не рекомендуется использовать опции Отправлять ответ пользователю и Режим диалога. Если вы включаете их, убедитесь в корректности работы агентов.
-
Инструменты агента разрешены и подключаются как обычно. Доступна опция Запрашивать подтверждение перед вызовом.
к сведениюЕсли несколько агентов одновременно запрашивают у клиента подтверждение для вызова инструмента, платформа ставит запросы в очередь. Пользователь видит один запрос, отвечает на него, и только после этого появляется следующий. Ответ получает только тот агент, который отправил запрос.
Результат выполнения
-
В режиме Когда ответит первый агент ответ первого агента доступен в следующем блоке после блока Слияние с помощью подстановки
{{ previousResult }}. -
Результат работы любого агента можно получить с помощью функции
Context.get(branch-<ID агента>). Скопировать ID можно в блоке Агент, см. Получение agentId. Этот способ работает для любого режима слияния, но рекомендуется для режима Когда ответят все агенты — в этом случае каждый из агентов гарантированно завершил работу.Формат результата:
{
"id": "branch-agent_abcd",
"splitterId": "/splitter_efgh",
"status": "COMPLETED",
"data": {
"previousResult": "<текст ответа>"
}
}
Пример
В этом примере клиент вводит несколько чисел, а параллельные агенты рассчитывают их сумму и произведение.
Настройки:
-
Агент для сложения:
- Цель: Сложи предоставленные числа
- Инструкции: Выводи только операцию и результат. Например, если ты получил числа 2, 3, 5, 7, отвечай 2 + 3 + 5 + 7 = 17
- Опции Отправлять ответ пользователю и Режим диалога отключены
-
Агент для умножения:
- Цель: Перемножь предоставленные числа
- Инструкции: Выводи только операцию и результат. Например, если ты получил числа 2, 3, 5, 7, отвечай 2 × 3 × 5 × 7 = 210
- Опции Отправлять ответ пользователю и Режим диалога отключены
-
Слияние: Когда ответят все агенты
-
Код (вставьте реальные ID агентов):
const sum = Context.get({ key: "branch-agent_yixkz"});
const mult = Context.get({ key: "branch-agent_tnlgu"});
Reactions.sendText({text: sum.data.previousResult + '\n' + mult.data.previousResult });
Если пользователь напишет 2, 4, 8, 16, процесс ответит:
2 + 4 + 8 + 16 = 30
2 × 4 × 8 × 16 = 1024