# 应用技术栈 AutoGen core 被设计为一个无预设倾向的框架,可用于构建多种多样的多Agent应用。它不与任何特定的Agent抽象或多Agent模式绑定。 下图展示了应用技术栈的组成: ![应用技术栈](application-stack.svg) 技术栈的底层是基础消息传递和路由设施,这些设施使得Agents能够相互通信。这些功能由Agent运行时管理,对于大多数应用而言,开发者只需与运行时提供的高级API交互即可(参见[Agent与Agent运行时](../framework/agent-and-agent-runtime.ipynb))。 在技术栈的顶层,开发者需要定义Agents之间交换的消息类型。这组消息类型构成了Agents必须遵守的行为契约,而契约的实现决定了Agents如何处理消息。行为契约有时也被称为消息协议。实现行为契约是开发者的责任。多Agent模式正是从这些行为契约中涌现出来的(参见[多Agent设计模式](../design-patterns/intro.md))。 ## 示例应用 考虑一个用于代码生成的多Agent应用的具体示例。该应用由三个Agent组成: 编码器Agent(Coder Agent)、执行器Agent(Executor Agent)和评审器Agent(Reviewer Agent)。 下图展示了Agent之间的数据流以及它们交换的消息类型。 ![代码生成示例](code-gen-example.svg) 在本示例中,行为契约包含以下内容: - 从应用程序发送给编码器Agent的 `CodingTaskMsg` 消息 - 从编码器Agent发送给执行器Agent的 `CodeGenMsg` - 从执行器Agent发送给评审器Agent的 `ExecutionResultMsg` - 从评审器Agent发送给编码器Agent的 `ReviewMsg` - 从评审器Agent发送给应用程序的 `CodingResultMsg` 行为契约通过Agent对这些消息的处理来实现。例如,评审器Agent监听 `ExecutionResultMsg`, 评估代码执行结果以决定是否批准或拒绝。如果批准,则向应用程序发送 `CodingResultMsg`; 否则,向编码器Agent发送 `ReviewMsg` 以进行新一轮的代码生成。 这种行为契约是多Agent模式中称为_反射_的一个案例,其中生成结果通过另一轮生成进行评审, 以提高整体质量。