当前位置: 首页 > news >正文

Agent Framework 中智能体的Concurrent编排模式

上一节我们介绍了 Sequential(顺序编排)这种最基础的 Agent 编排模式。 实际上,在 Agent Framework 中,顺序执行链路既可以通过 AgentWorkflowBuilder.BuildSequential() 快速创建,也可以通过更底层的 WorkflowBuilder 手动定义执行关系。 前者本质上是对后者的一层语法糖封装,用于简化线性链路的构建。

创建 AI Agent

在 C# 中,一个 Agent 通常会基于一个聊天模型客户端创建。

var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set."); var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-5.4-mini"; var chatClient = new AzureOpenAIClient(new Uri(endpoint), new AzureCliCredential()) .GetChatClient(deploymentName) .AsIChatClient();

这里我们不过多介绍如何创建基础Agent,毕竟不是我们关注的重点,关于创建基础Agent的细节,可以参考之前的文章:

Agent Framework 系列|基础篇(30讲)

Sequential另外一种实现方式

Sequential 是最基础的一种编排模式。在该模式下,多个 Agent 会按照预定义的顺序依次执行,前一个 Agent 的输出会作为后一个 Agent 的输入。 在 Agent Framework 中,可以通过BuildSequential方法快速构建顺序执行的 Workflow,其定义如下:

public static Workflow BuildSequential(params IEnumerable<AIAgent> agents)

该方法接收一个 IEnumerable,用于指定执行链路中的 Agent 顺序,并返回一个 Workflow 实例。

示例

下面的示例中,多个翻译 Agent 会按照定义顺序依次执行:

var translationAgents = from lang in new[] { "法语", "中文", "西班牙语", "英语" } select GetTranslationAgent(lang, client); // 构建顺序编排 Workflow var workflow = AgentWorkflowBuilder.BuildSequential(translationAgents); // 执行 await RunWorkflowAsync( workflow, [new(ChatRole.User, "Hello,World!")] );

其实Sqeuential(顺序执行)是最简单的编排方式,其实本质和我们上节介绍的是一样的,BuildSequential 本质上只是对顺序编排的一种语法糖,用于简化线性执行链路的构建。

Concurrent:并发编排

Concurrent 是一种并发执行的编排模式。在该模式下,多个 Agent 会基于同一输入同时执行,各自生成结果。

创建并发 Workflow 的核心方法是BuildConcurrent,其定义如下:

public static Workflow BuildConcurrent(IEnumerable<AIAgent> agents, Func<IList<List<ChatMessage>>, List<ChatMessage>>? aggregator = null)

其中:

第一个参数 agents 用于指定参与执行的 Agent 集合 第二个参数 aggregator 是一个可选的聚合函数,用于在并发执行完成后对多个 Agent 的输出结果进行统一处理

聚合函数(Aggregator)

因为在 Concurrent 模式下,每个 Agent 都会独立生成自己的输出结果。

如果没有统一的聚合逻辑,系统就会得到多份彼此独立的结果,而无法形成最终统一输出。

Aggregator 的作用就是负责对这些结果进行收敛处理。

开发者可以在此基础上进行多种处理,例如:

  • 合并(Merge)

  • 筛选(Filter)

  • 排序(Rank)

  • 融合(Fusion)

如果未提供该参数,框架将使用默认策略对结果进行合并。

示例:并发翻译

下面的示例中,多个翻译 Agent 会同时处理同一输入,并通过聚合函数将结果合并:

var translationAgents = from lang in new[] { "法语", "中文", "西班牙语", "英语" } select GetTranslationAgent(lang, client); var workflow = AgentWorkflowBuilder.BuildConcurrent( translationAgents, results => { var merged = new List<ChatMessage>(); foreach (var agentOutput in results) { merged.AddRange(agentOutput); } return merged; }); await RunWorkflowAsync( workflow, [new(ChatRole.User, "Hello,World!")]);

输出结果如下:

总结

本节介绍了 Agent Framework 中两种最基础的 Agent 编排模式:Sequential 与 Concurrent。

Sequential(顺序编排)适用于存在明确上下游依赖的任务链路,多个 Agent 按顺序依次执行,前一个 Agent 的输出会传递给下一个 Agent。 Concurrent(并发编排)适用于多个 Agent 可以独立处理同一输入的场景,各 Agent 并行执行,最终通过 Aggregator 对结果进行统一收敛。

源代码地址

https://github.com/bingbing-gui/dotnet-agent-playbook/tree/master/src/ai-agent/Agent-Framework/33-WorkFlow-Concurrent-Agent

http://www.jsqmd.com/news/794358/

相关文章:

  • 《Java 100 天进阶之路》第1篇:编程语言类型有哪些?我心中的TOP1编程语言,什么是Java跨平台性?
  • JDBC实现数据库增删改查
  • Cursor智能体开发:Agent 模式
  • 把边界立起来,理解 ABAP Cloud 的几根主梁
  • LangChain详解
  • SpringBoot的服装商城系统毕设源码
  • Unity路网建模踩坑实录:OpenDRIVE解析中那些“反直觉”的几何参数(hdg, curvature到底怎么算?)
  • 渗透测试技巧(七)| 系统提权
  • 从 CDS 到服务契约,读懂 ABAP Cloud 的 Model-Driven Architecture
  • openwrt--by--myself
  • PyTorch 为什么现在要把 `Helion` 推到台前:它不是“又一个 Triton 替代品”,真正稀缺的是可移植 kernel authoring 这层
  • Java 开发问题:ArrayList 容量误解导致越界
  • 别再瞎学 C 语言了!真・胎教级入门教程 | NO.3 万字详解分支与循环 | 下篇
  • 从混淆矩阵到mIOU:手把手解析语义分割核心评价指标
  • Unity RenderTexture进阶:从刮刮乐到可擦写3D表面(Shader与LineRenderer实战)
  • 离线式SMPS输入整流器设计与优化指南
  • web项目工程搭建、Result封装类、部门功能的增删改查和日志技术Logback
  • ImageGlass深度解析:打造Windows平台高效图像浏览的实战指南
  • DISTINCT 带 WHERE 仍全表扫描?两层优化刀法拆解
  • 鸿蒙与 H5 通信使用的方法及原理
  • 如何彻底解决显卡驱动残留问题?Display Driver Uninstaller深度解析指南
  • 英伟达400亿投资帝国:从卖芯片到控生态,黄仁勋的AI全链路野心
  • PCI、PCIe与InfiniBand接口技术对比与应用解析
  • 百度网盘直链解析技术深度解析:突破限速壁垒的工程实践
  • 【测试方案_100 BASE-T1】快速掌握100BASE-T1 PMA物理层一致性测试
  • MySQL索引失效
  • MCP协议实战:outx-mcp-server如何安全扩展AI工具调用能力
  • 基于 Harmony6.0 的城市空气质量监测页面开发实践:ArkUI 页面构建与跨端能力深度解析
  • PX4 Firmware V1.14.4 开源支持
  • Claude代码自动模式:跳过权限的更安全方式 Claude Code auto mode: a safer way to skip permissions —— Anthropic