1

当其他一些代理完成时,有没有办法让浮士德代理运行?例如

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

Agent_final应该在全部Agent1,Agent2,Agent3完成后开始。并且Agent_final应该可以访问所有 3 个代理输出。在文档中没有找到这种常见的方法。

4

1 回答 1

0

你可以做几件事。你可以让它更线性:

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,它会检查表中的 id,将值添加到正确的字段(对应于消息来自的代理)
  • 如果不是所有 3 个字段,None则所有三个贡献代理都已完成,因此您现在可以做任何它final_agent应该做的事情。
  • 如果有任何缺失的字段,您可以将更新后的 dict 保存回表中,然后继续下一条消息而不做任何其他事情。

无耻的插头:

我制作了一个库来进行这种处理(githubpypi)。将所有依赖消息汇集到一个主题,编写一个 key、merge 和 sufficiency 函数,并按照 README 中的说明使用它来阻止处理,直到多个上游代理完成他们的事情。

于 2020-01-10T16:53:48.433 回答