华为AI-agent新作:使用自然语言生成工作流

论文标题

WorkTeam: Constructing Workflows from Natural Language with Multi-Agents

论文地址

https://arxiv.org/pdf/2503.22473

作者背景

华为,北京大学

动机

当下AI-agent产品百花齐放,尽管有ReAct、MCP等框架帮助大模型调用工具,可以初步实现【需求】->【任务规划】,但在实践中我们或多或少还是往会去编排工作流——单纯依靠大模型本身的任务理解与规划能力,难以生成满足复杂业务需要的执行计划;

在这里插入图片描述

于是本文设计了一种新的工作流生成框架,旨在提高大模型理解任务并调用工具的准确性

本文方法

本文提出WorkTeam框架,对原本由一个LLM规划器承担的职责进行了拆分:

一、监督agent

理解并拆分用户问题,生成解决问题的子步骤(高层计划),委派另外两个agent生成工具编排结果与可执行的工作流,并检查它们是否满足用户意图、步骤是否完整正确。如果发现问题,监督者可以要求返工,或者尝试其他解决思路​

二、协调agent

基于监督agent委派的子任务,生成工具编排结果。具体地,协调agent会规划调用两个工具:

组件筛选工具: 基于SentenceBERT嵌入模型,从组件库中检索出与当前指令最相关的一组候选组件
组件编排工具: 基于一个尺寸小一些的大模型,根据用户指令和筛选出来的候选组件,生成符合逻辑的组件调用序列

三、填充agent

专注于填充工具调用序列的参数,它也会调用两个工具:

模板查找工具: 根据编排流程中的每个组件,从工具库中提取该组件的参数说明以及一个空白参数模板​(列出了该组件所需参数和上默认值,目的是降低参数填充任务的复杂度)
参数填充工具: 根据模板查找的结果,利用LLM分析用户query和监督agent的指示,从中提取出所需要的具体信息并填入对应的参数模板,最终得到一个可执行的工作流

整个流程如下图所示:

在这里插入图片描述

这样的拆分看起来十分简单,但它其实抓住了当前单一大模型难以生成准确工作流的痛点。考虑我们在多agent系统中对大模型规划器的期望:

  1. 理解用户问题并规划解决思路;
  2. 理解工具并编排工具调用过程;
  3. 填充符合工具协议的参数;
  4. 处理不符合预期的结果

这些任务都有一定难度,并且在执行过程中一般会产生极长的上下文,揉在一起交给大模型的是一个难度很大的任务,于是导致实践中不得不像打补丁一样,添加各种人工书写的业务逻辑以解决大模型的纰漏。

这时候将上述职能拆分到多个agent中,便可以大大降低每个大模型处理任务的难度

实验结果

一、测试数据

由于目前没有公开可用的NL2Workflow基准数据集,作者构建了HW-NL2Workflow,包含3695个真实的企业工作流样本,用于训练和评估(也是此工作的贡献之一)

在这里插入图片描述

二、测试对象

实验组: 三个agent都基于Qwen2.5-72B-Instruct构建;组件编排工具和参数填充工具使用LLaMA3-8B-Instruct实现,并在上述数据集上进行了微调;组件过滤工具则使用了微调后的SentenceBERT
对照组: GPT-4o、Qwen2.5-72B-Instruct、Qwen2.5-7B-Instruct、LLaMA3-8B-Instruct(单规划器),以及一个针对NL2Workflow场景的RAG

三、测试指标

精确匹配率(EMR): 模型生成的整个工作流与参考答案完全一致的比例,包括组件的种类、顺序以及所有参数值都要匹配。这是一个严格的“全对”指标,只有工作流毫无差错地重现参考方案才算成功
流程编排准确率(AA): 只关注组件序列的正确性,忽略参数填充是否正确。如果模型选用了正确的组件并按正确顺序排列,即视为该样本在编排上是正确的,即使某些参数值有误也不影响此指标。该指标反映模型理解用户指令中逻辑步骤的能力。
参数填充准确率(PA): 评价参数层面的正确性。它统计生成的所有组件参数中,有多少比例的参数值与参考答案一致。计算方式为匹配的参数数量除以测试集中参数总数,不关心流程是否正确

四、测试结果

单Agent模型在复杂任务上表现不佳——即便是最强的GPT-4,其EMR也仅有18.1%,Qwen-72B为12.7%,而较小模型(Qwen-7B、LLaMA-8B)几乎完全失败;

检索增强的基线(引用现有工作的RAG-NL2Workflow方法)后,性能有所改善,而本文提出的WorkTeam效果大幅领先

在这里插入图片描述

总结

本文提出的workTeam方法,尽管有更大的计算开销(需要3个大尺寸LLM),但从效果上来看极大提升了LLM生成复杂工作流的准确性;

agent的拆分简单易实现,实际上就是对大模型规划器职责进行分治,不让一个LLM去负责多个高难度的长上下文任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于软件bug描述

软件缺陷(Defect),常常又被叫做Bug。 所谓软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。IEEE729-1983对缺…

【元表 vs 元方法】

元表 vs 元方法 —— 就像“魔法书”和“咒语”的关系 1. 元表(Metatable):魔法书 是什么? 元表是一本**“规则说明书”**,它本身是一个普通的 Lua 表,但可以绑定到其他表上,用来定义这个表应该…

Spring Boot 通过全局配置去除字符串类型参数的前后空格

1、问题 避免前端输入的字符串参数两端包含空格,通过统一处理的方式,trim掉空格 2、实现方式 /*** 去除字符串类型参数的前后空格* author yanlei* since 2022-06-14*/ Configuration AutoConfigureAfter(WebMvcAutoConfiguration.class) public clas…

C语言核心知识点整理:结构体对齐、预处理、文件操作与Makefile

