多Agent协作入门,哪种并发编排模式最适用?
摘要:传统的单Agent系统在处理复杂多面任务的能力方面受到较多限制,因此我们会有多Agent编排协作完成任务的需求。Semantic Kernel支持多种多Agent编排流程模式,每个模式都针对不同的协作方案而设计。本文介绍了Agent编排的概
大家好,我是Edison。
上一篇我们学习了Semantic Kernel中的AgentGroupChat实现群聊的效果,但其实多Agent协作编排还有一些其他的模式。今天就来和你唠唠其他支持的编排模式,每篇介绍一个,持续更新完。
SK支持哪些编排模式?
传统的单Agent系统在处理复杂多面任务的能力方面受到较多限制,因此我们会有多Agent编排协作完成任务的需求。Semantic Kernel支持多种多Agent编排流程模式,每个模式都针对不同的协作方案而设计。这些模式作为框架的一部分提供出来,我们可以自己扩展。
目前,Semantic Kernel支持以下编排模式:
上面所有的编排模式都基于统一的构造和接口来实现,它抽象了Agent通信、协调和结果聚合的复杂性,如下代码所示,只需选择不同的编排模式类即可:
// 只需修改下面的编排模式类型即可
// or ConcurrentOrchestration, GroupChatOrchestration, HandoffOrchestration, MagenticOrchestration, ...
SequentialOrchestration orchestration = new(agentA, agentB)
{
LoggerFactory = this.LoggerFactory
};
InProcessRuntime runtime = new();
// Start the runtime
await runtime.StartAsync();
// Invoke the orchestration and get the result
OrchestrationResult<string> result = await orchestration.InvokeAsync(task, runtime);
string text = await result.GetValueAsync();
await runtime.RunUntilIdleAsync();
因此,我们无需学习新的API或重写Agent逻辑,可以专注于应用程序的编写,真的是很方便!
下面,我们就来看看第一种模式:并发编排。
并发编排模式简介
并发模式使用多个Agent并行处理同一个任务,每个Agent都可以独立处理输入,并收集并聚合结果。此模式比较适合多种观点或解决方案很有价值的场景,比如集思广益、群体推理以及其他投票系统。
下图展示了多个Agent生成同一问题的不同解决方案,并收集其响应以进一步分析或选择:
实现并发编排模式
这里我们来实现一个DEMO,定义两个Agent:Physicst(物理学大佬) 和 Chemist (化学大佬),它们可以对用户提出的同一个问题并行地进行思考并给出自己的解释。
