Перейти к основному содержимому

Параллельный запуск агентов: блоки «Разветвление» и «Слияние»

Блоки Разветвление и Слияние позволяют обработать запрос пользователя несколькими агентами параллельно — например, одновременно классифицировать обращение, проверить пользователя в CRM и найти ответ в базе знаний.

Возможность доступна только в движке версии 2.

Режим слияния

Блок Слияние может работать в одном из двух режимов:

  • Когда ответят все агенты.

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

  • Когда ответит первый агент.

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

Как настроить процесс

  1. Перейдите в проект и на левой панели нажмите , чтобы открыть конструктор процессов.
  2. В верхнем левом углу холста нажмите  — откроется список блоков.
  3. Из раздела Код и логика перетащите на холст блоки Разветвление и Слияние.
  4. Дважды нажмите на блок Слияние и выберите режим: Когда ответят все агенты или Когда ответит первый агент.
  5. Добавьте блоки агентов и соедините их по схеме Разветвление → АгентСлияние. Других промежуточных блоков между разветвлением и слиянием быть не должно.

Правила настройки параллельных агентов

  • Количество агентов — не менее двух.

  • Блок Слияние должен собирать ветки от одного блока Разветвление.

  • Передача управления другим агентам не поддерживается.

  • Не рекомендуется использовать опции Отправлять ответ пользователю и Режим диалога. Если вы включаете их, убедитесь в корректности работы агентов.

  • Инструменты агента разрешены и подключаются как обычно. Доступна опция Запрашивать подтверждение перед вызовом.

    к сведению

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

Результат выполнения

  • В режиме Когда ответит первый агент ответ первого агента доступен в следующем блоке после блока Слияние с помощью подстановки {{ 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