заставить агента Фауста ждать, пока другие агенты закончат
Есть ли способ запустить агент 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, чтобы использовать ее для блокировки обработки, пока несколько вышестоящих агентов не сделают свое дело.