Routine: 企业LLM代理系统的结构化规划框架
description摘要
在企业环境中部署代理系统通常面临几个挑战:通用模型缺乏领域特定的流程知识,导致计划混乱、缺少关键工具和执行稳定性差。为解决这些问题,本文提出了Routine,一个多步骤代理规划框架,具有清晰的结构、明确的指令和无缝的参数传递,以指导代理的执行模块执行多步骤工具调用任务,实现高稳定性。在真实企业场景的评估中,Routine显著提高了模型工具调用的执行准确性,将GPT-4o的性能从41.1%提升到96.3%,Qwen3-14B从32.6%提升到83.3%。我们进一步构建了遵循Routine的训练数据集,并对Qwen3-14B进行微调,在特定场景评估中准确率提高到88.2%,表明对执行计划的遵循能力有所提高。此外,我们采用基于Routine的蒸馏方法创建了特定场景的多步骤工具调用数据集。在该蒸馏数据集上微调使模型的准确率提高到95.5%,接近GPT-4o的性能。这些结果突显了Routine在蒸馏领域特定工具使用模式和增强模型对新场景适应能力方面的有效性。我们的实验结果表明,Routine提供了一种实用且可访问的方法来构建稳定的代理工作流,加速代理系统在企业环境中的部署和采用,并推进”AI for Process”的技术愿景。
warning问题背景与挑战
在企业特定场景中,代理系统的实施仍然面临诸多挑战:
- 缺乏领域特定知识:通用规划模型往往无法生成稳健的执行计划,容易忽略关键工具,特别是那些涉及权限验证和模型生成的工具。
- 工具描述不足:实际场景中的工具描述往往不充分,使模型难以选择合适的工具和参数,导致任务执行不稳定。
- 规划格式不统一:当前代理规划缺乏统一、结构化和完整的格式,导致代理经常以自定义格式传递给执行模块,执行模块必须在没有明确结构指导的情况下推断工具调用指令。
- 低代码平台的局限性:虽然低代码平台提供了更稳定的替代方案,但它们仍然严重依赖手动工作,限制了工作流开发的效率。
这些挑战使得在企业环境中构建稳定、高效的LLM代理系统变得异常困难,亟需一种结构化的规划框架来解决这些问题。
architectureRoutine框架介绍
Routine是一种结构化规划框架,旨在提高代理系统在企业环境中处理多步骤工具调用任务的稳定性。它通过提供清晰的步骤结构、明确的指令和无缝的参数传递,解决了通用模型缺乏领域特定流程知识的问题。
Routine组件与格式
一个Routine由多个特定的子任务执行步骤组成,这些步骤独立但通常相互关联。因此,Routine执行序列必须包含足够的信息,使代理能够可靠地遵循计划的步骤。完整的Routine组件及其描述如下:
步骤编号 (Step Number)
主流程中步骤的顺序编号。
步骤名称 (Step Name)
步骤目的或功能的简洁摘要。
步骤描述 (Step Description)
步骤的详细说明、执行条件和目标。
输入描述 (Input Description)*
执行此步骤所需参数的描述。
输出描述 (Output Description)*
成功执行后生成的输出参数。
步骤工具 (Step Tool)*
此步骤使用的相应功能工具;只调用一个工具。
对于包含分支逻辑的Routine,可以使用以下格式表示:
步骤 X. <步骤名称>: 此步骤执行分支条件检查:✅
• 分支 X-1 步骤 1. <步骤名称>: 如果 <条件>,执行 <步骤描述>,使用 <工具名称> 工具;
• 分支 X-1 步骤 2. <步骤名称>: <步骤描述>,使用 <工具名称> 工具;
• 分支 X-2 步骤 1. <步骤名称>: 如果 <条件>,执行 <步骤描述>,使用 <工具名称> 工具;
步骤 Y. <步骤名称>: <步骤描述>,使用 <工具名称> 工具;✅
步骤 Z. <步骤名称>: <步骤描述>,使用 <工具名称> 工具,并终止工作流;✅
AI驱动的Routine生成与优化
虽然通用模型可以在开放场景中有效地将问题分解为自然语言Routine,但在企业环境中,由于缺乏领域特定知识,它们难以直接可靠地生成上下文化的Routine。为了提高效率,专家可以提供特定场景计划的简单草稿提示。然后,这个草稿由配备专门提示模板的模型进行优化。优化过程包括将计划分解为详细的子步骤,将这些步骤映射到可用工具,最后输出结构化且全面的自然语言Routine,便于执行模块遵循。
你是一家公司的Routine工作流编写者。你可以根据用户提供的过程信息和可用工具编写操作步骤流程。
步骤以结构化的json和列表形式编写。按照以下方式编写流程:
[{"step": "1", "name": "xxxxx", "description": "xxxxxxxxxxxx", "tool": "tool_X", "type": "node"},
{"step": "2", "name": "xxxxx", "description": "xxxxxxxxxxxx", "tool": "tool_Y", "type": "node"}]
格式为json列表。每个步骤包含步骤编号、步骤名称、步骤操作描述、步骤输入、步骤输出、步骤工具和节点类型。
步骤的输入和输出不必非常具体。根据工具用自然语言编写可能的输入和输出。每个步骤只使用一个工具。
当在某个步骤中可能遇到分支条件判断时,按以下方式表达,并指出在什么条件下进入分支,使用什么工具;
{"step": "x", "name": "xxxxx", "type": "branch"},
{"step": "x-1_1", "name": "xx", "description": "xxxx", "tool": "tool_X1", "type": "branchnode"},
{"step": "x-2_1", "name": "xx", "description": "xxxx", "tool": "tool_X2", "type": "branchnode"},
{"step": "y", "name": "xxxxx", "description": "xxxxxx", "tool": "tool_Y", "type": "node"}
account_tree系统架构
基于Routine和其他优化机制,我们重新设计了代理系统的四个核心模块:规划模块、执行模块、工具模块和内存模块,创建了一个以Routine和多步骤工具调用机制为中心的代理系统。
规划模块与Routine
规划模块的主要目的是增强通用模型处理特定场景任务的能力,从而提高模型的指令遵循能力,增加执行准确性。它通过AI驱动的Routine生成和优化过程,与领域专家协作创建给定场景所需的Routine集合。
执行模块与小规模LLM
代理的执行模块负责接收规划模块提供的计划,并按照规定的路径输出工具调用指令。在我们的系统中,执行模块由一个更小的、专门的指令遵循模型驱动。这个模型只负责遵循规划模型的计划并输出相应的工具调用指令。执行模型不生成自然语言响应;相反,最后一步由专门的摘要工具生成最终摘要。
工具模块与MCP服务器
工具模块负责接收来自执行模块的工具调用指令,使用这些工具执行任务,并返回执行结果,从而为代理系统提供外部信息。在我们的系统中,我们使用MCP服务器作为工具模块。MCP服务器不仅作为执行模块的资源,还定义和管理代理可用的工具集。
内存模块:流程与变量
代理系统通常处理大量上下文,包括系统提示、可用工具列表和对话历史。这给模型带来了巨大负担:增加的上下文不仅导致更高的推理成本,还降低了模型的注意力准确性。因此,我们实现了两种形式的内存:长期流程内存和短期变量内存。
流程内存:在AI驱动的Routine生成和优化过程中,规划模块与领域专家协作创建给定场景所需的Routine集合。每个Routine组旨在处理特定的子任务。由于单个场景可能包含多个子场景及其对应的Routine,将整个集合放入执行模型的系统提示中会显著增加推理成本,并可能通过引入不相关信息降低准确性。因此,我们为代理系统建立了流程内存库。在部署前,专家用必要的Routine集合填充此内存库。当系统收到相关查询时,它根据Routine描述与用户任务之间的相似性计算从内存中检索适当的Routine,从而辅助执行模型。
变量内存:在多步骤工具调用过程中,执行历史逐渐积累。输入和输出参数通常占据上下文窗口的大部分,导致参数值过长、参数数量过多和标点符号冗余等问题。这些问题不仅增加了模型上下文窗口的压力,还提高了模型幻觉的可能性,也导致较小模型在传递参数时出现涉及括号、引号和转义字符的语法错误。为了有效解决这个问题,我们引入了变量内存机制。其核心功能是优化多步骤工具调用之间的参数传递。当工具调用返回过长的参数时,系统会自动将其存储在变量内存库中。然后,模型在填写工具参数时只需要提供相应的键,而不是完整的值。在收到工具调用请求后,内存模块在将参数传递给工具之前自动将这些键检索回其实际参数值。变量内存机制显著减少了上下文压力,也减少了token消耗并提高了语法准确性。
science实验结果
我们选择了一个真实的企业场景作为测试设置:部署在大型企业(拥有超过8,000名员工)中的HR代理应用。在这个场景中,HR用户与代理交互,查询公司内员工和部门的相关信息。HR代理场景包含七个子场景,每个子场景由不同的Routine指导,指导执行模型完成用户查询,因此需要七个对应的Routine。
总体准确率
总体准确率
准确率
准确率
Routine对LLM工具调用性能的影响
没有Routine指导时,所有基线模型表现不佳,总体准确率均不超过50%。这表明即使是顶级模型,完全依靠其自主规划能力来处理复杂的多步骤任务也会带来显著的不确定性。工具选择错误被确定为失败的主要原因,占所有错误的85%以上。这一发现揭示了模型在从大量可用工具(超过25个)中准确选择并将其组织成特定领域的有效执行链方面面临的巨大挑战。
引入Routine机制后,模型的端到端工具调用准确性显著提高。特别是,GPT-4-Turbo的性能接近完美,Qwen系列模型也显示出显著提升。这表明设置明确的Routine计划可以显著减少模型执行过程中的不确定性。因此,Routine机制可以有效弥补较小模型的规划缺陷,使它们在特定场景中实现接近顶级模型的性能。
模型训练的影响
实验结果表明,使用通用Routine遵循数据集进行微调可以有效提高模型在提供Routine时的执行准确性。与它们的基线相比,这些模型在w/ Routine场景中的所有指标都显示出显著改善。然而,在需要自主规划的No Routine条件下,这些微调模型的性能下降,表明存在权衡,它们的通用问题解决能力被削弱了。这是因为该策略强化了模型作为计划执行者的角色,但没有增强其作为自主规划者的核心能力。
相比之下,通过特定场景数据蒸馏进行微调在No Routine条件下实现了总体准确性的显著提高,性能甚至超过了原始模型在Routine指导下的性能。这表明对于较小模型,使用由Routine指导的教师模型蒸馏数据来训练,可以将过程知识直接内化到学生模型中,减少模型对显式计划的依赖。此外,当为这些已经专门化的模型提供Routine时,它们的准确性进一步提高,接近GPT-4o的水平,展示了高度稳定的执行。
消融研究
我们进行了一系列消融研究,以探索不同Routine机制设置对总体准确性的影响。这些研究主要集中在三个主要领域:Routine的组件、Routine注释方法和提供的Routine数量。
Routine组件的消融:我们研究了Routine的不同内部组件对模型最终执行准确性的具体影响,主要测试工具规范和详细输入/输出参数描述的效果。测试结果显示,添加详细的参数描述对不同能力模型的影响不同。对于能力较弱的模型,这种明确指导非常有效,改善了它们的上下文理解并显著减少了参数错误。对于高性能模型,额外的细节有助于在边缘情况下做出更稳健的判断,带来渐进的性能提升。有趣的是,Qwen3系列模型似乎对此添加不太敏感,表明对于某些架构,基线Routine已经包含足够的参数推断上下文,进一步的冗长可能会干扰模型。
AI优化机制的影响:在实践中,有不同的代理规划方式。使用手动Routine带来了高鲁棒性,但其注释成本高昂且不可扩展。因此,我们探索了AI驱动的优化作为实用的替代方案。该消融研究比较了不同细化程度的Routine:用户草稿的Routine、AI优化的Routine和手动注释的Routine。测试结果显示,AI优化步骤带来了显著且普遍的性能改进。GPT-4o的性能弥合了基本可用性和高可靠性之间的大部分差距。Qwen3系列模型也实现了稳定的改进。一些模型甚至使用AI优化的Routine比使用手动注释的基线获得了更高的准确性,可能是因为AI优化的格式更容易被这些模型理解。这表明使用AI优化用户草稿的Routine是企业场景中一条高效可行的途径。
Routine数量的消融:代理系统通常需要处理多个子场景,需要一个Routine库。将所有Routine加载到系统提示中会消耗大量的上下文窗口。为了解决这个问题,系统可以在内存模块中实现流程内存召回机制。然而,召回单个Routine容易引起精度问题,而召回多个Routine会引入来自相似但不完全适用的干扰Routine的噪声。该研究测试了模型在面对多个候选Routine时的稳定性。测试结果表明,为高性能模型提供单个正确的Routine最有效。当即使引入一个干扰项时,它们的准确性也会显著下降。然而,随着召回的Routine数量增加,准确性开始恢复。我们假设模型行为发生了转变:当面对少量冲突的Routine时,它可能尝试组合它们的步骤,导致错误。随着Routine数量增加,它可能切换到选择机制(类似于工具选择),识别并执行最相关的Routine,从而提高性能。
lightbulb结论与未来工作
在本文中,我们设计了Routine,一个结构化且全面的规划框架,用于指导代理系统中的多步骤工具执行。使用Routine,我们研究了明确定义的计划如何提高模型多步骤执行的准确性。我们还合成了一个训练数据集来增强Routine蒸馏能力,并通过基于Routine的蒸馏生成领域特定的多步骤工具调用数据集。我们的实验结果表明,Routine显著提高了执行模型的准确性,将Qwen3-14b模型的性能提高了约50%,从32.6%提高到83.3%。在为模型遵循Routine进行微调后,这一准确性进一步提高。此外,通过使用Routine蒸馏训练数据集进行特定场景微调,Qwen3-14b的性能已提高到95.5%,与GPT-4o相当,使较小模型能够在企业场景中实现高且稳定的准确性。总之,Routine机制显著提高了代理系统对企业场景的适应性。它使AI能够更有效地协助执行企业流程,从而实现”AI for Process”的技术愿景。
局限性
我们提出的Routine机制在增强代理系统通过特定场景内的多步骤工具调用解决任务的能力方面已证明其有效性。然而,当前的规划模型主要依赖领域专家提供的草稿来生成Routine流程,而执行模型大多通过知识蒸馏的指令微调进行适应。当企业环境中引入新工具或工作流发生变化时,这种依赖限制了系统的泛化能力,在代理自主性和适应性方面仍有改进空间。
未来工作
为了应对这一挑战,将基于RL的代理框架纳入工作流程,包括数据蒸馏和奖励建模机制,可能是一个可行的解决方案。该方法旨在提高规划模型的Routine生成能力以及执行模型的工具调用能力。用于冷启动的指令微调与强化学习的结合在提高基于场景的任务的泛化和适应性方面显示出有希望的潜力,并可能成为未来训练基于代理的语言模型的范式。
此外,我们旨在探索一个以Routine机制为中心的多代理框架,其中高级代理通过一组结构化的Routine流程和集中式交互协议协调多个专门代理。我们假设这种分层交互方案可以有效降低单个Routine计划的复杂性和长度,从而实现更稳定和智能的企业工作流执行。通过这一研究方向,我们的目标是开发更智能、更鲁棒和更具适应性的基于LLM的代理,能够高效利用工具解决动态企业环境中的复杂用户问题。