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

Agent Framework 中的 Workflow Composition

在前面的文章中我们已经介绍了 Agent Framework 中如何定义流程节点以及 Workflow 的流式执行事件。如果你对这些概念还不太熟悉可以先回顾上一篇文章Agent Framework 定义流程节点以及节点的流式输出这一节我们来介绍 Workflow Composition工作流组合 的概念也就是如何把一个 Workflow 封装成一个可复用的 Executor再嵌入到另一个 Workflow 中使用。这种设计方式非常适合将一些通用流程模块化提高整体流程的复用性和可维护性。第一个流程定义一个可复用的文本处理流程先按照正常方式定义一个简单的 WorkflowUppercaseExecutor uppercase new(); ReverseExecutor reverse new(); AppendSuffixExecutor append new( [已处理]); var workflow new WorkflowBuilder(uppercase) .AddEdge(uppercase, reverse) .AddEdge(reverse, append) .WithOutputFrom(append) .Build();这个流程的执行逻辑很简单首先将输入字符串转换为大写, 其次将结果进行反转, 最后追加后缀 [已处理]通过.WithOutputFrom(append)我们显式指定 append 为当前 Workflow 的输出节点。这意味着当流程执行完成后对外返回的就是该节点的执行结果。将 Workflow 包装成 Executor当前这个 workflow 本身是一个完整流程还不能直接作为节点加入其他 Workflow。如果想复用它可以通过 BindAsExecutor() 将其封装成一个可执行节点ExecutorBinding subWorkflowExecutor workflow.BindAsExecutor(文本处理子工作流);将一个完整 Workflow 包装成一个普通 Executor这样它就可以像普通节点一样参与新的流程编排这也是 Workflow Composition 的核心能力之一。既然这个流程已经被封装成标准 Executor那么就可以像普通节点一样参与更大的流程编排。第二个流程在主流程中使用子工作流现在我们创建另一个 Workflow。这个主流程先给输入添加前缀然后调用刚才定义好的子流程最后再进行收尾处理PrefixExecutor prefix new(input ); PostProcessExecutor postProcess new(); var mainWorkflow new WorkflowBuilder(prefix) .AddEdge(prefix, subWorkflowExecutor) .AddEdge(subWorkflowExecutor, postProcess) .WithOutputFrom(postProcess) .Build();对于主流程来说subWorkflowExecutor 和普通 Executor 没有区别。它只关心输入和输出并不需要知道内部具体执行了哪些步骤。总结BindAsExecutor() 提供了一种 Workflow 复用机制它可以将一个完整的 Workflow 封装成标准 Executor从而参与更高层级的流程编排。这意味着 Workflow 不再只是一次性的执行链路而是可以像组件一样被组合、嵌套和复用。这种方式本质上是一种 组合式流程设计Workflow Composition能够有效降低主流程复杂度减少重复定义节点关系让主流程结构更清晰。源代码地址https://github.com/bingbing-gui/dotnet-agent-playbook/tree/master/src/ai-agent/Agent-Framework/37-Workflow-Composition

相关文章:

Agent Framework 中的 Workflow Composition

在前面的文章中,我们已经介绍了 Agent Framework 中如何定义流程节点,以及 Workflow 的流式执行事件。 如果你对这些概念还不太熟悉,可以先回顾上一篇文章: Agent Framework 定义流程节点以及节点的流式输出 这一节我们来介绍 Wor…...

藏文语音生成准确率从61.2%跃升至94.8%:ElevenLabs Fine-tuning私有数据集构建全流程(含217小时母语者录音标注规范)

更多请点击: https://intelliparadigm.com 第一章:藏文语音生成技术演进与ElevenLabs适配挑战 藏文作为具有复杂音节结构、声调隐含性及丰富上下文依赖的黏着语系文字,其语音合成长期受限于高质量标注语料稀缺、音素-音节映射不唯一、以及缺…...

基于CircuitPython的嵌入式游戏开发:从帧缓冲区到对象池的Flappy Bird实现

1. 项目概述:当Flappy Bird遇上CircuitPython如果你玩过经典的Flappy Bird,也捣鼓过像Raspberry Pi Pico这样的微控制器,那你有没有想过把这两者结合起来?我最近就用CircuitPython在RP2040开发板上完整复刻了一个“猫版”Flappy B…...

Instagram视频下载终极指南:三分钟掌握免费下载技巧

Instagram视频下载终极指南:三分钟掌握免费下载技巧 【免费下载链接】instagram-video-downloader Simple website made with Next.js for downloading instagram videos with an API that can be used to integrate it in other applications. 项目地址: https:…...

CircuitPython REPL与库管理:嵌入式开发的效率利器

1. CircuitPython REPL:你的嵌入式开发“瑞士军刀” 如果你玩过Arduino,肯定对“上传-编译-看结果”这个循环不陌生。每次改一行代码,都得重新编译、上传,然后盯着串口看输出,效率低得让人抓狂。CircuitPython带来的R…...

