升级节点而非任务:降低大语言模型工作流成本的六级阶梯
为何在有向无环图与每项任务一个智能体之间做选择会提高大语言模型的成本,以及如何通过包含合同、范围和预算的节点级升级机制将成本控制在一定范围内。
许多构建基于大语言模型管道的团队在开发每个新功能时都会首先面临一个架构层面的问题:该功能应作为固定的有向无环图运行,还是作为自主智能体运行?这看似只是常规的设计评审问题,但实际上在整体任务层面给出答案会无形中确定其他所有步骤的成本上限——这个上限由最不确定的那一步决定。本文将阐述这一现象的成因,随后提出一个六级升级机制,每个层级都从最经济的可行方案开始,只有当明确约定的条件无法满足时才向上升级。读完本文后,你应该能够拆解自己的“智能体”任务,判断其中哪些部分是确定性的,同时为其余部分的成本设定明确的限制。
整个示例中使用的产品具备两项功能:它既能转换常见的文件格式,又能实现“输入文件、输出文件”的工作流处理,这两种功能既可以通过一键式流程完成,也可以通过一个根据日常语言编写的请求来生成相应流程的构建工具来实现。文件转换功能运行十分稳定,而工作流部分则不断出现是否应采用有向无环图还是智能代理的问题,直到一年多后才意识到问题出在概念本身上。
起点:事先对每项任务进行分类
每种一键式工作流的初始处理流程都十分系统:首先研究应用场景,撰写规范,然后再由专人决定该流程是采用有向无环图形式还是智能代理形式来实现。
开放式的任务则交由智能代理处理
那些被认定为真正开放性任务的解决方案是在 LangGraph 上通过单个 ReAct 智能体来实现的。参考案例是以简历为驱动的求职过程:用户上传简历后,系统需找出值得申请的职位,并为每个职位生成定制化的简历。这涉及用多种语言撰写简历、根据关键词匹配无法体现的维度(如从家到公司的通勤时间、团队构成、日常工作内容、薪资范围)来为候选人匹配职位,最终生成定制文档。由于无法提前确定所需步骤数量,因此这堪称智能体的典型应用场景。
可预测的任务则由静态有向无环图处理
有序且可预测的工作流程被转化为固定的图表。典型的应用案例是将视频转换为字幕:提取音频轨、进行语音识别、将文本转录按时间分段,最后生成字幕文件。甚至一些可选的额外步骤也能提前列明,比如整理原始文本以提高可读性,或核查演讲中的事实陈述是否准确。由于所有决策都可以在执行开始前做出,因此整个流程图也能在执行之前就绘制完成。
这种分工看似合理,也得以实施。问题在于成本始终没有下降。
为何“代理税”永远存在
导致成本曲线呈平缓状态的机制其实很普通,正因如此才容易被忽视。
当某个任务被标记为“智能体”时,其中的每一步都会在智能体循环中执行并产生相应成本。ReAct循环只有在其工具的架构位于上下文窗口中时才能选择动作。虽然可以压缩对话内容、总结中间状态并筛选检索到的文档,团队也确实做了这些工作,但每轮的最小成本依然不变,因为这个最小值就是那些工具架构的集合,且会在每一轮都被重新发送。此外,如果希望智能体保持灵活性,也不能简单地减少其工具数量:它之所以被称为智能体,正是因为没人能提前知道某次执行需要哪些工具。
一种解决方法是预测每项任务所需的相关工具子集。这确实是一个可行的研究方向,但需要相应的投入以及性能良好的预测模型。而该团队想要的则是某种可以明确指定的方案:一种其成本由构建方式决定而非预测精度决定的架构。如果您对预测路径感兴趣,针对大规模AI智能体的渐进式工具发现方法对此进行了深入探讨。
通过重新研读相关文献并结合数月的实际运行日志,我们得出了一个简单到近乎令人尴尬的结论:
不确定性存在于单个节点中,而非整个任务之中。
DAG或智能体决策是针对每个任务单独做出的。但一个任务只不过是一系列步骤的集合,而在几乎所有被标记为“智能体”的任务中,大多数步骤都是完全确定性的。在任务层面做出决策意味着每个节点都要承担图中最不确定节点带来的影响。
将求职工作流程拆解开来,其规律就很明显了:
- 从PDF简历中提取结构化字段完全不需要模型推理。
- 判断简历使用的语言同样是机械化的操作。
- 查找家庭住址并计算通勤时间只需调用一个工具。
- 检索空缺职位则需要访问求职API。
- 评估某个岗位与某位候选人的匹配度只需发起一次模型请求,使用固定提示词且无需任何工具。
最后一个任务仅对应一个节点。整个系统一直都在为处理它而支付代理费用。
升级阶梯
解决办法是不再提前做决定。根据新规则,每个工作流都从最便宜且可行的层级开始,只有那些失败的单个节点才会升级。总共有六个层级。
- L0:仅工具调用,不使用大语言模型。如果某个请求可以通过确定性操作完全解决,则无需运行任何模型。在产品中,这就是现有的快速路径,且仍属于独立的处理流程。成本仅为工具调用费用。
- L1:由普通代码构成的静态有向无环图。这是一个具有分支和辐射结构的真实图形,但所有节点都是普通代码。同样不涉及模型调用。
- L2:带有单次调用LLM节点的静态DAG。图的结构保持不变,但某些节点现在会使用模型处理一次任务,且上下文范围极为有限。实际上,这些节点仅能获取直接输入的内容:没有对话历史、没有全局状态,最关键的是也没有工具结构信息。在此层级,模型表现为纯函数而非智能体。计算成本为O(n)次调用,其中n在运行开始前就已确定。
- L3:有限次迭代的优化循环。L2节点最多可按照固定上限N次尝试执行合同规定的任务。是否接受输出由合同而非模型来判定。计算成本为O(n·N),该数值同样在运行开始前即可确定。
- L4:不透明节点变为子代理。那些无法提前确定的节点会拥有真正的ReAct循环,但其可用工具仅限于该节点本身,且步数预算也是固定的。没人能预测它会消耗多少步数,正是这种不可预测性使得必须为它设定明确的上限。
- L5:完全重新规划。由于原计划本身有误,因此需要重建整个图结构。这是成本最高的操作,应当尽量避免使用。
合约、范围与预算
仅靠分类体系只能提供更规范的术语而已。实际上要让这一层级结构正常运作,需要三种机制:
- 合约触发层级提升。每个节点都会明确说明可接受的结果形式,只有当检测结果不符合该标准时,才有理由提升到更高的层级。
- Scope使得L4层级仍具成本效益。子代理的工具模式存在于该节点的上下文中,不会在运行过程中出现在其他地方,因此模式相关的开销仅在本地产生。
- Budget为层级设置上限。从L2层以上的每一层都有最大尝试次数或步骤数,达到限制后该节点要么放弃,要么继续向上级汇报。
一种实用的思考方式是:合约负责回答“这够好吗?”,Scope负责回答“该节点能看到和调用什么?”,而Budget则负责回答“它最多可以花费多少资源尝试?”。如果缺少其中任何一项,相应层级的可预测性就会丧失。如需了解更多关于在代码中控制L3和L4这类循环的方法,请参阅TypeScript中的受限代理循环。
逐步提升字幕处理流程的层级
大多数处理流程都不会进入L1阶段。该流程会提取音频、进行语音识别、按时间戳分割内容并生成SRT文件,整个过程无需调用任何模型。之后会对照相关规范检查输出结果:各字幕片段不得重叠,单行字符数不得超过限制,且阅读速度需低于设定阈值。音频质量良好的普通讲话视频可以通过检测,整个处理过程所需的计算资源不超过ffmpeg加上一次语音识别运算。
当某个字幕片段违反行长度或可读性规则时,仅该片段会被送入L2阶段。此时会对该片段及其相邻片段进行一次模型调用。完整的文字记录、视频元数据以及各类工具的架构规范都不会被纳入输入提示中,整个处理流程的其他部分也不会受到影响。
L3的合理性源于术语规范。在配有术语表的技术报告里,即使进行过一次修正,术语检查仍可能持续失败,因此该节点需要根据术语表的检查结果对输出内容进行最多两次优化,直到结果符合要求为止。
L4仅出现在一个场景中:验证报告中所提出的论点是否正确。这需要通过搜索来完成,但没人能确定具体需要多少次搜索。因此这个节点会变成一个子代理,其可用工具仅限于搜索和获取信息,且操作步骤也受到限制。围绕它的子标题处理流程依然属于机械化的操作。
L5用于处理计划从一开始就错误的情况。假设该文件实际上是一段屏幕录制内容,其含义体现在屏幕上的文字中,而音频只是辅助元素。无论如何优化各个节点,都无法挽救基于语音识别构建的计划,因此该图结构会转而以OCR为基础重新构建。
逐步提升的求职流程
正是这个例子改变了团队的思维方式,因为它显然具有智能体的特征。
L1的功能比预期更为全面:解析简历、检测语言类型、进行地理编码并计算通勤时间,以及获取招聘信息。所有这些功能都通过普通代码实现。
L2负责匹配工作。对于每份候选职位,系统会调用一次限定范围的模型,该模型以简历摘要及对应的职位描述作为全部上下文,从而在相关维度上输出结构化的评分结果。这相当于对一个成本较低的模型进行O(n)次调用,且完全不需要任何工具架构;它取代了那种需要在每一步都重新加载完整工具集才能处理同一份列表的智能体。
L3负责重新撰写简历,在此阶段,合同的作用从成本控制转变为安全控制。合同要求重写后的简历中的每一条信息都必须能追溯到原始资料,禁止虚构任何雇主或日期,并对简历长度设限。如果初稿违反了这些规则,则最多进行两次修改,之后流程即终止。这是一种超越成本层面的有效机制:通过核查信息来源的合同,能够以低成本且确定性的方式防止模型夸大某人的职业经历。
L4是一个单一节点:负责研究特定公司的团队及其近期发展动向。它本质上是开放式的,但会受到结构上的限制。
当类别本身不匹配时,就会触发L5级别。试想一位物理学家申请量化金融岗位:经过解析后的职位类别与该候选人的实际背景契合度很低,因此需要重新构建匹配方案而非进行微调。
最显著的结果是,原本被归类为智能体任务的工作实际上有大约80%属于L1和L2级别的工作。这并非通过调整提示词就能解决的,而是使得整个工作流程的成本曲线发生根本性变化。
分级系统为文件到文件型产品带来的优势
文件输入与输出的工作流程存在大量重叠。几乎任何两种处理流程的前80%部分看起来都十分相似。然而用户所关注的质量完全体现在剩余的20%中,而这部分内容每次都会有所不同。这就是定制化的陷阱:要么工程师为每项任务手动设计细节,导致产品无法扩展;要么跳过这些细节,结果便是质量平平。
“阶梯式方法”为摆脱这一陷阱提供了出路。虽然仍然需要进行定制,但它是通过合同规定的升级决策来实现的,而非依靠工程师的额外工作时间。这样一来,就能实现针对每项任务的优化,而无需为每项任务投入大量人力。
一个显而易见的对比对象是Anthropic和OpenAI提供的通用智能体,它们的功能结构很可能类似。那些系统是封闭的,因此属于推理而非真正具备知识,但可以合理推测,它们的大量工作都用于在各项任务中保持结构一致性,并且拥有更多数据来支撑这一点。Ladder则是通过特定的工作流程设计来实现类似的结构,而非依赖庞大的数据集,因此可视为同一理念的低成本版本。
何时不值得使用Ladder
该方法的前提是能够编写出有意义的契约。如果某个节点的输出质量只能由人工判断,那么就不存在可靠的触发机制,整个流程就会退化为猜测。此外,它还需要额外的协调机制;对于只有两三个步骤且处理量较小的流程,使用一次范围明确的模型调用可能更为简单且成本更低。
先推出最基础的部分
当每个工作流都负责接收文件并返回文件时,文件处理层就会处于所有功能之下。上述提到的每一个环节最终都会简化为机械性的操作:打开容器、提取文本、保持表格结构不变。该层中没有任何不确定因素,因此在那里进行推理纯粹是浪费资源,而且由于其可预测性,它显然也是最先需要发布的组件。
它以开源Python SDK的形式发布,基于Apache-2.0许可证在PyPI上提供,可在Claude Code中作为MCP服务器使用。通过uv或pip即可一键完成安装。
uv add convilyn # or: pip install convilyn
该SDK可在本地将文档转换为Markdown格式,实现26种图像格式之间的转换以及PDF页面的重新排序,整个过程无需账户登录且不涉及网络连接。当某项任务确实需要模型来处理内容,比如扫描页、照片或音频文件时,系统会将其发送到托管的云服务,此时才开始计费。
那种划分方式就是以产品设计而非内部架构来体现的阶梯结构。免费的本地处理路径为L0:当普通的确定性代码能够完成任务时,无需加载任何模型,只有在对低成本处理方式显然无效后才会转入付费路径。根据该项目说明,离线转换器不需要账户、密钥或配额,也不会发送任何遥测数据;有关安装细节及确切的功能列表,请查看仓库中的当前README文件,因为这两者都可能会发生变化。
工作流引擎的当前状态
在撰写本文时,工作流与构建器功能仍在稳定中,而此处描述的重新构建工作正在其背后进行,团队预计大约一个月内可以完成。其中的理由值得参考:与其推广即将被淘汰的工作流引擎并让用户重复迁移两次,不如暂缓使用它。
现有技术及相关工作
这些单独的技术要素并无新意,此前都已有过相关描述。尚未见过的似乎是这种特定组合:由合同触发节点级升级、以工具范围作为成本控制手段、允许递归扩展但需控制预算,且应用于文件到文件的工作负载。以下研究涵盖了这些要素。
从简单开始,仅在需要时增加复杂性
- Anthropic于2024年12月发布的《构建高效智能体》一文区分了工作流与智能体的概念,推荐采用最简单的可行方案,仅在必要时增加复杂性。该文提出的“阶梯式方法”正是基于这一原则,在设计阶段不是为每个任务整体执行,而是逐节点依次执行。
仅升级出错的组件
- ADaPT论文(全称为按需分解与规划,发表于2024年NAACL会议)从整体计划出发,只有当某个子任务执行失败时才会递归地进一步分解该子任务,而成功的部分则保持不变。这是目前公开文献中对L4触发机制最接近的描述,尽管其中并未从成本角度进行阐述。
合约、有限恢复机制与升级规则
- 2026年4月发表在arXiv上的一篇关于将大语言模型智能体作为结构化图来执行的调度器理论框架,采用了带有节点级输出合约的静态有向无环图,以及由重试、本地修复和完全重新规划组成的三阶段恢复协议,并设定了明确的升级准则。该框架认为,由于类型检查不够充分,基于模型的节点应当通过合约进行验证;同时,重试非幂等操作时需要控制预算范围。它有意未包含递归子图扩展功能,而这正是L4所涉及的内容。
工具范围作为主要成本控制因素
- Skillflow使用YAML格式定义有向无环图,由引擎而非模型来遍历这些图结构。其输入输出操作受能力限制:每个步骤仅能获取其所请求的上下文,而任何不在其协议范围内的工具都不会出现在其架构中。该框架得出的结论是,较小的角色专用上下文足以让低成本模型发挥作用,这一观点与L2论点一致。
已投入实际应用的分阶段阶梯结构
- PraisonAI在其智能体SDK中提供了升级功能,该功能定义了四个逐步递进的阶段:无需使用任何工具或进行规划即可直接给出答案;使用启发式工具但不需要额外调用模型;仅进行一次受限的模型调用;最后是具备工具、子智能体及验证功能的完全自主处理流程。这大致相当于将L0到L4的层级压缩为四个步骤。
- NVIDIA NeMo Switchyard的升级路由器在模型选择上也采用了类似的结构,而非基于架构来决定:首先使用较弱的模型,当检测到问题持续存在时再切换为更强的模型。
其他领域的类似结构
- Agentic设计模式(systemdesign.one,2026年4月)将工作流与智能体之间的选择称为“升级阶梯”,并建议优先采用最简单且能完成任务的方案。
- Vercel发布的关于生产环境下的AI智能体评估框架的指南(2026年7月)采用“成本最低优先”的评估原则:先运行能够检测到特定故障的最低成本检查,只有当该检查无法发现问题时才进行更高级别的处理。
核心要点
- 针对每项任务决定“DAG还是智能体”有助于让每个步骤都为最不确定的环节提供保障。
相关阅读
- 在A2A协议上设计多智能体系统:节点、内存与治理 —— 一种基于A2A协议构建的多智能体系统参考架构,涵盖了智能体模块、内存类型、编排机制、安全风险以及设计检查清单。
- LangGraph实践:状态、节点、边以及五种智能体工作模式 — 了解如何使用注解和归约器定义LangGraph状态,用边连接节点,以及如何在JavaScript中实现全部五种核心智能体工作模式。