目录 结构体的字节对齐预处理指令详解文件操作基础Makefile自动化构建总结 1. 结构体的字节对齐 字节对齐原理 内存对齐:CPU访问内存时,对齐的地址能提高效率。操作系统要求变量按类型大小对齐。对齐规则: 每个成员的起始地址必须是min(成…

VBA+BOS单据+插件,解决计划任务跟踪的问题之二:导入ERP

第二步,就是要将拆分好的任务导入ERP了 1、将建一个BOS单据叫“任务池”,大概是这样的 然后在拆分工具中进行导数据,点击“数据导出准备”,跳转到“导入ERP”界面,然后点“获取数据”,将拆分好的数据转过来…

使用uglifyjs对静态引入的js文件进行压缩

前言 因为有时候js文件没有npm包,或者需要修改,只能引入静态的js,那么这个时候就可以对js进行压缩了。我其实想通过vite、webpack等插件进行压缩的,可是他都不能定位到public目录下面的文件,所以我只能自己压缩了。编…

蓝桥杯 web 水果拼盘 (css3)

做题步骤: 看结构:html 、css 、f12 分析: f12 查看元素,你会发现水果的高度刚好和拼盘的高度一样,每一种水果的盘子刚好把页面填满了,所以咱们就只要让元素竖着排列,加上是竖着,排不下的换行…

差分音频转单端音频单电源方案

TI LMV321介绍 TI的LMV321是单通道的低压轨到轨输出运算放大器,适用于需要低工作压、节省空间和低成本的应用。 其中,芯片设计中的轨到轨输出(Rail-to-Rail Output) 是指通过特定的电路设计,使芯片(如运算…

Pandas 库

Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够…

Vue 3 的<Teleport>功能与用法

Vue 3 的 <Teleport> 功能与用法 1. 基本用法 <Teleport> 是 Vue 3 的一个内置组件&#xff0c;允许将组件的内容渲染到 DOM 中的任意位置&#xff0c;而不改变其逻辑结构。以下是基本用法&#xff1a; 定义目标 DOM 元素&#xff1a;<div id"teleport-…

MySQL随机获取记录之方法(The Method of Randomly Obtaining Records in MySQL)

MySQL中如何随机获取一条记录 随机获取一条记录是在数据库查询中常见的需求&#xff0c;特别在需要展示随机内容或者随机推荐的场景下。在 MySQL 中&#xff0c;有多种方法可以实现随机获取一条记录&#xff0c;每种方法都有其适用的情况和性能特点。在本文中&#xff0c;我们将…

synchronized锁升级详解

synchronized锁升级详解 synchronized是Java中实现线程同步的关键字&#xff0c;它在JVM内部实现了锁的升级机制&#xff0c;从偏向锁到轻量级锁再到重量级锁&#xff0c;这种优化是为了减少锁操作带来的性能开销。 1. 锁的四种状态 Java对象头中的Mark Word会记录锁的状态&…

C++函数如何返回多个参数

在编程中&#xff0c;我们经常会遇到需要函数返回多个值的场景。虽然 C 函数不能直接返回多个参数&#xff0c;但通过一些间接的方法&#xff0c;我们可以轻松实现这一需求。本文将详细介绍几种常见的实现方式&#xff0c;并分析它们的优缺点和适用场景。 1. 引言 在 C 中&…

最新版PhpStorm超详细图文安装教程,带补丁包(2025最新版保姆级教程)

目录 前言 一、PhpStorm最新版下载 二、PhpStorm安装 三、PhpStorm补丁 四、运行PhpStorm 前言 PhpStorm 是 JetBrains 公司推出的 专业 PHP 集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为提升 PHP 开发效率设计。其核心功能包括智能代码补全、实时语法错误检…

【杂谈】Godot4.4导出到Android平台(正式导出)

学博而后可约&#xff0c;事历而后知要。 目录 一、准备二、Gradle构建三、配置Java SDK四、配置Android SDK五、配置密钥 一、准备 本文在前文【杂谈】Godot4.4导出到安卓平台&#xff08;调试导出&#xff09;的基础上&#xff0c;进行正式导出。调试导出并不是真正的编译导…

隔行换色总结

功能效果展示&#xff1a; 第一种思路&#xff1a; 使用数组&#xff0c;将数组的内容渲染到页面上&#xff0c;序号也就是将数组的下标输出到第一个td上&#xff0c;将数组的内容输出到第二个td上&#xff0c;&#xff08;使用拼接字符串&#xff09; 具体操作&#xff1a; …

使用文本翻译API打破语言障碍

一、引言 在当今全球化的商业环境中&#xff0c;企业面临着前所未有的语言挑战。无论是出口商品、引进技术&#xff0c;还是与国际客户进行交流&#xff0c;语言障碍始终是一个亟待解决的问题。文本翻译API作为一款高效、稳定的工具&#xff0c;支持多种语言的翻译&#xff0c…

【unity游戏开发入门到精通——动画篇】Animator2D序列帧动画

考虑到每个人基础可能不一样&#xff0c;且并不是所有人都有同时做2D、3D开发的需求&#xff0c;所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要讲解C#的基础语法&#xff0c;包括变量、数据类型、运算符、…

深入解析 Jenkins Agent 的 .jnlp 启动文件

&#x1f9e9; 深入解析 Jenkins Agent 的 .jnlp 启动文件 在 Jenkins 中&#xff0c;通过 JNLP&#xff08;Java Network Launch Protocol&#xff09;方式连接 Agent 是一种常见且灵活的方式。你可能曾见过类似这样的命令&#xff1a; java -jar agent.jar -jnlpUrl file:/…

定积分__

practice makes perfect 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 若被积函数在积分区间上是可积的&#xff0c;那么变限积分函数在这个区…