基于BLE信号强度的寻物游戏:用CircuitPython实现无线接近探测

1. 项目概述:一个用蓝牙信号“捉迷藏”的硬件游戏几年前我第一次接触Adafruit的Circuit Playground系列开发板时,就被它那种“开箱即玩”的理念吸引了。它把LED、按钮、传感器都集成在一块板子上,让你不用焊接就能快速验证想法。后来出的Circ…...

VS Code光标主题buen-cursor:提升开发者编码体验的视觉优化方案

1. 项目概述:一个为开发者定制的光标主题 如果你和我一样,每天有超过8小时的时间都泡在代码编辑器里,那么你一定对那个闪烁的光标再熟悉不过了。它可能是你思考的起点,也可能是你调试时目光的焦点。但你是否想过,这个…...

Linux内核C11升级:从C89到现代C语言的演进与挑战

1. 项目概述:一次内核语言的“心脏移植”手术最近Linux内核社区放出了一个重磅消息,未来计划将内核的C语言标准从使用了二十多年的C89/C90,升级到C11。这个消息一出,在开发者圈子里激起的讨论,不亚于当年从Python 2迁移…...

AI Agent无障碍审查:自动化集成WCAG标准与axe-core实践

1. 项目概述:一个为AI助手打造的“无障碍”审查官最近在折腾AI应用开发,特别是那些能自动处理任务的智能体(AI Agent),发现一个挺有意思但容易被忽略的问题:我们费尽心思让AI能写代码、分析数据、生成报告&…...

Claude-Code-Board:构建AI编程工作台,提升开发效率与协作

1. 项目概述与核心价值最近在GitHub上看到一个名为“Claude-Code-Board”的项目,作者是cablate。这个项目标题直译过来就是“Claude代码板”,听起来像是一个与AI编程助手Claude相关的工具。作为一名长期在开发一线摸爬滚打的程序员,我对这类能…...

树莓派5驱动128x128 LED矩阵:打造复古PICO-8游戏艺术墙

1. 项目概述与核心思路我一直对复古游戏和像素艺术情有独钟,也一直想在家里弄一个既有科技感又能玩的装饰品。最近,我把树莓派5、四块64x64的RGB LED矩阵面板和PICO-8幻想游戏机捣鼓到了一起,成功在墙上挂起了一个128x128像素的“游戏艺术墙”…...

开源无人机任务控制系统:微服务架构与自主飞行开发实战

