重要
代理框架中的代理编排功能处于实验阶段。 它们处于积极开发阶段,在升级到预览版或候选发布阶段之前可能会发生重大变化。
语义内核的代理业务流程框架使开发人员能够轻松生成、管理和缩放复杂的代理工作流。
为什么是多代理编排?
传统的单代理系统在处理复杂多面任务的能力方面受到限制。 通过协调多个代理,每个代理都有专门的技能或角色,我们可以创建更可靠、更自适应且能够协作解决实际问题的系统。 语义内核中的多代理业务流程为构建此类系统提供了灵活的基础,支持各种协调模式。
编排模式
与众所周知的云设计模式一样,代理编排模式是协调多个代理以协同工作来实现共同目标的技术不可知方法。 若要详细了解模式本身,请参阅 AI 代理业务流程模式 文档。
语义内核中支持的编排模式
语义内核支持你直接在 SDK 中实现这些业务流程模式。 这些模式作为框架的一部分提供,可以轻松扩展或自定义,以便你可以优化代理协作方案。
| 图案 | DESCRIPTION | 典型用例 |
|---|---|---|
| 并发的 | 将任务广播到所有代理,单独收集结果。 | 并行分析、独立的子任务、集成决策。 |
| 顺序 | 按定义的顺序将一个代理的结果传递到下一个代理。 | 分步工作流、管道、多阶段处理。 |
| 移交 | 在代理之间根据上下文或规则动态传递控制。 | 动态工作流、升级、回退或专家交接方案。 |
| 群组聊天 | 所有代理都参与组对话,由组管理员协调。 | 集思广益、协作解决问题、共识构建。 |
| 磁性 | 群聊般的编排受到 MagenticOne 的启发。 | 复杂、通用的多代理协作。 |
简单性和开发人员友好
所有业务流程模式共享用于构造和调用的统一接口。 无论选择哪种编排,你都:
- 定义代理及其功能,请参阅语义内核代理。
- 通过传递代理(如果需要,还有经理)来创建编排。
- (可选)为自定义输入/输出处理提供回调或转换。
- 启动运行时,并使用任务调用编排。
- 以一致、异步的方式等待结果。
这种统一的方法意味着可以在业务流程模式之间轻松切换,而无需学习新的 API 或重写代理逻辑。 该框架抽象化代理通信、协调和结果聚合的复杂性,让你专注于应用程序的目标。
// Choose an orchestration pattern with your agents
SequentialOrchestration orchestration = new(agentA, agentB)
{
LoggerFactory = this.LoggerFactory
}; // or ConcurrentOrchestration, GroupChatOrchestration, HandoffOrchestration, MagenticOrchestration, ...
// Start the runtime
InProcessRuntime runtime = new();
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();
# Choose an orchestration pattern with your agents
orchestration = SequentialOrchestration(members=[agent_a, agent_b])
# or ConcurrentOrchestration, GroupChatOrchestration, HandoffOrchestration, MagenticOrchestration, ...
# Start the runtime
runtime = InProcessRuntime()
runtime.start()
# Invoke the orchestration
result = await orchestration.invoke(task="Your task here", runtime=runtime)
# Get the result
final_output = await result.get()
await runtime.stop_when_idle()
注释
代理编排在 Java SDK 中尚不可用。
准备您的开发环境
在继续作之前,请将以下包添加到项目:
dotnet add package Microsoft.SemanticKernel.Agents.Orchestration --prerelease
dotnet add package Microsoft.SemanticKernel.Agents.Runtime.InProcess --prerelease
根据使用的代理类型,可能还需要为代理添加相应的包。 有关更多详细信息,请参阅 代理概述 。