заставить агента Фауста ждать, пока другие агенты закончат

Есть ли способ запустить агент faust после завершения работы других агентов? Например

       Agent1
       +
       |
       |
       |
Agent2 +------------->Agent_final
       |
       |
       |
       +
       Agent3

Agent_final должен начаться, когда все Agent1,Agent2,Agent3Конец. А такжеAgent_finalдолжен иметь доступ ко всем 3 выводам агентов. Не нашел в документах этого общего подхода.

1 ответ

Вы могли бы сделать пару вещей. Вы можете сделать его более линейным:

A1 -> A2 -> A3 -> AF

Или вы можете попросить AF выполнить соединение. Я сделал это следующим образом:

  • все родительские агенты должны писать в одну и ту же тему, поэтому в этом случае (A1,A2,A3) все бы написали agent_final's_topic.
  • agent_final ведет таблицу, которая выглядит как {id: {A1: x, A2: y, A3: z}}. x, y, а также z либо None, либо то, что создают родительские агенты.
  • когда agent_final читает сообщение, проверяет таблицу на предмет идентификатора, добавляет значение в правильное поле (соответствующее агенту, от которого пришло сообщение)
  • Если не все 3 поля None тогда все три участвующих агента завершили работу, и теперь вы можете делать все, что угодно. final_agent должен был сделать.
  • Если есть какие-либо отсутствующие поля, вы можете сохранить обновленный диктант обратно в таблицу, а затем перейти к следующему сообщению, ничего не делая.

Бесстыдный штекер:

Я сделал библиотеку для такой обработки (github, pypi). Передайте все сообщения о зависимости в одну тему, напишите ключ, функцию слияния и достаточности и следуйте инструкциям в README, чтобы использовать ее для блокировки обработки, пока несколько вышестоящих агентов не сделают свое дело.

Другие вопросы по тегам