1. 项目概述:一个开源的无人机任务控制系统如果你和我一样,玩过一段时间无人机,从最初的“一键起飞”到后来想实现一些自动化的航线飞行,你可能会发现,市面上成熟的任务规划软件(比如DJI的Pilot 2或一些地面…...

RTKLIB 2.4.3项目在Visual Studio 2019中的工程化配置:告别零散文件,打造清晰结构

RTKLIB 2.4.3项目在Visual Studio 2019中的工程化配置:告别零散文件,打造清晰结构 对于卫星导航领域的开发者而言,RTKLIB无疑是一个绕不开的开源项目。这个由日本学者Tomoji Takasu开发的GNSS定位软件,以其强大的功能和开放的架构…...

Docker里CentOS镜像yum报错?别慌,教你两步搞定‘appstream’仓库元数据下载失败

Docker中CentOS镜像yum报错?三步根治‘appstream’仓库元数据下载失败 当你兴致勃勃地在Docker中启动一个CentOS容器准备大展拳脚时,突然遭遇Failed to download metadata for repo appstream的红色报错,这种挫败感我深有体会。不同于物理机或…...

告别命令行启动!在Ubuntu 20.04上为Clion创建桌面快捷方式的保姆级教程

告别命令行启动!在Ubuntu 20.04上为Clion创建桌面快捷方式的保姆级教程 每次打开Clion都要在终端输入./clion.sh?作为从Windows转战Linux的开发者,这种操作简直让人抓狂。本文将彻底解决这个痛点,手把手教你用.desktop文件创建专业…...

2026产品经理学数据分析对升职的价值

一、数据分析能力对产品经理升职的重要性数据分析能力已成为产品经理的核心竞争力之一。掌握数据分析技能可以帮助产品经理更精准地决策,提升产品成功率,从而在职业发展中占据优势。二、数据分析在产品经理工作中的具体应用通过数据分析优化产品功能迭代…...

2026运营经理学习数据分析对职场能力提升的影响

一、数据分析在运营管理中的核心价值数据分析能力帮助运营经理优化决策流程,通过数据驱动的方法提升业务效率。掌握用户行为分析、市场趋势预测等技能,能够更精准地制定运营策略。数据可视化工具(如Tableau、Power BI)的应用&…...

AI编程助手用量追踪器:设计原理与本地化部署实践

1. 项目概述:一个专为编码代理设计的用量追踪器最近在折腾AI编程助手,发现一个挺实际的问题:当你把像Cursor、Claude Code、GitHub Copilot这类“编码代理”引入团队或者个人深度工作流后,怎么知道它们到底“吃”了多少资源&#…...

Java源码详解:深入Java并发之AtomicBoolean全景式解析——无锁布尔标志的精妙实现与云原生演进

概述 在高并发编程中,一个看似简单的布尔标志位(如 shutdown、initialized)也可能成为线程安全的隐患。传统的 volatile boolean 虽能保证可见性,却无法保证 “读-改-写” 操作的原子性。为解决这一问题,Java并发包&a…...

龙芯3A6000平台Loongnix系统部署实战:从固件更新到驱动配置全解析

1. 项目概述:一次国产平台上的系统部署实战最近,我拿到了一台基于龙芯3A6000处理器和7A2000桥片的国产台式机。对于长期在x86/ARM生态里打转的开发者来说,这无疑是一个充满新鲜感和挑战的“新玩具”。它的核心使命,就是运行龙芯社…...

训练篇第9节:FlashAttention深度解析(一)——原理与CUDA实现

从 O(N) 到 O(N),FlashAttention 用一记“IO感知”的巧劲,彻底解锁了Transformer处理超长序列的能力 前言 回溯整个训练篇,我们已经系统性地打怪升级:从显存优化的“三板斧”(梯度累积、激活重计算、碎片化管理),到分布式训练的并行策略(数据并行、模型并行、流水线并…...

HTTP客户端设计哲学:从axios到hoomanity的易用性演进

1. 项目概述:一个为人类设计的HTTP客户端在构建现代应用程序时,与外部API或服务进行HTTP通信几乎是每个开发者都会遇到的日常任务。无论是调用一个天气接口、上传文件到云存储,还是与自家的微服务进行数据交换,我们都需要一个可靠…...

【最新 v2.7.1 版本安装包】5 分钟搞定 OpenClaw,零基础无需命令一键部署保姆级教学

OpenClaw(小龙虾)Windows 一键部署保姆级教程 | 10 分钟搭建专属数字员工【点击下载最新OpenClaw安装包】 前言 2026 年开源圈热门 AI 智能体 OpenClaw(昵称小龙虾),GitHub 星标突破 28 万,凭借本地运行 …...

Sophia优化器:二阶曲率感知如何加速大模型训练与调参

1. 项目概述:当优化器遇上“二阶”智慧最近在复现一些前沿的论文实验时,我又一次被优化器的选择给卡住了。AdamW虽然稳,但在某些超大规模模型或特定任务上,总觉得收敛速度不够快,调参又是个玄学。就在我对着损失曲线发…...

VS Code Live Server完全指南:告别手动刷新,拥抱实时开发新时代

VS Code Live Server完全指南:告别手动刷新,拥抱实时开发新时代 【免费下载链接】vscode-live-server Launch a development local Server with live reload feature for static & dynamic pages. 项目地址: https://gitcode.com/gh_mirrors/vs/vs…...

[具身智能-766]:机器人在运动过程中需要实时定位,AMCL 每一次都需要全局撒粒子重搜吗?还是一旦定位后,后续的移动过程中,只需要局部匹配?

直白结论完全不需要每次全局撒粒子重搜定位成功稳定后,机器人全程只做局部小范围匹配,只有丢位置、被挪动时,才会重新全局撒粒子搜索。一、分两种状态1. 正常行走(已定位成功)粒子只聚集在机器人真实位置周边很小一片区…...

私有化部署智能助手:基于开源项目smarty-gpt的本地化AI对话平台搭建指南

1. 项目概述:当智能助手遇上本地化部署最近在折腾一个挺有意思的开源项目,叫citiususc/smarty-gpt。乍一看名字,你可能觉得这又是一个基于GPT的聊天机器人,没什么新意。但如果你深入了解一下,就会发现它的定位非常独特…...

PromptCraft-Robotics:基于LLM的机器人任务规划与安全控制实践

1. 项目概述与核心价值最近在机器人编程和AI应用领域,一个名为“PromptCraft-Robotics”的项目在开发者社区里引起了不小的讨论。这个项目由微软开源,其核心目标直指一个困扰许多开发者和研究者的痛点:如何让大型语言模型(LLM&…...

LoRA模型合并实战:多技能大模型融合指南与vLLM+Copaw工具链解析

1. 项目概述:LoRA模型合并的“瑞士军刀” 在AIGC(人工智能生成内容)领域,模型微调是让大语言模型(LLM)或扩散模型适配特定任务、风格或知识库的核心手段。而LoRA(Low-Rank Adaptation&#xff0…...

AI驱动命令行工具:用自然语言生成Shell命令,提升开发运维效率

1. 项目概述:一个能“读懂”你意图的智能命令行工具如果你和我一样,每天有大量时间泡在终端里,那么对命令行工具的效率追求几乎是永无止境的。敲命令、查参数、记路径、处理错误……这些琐碎的操作虽然基础,却实实在在地消耗着我们…...