应用程序栈#
AutoGen core 被设计为一个无偏见的框架,可用于构建各种多代理应用程序。它不与任何特定的代理抽象或多代理模式绑定。
下图显示了应用程序栈。
在栈的底层是基础消息传递和路由设施,使代理能够相互通信。这些由代理运行时管理,对于大多数应用程序来说,开发人员只需要与运行时提供的高级 API 交互。 (见 Agent and Agent Runtime).
在栈的顶层,开发人员需要定义代理交换的消息类型。这组消息类型形成了代理必须遵守的行为契约,而契约的实现决定了代理如何处理消息。行为契约有时也被称为消息协议。实现行为契约是开发人员的责任。多代理模式从这些行为契约中产生。 (见 Multi-Agent Design Patterns).
示例应用#
让我们考虑一个用于代码生成的多代理应用程序的具体示例。该应用程序由三个代理组成: 编码代理(Coder Agent)、执行代理(Executor Agent)和审查代理(Reviewer Agent)。 下图显示了代理之间的数据流和它们之间交换的消息类型。
在这个例子中,行为契约包含以下内容:
从应用程序到编码代理的
CodingTaskMsg
消息从编码代理到执行代理的
CodeGenMsg
从执行代理到审查代理的
ExecutionResultMsg
从审查代理到编码代理的
ReviewMsg
从审查代理到应用程序的
CodingResultMsg
行为契约通过代理对这些消息的处理来实现。例如,审查代理监听 ExecutionResultMsg
并评估代码执行结果以决定是否批准或拒绝,如果批准,它会向应用程序发送 CodingResultMsg
,否则,它会向编码代理发送 ReviewMsg
进行另一轮代码生成。
这个行为契约是一个称为_反思_的多代理模式的案例,其中生成结果通过另一轮生成进行审查,以提高整体质量。