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

华为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去负责多个高难度的长上下文任务

相关文章:

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

论文标题 WorkTeam: Constructing Workflows from Natural Language with Multi-Agents 论文地址 https://arxiv.org/pdf/2503.22473 作者背景 华为,北京大学 动机 当下AI-agent产品百花齐放,尽管有ReAct、MCP等框架帮助大模型调用工具&#xff0…...

MYSQL数据库语法补充

一,DQL基础查询 DQL(Data Query Language)数据查询语言,可以单表查询,也可以多表查询 语法: select 查询结果 from 表名 where 条件; 特点: 查询结果可以是:表中的字段…...

Elasticsearch单节点安装手册

Elasticsearch单节点安装手册 以下是一份 Elasticsearch 单节点搭建手册,适用于 Linux 系统(如 CentOS/Ubuntu),供学习和测试环境使用。 Elasticsearch 单节点搭建手册 1. 系统要求 操作系统:Linux(Cent…...

在Windows搭建gRPC C++开发环境

一、环境构建 1. CMake Download CMake 2. Git Git for Windows 3. gRPC源码 git clone -b v1.48.0 https://github.com/grpc/grpc 进入源码目录 cd grpc 下载依赖库 git submodule update --init 二、使用CMake生成工程文件 三、使用vs2019编译grpc库文件 四、使用…...

[Python] 企业内部应用接入钉钉登录,端内免登录+浏览器授权登录

[Python] 为企业网站应用接入钉钉鉴权,实现钉钉客户端内自动免登授权,浏览器中手动钉钉授权登录两种逻辑。 操作步骤 企业内部获得 开发者权限,没有的话先申请。 访问 钉钉开放平台-应用开发 创建一个 企业内部应用-钉钉应用。 打开应用…...

编程题学习

acwing 826. 单链表 #include <iostream>using namespace std;const int N 100010;int idx, e[N], ne[N], head;void init() {head -1;idx 0; }void insert_head(int x) {e[idx] x;ne[idx] head;head idx ; }void delete_k_pos(int x, int k) {e[idx] x;ne[idx…...

Dev C++单个源文件和项目两种编程方式介绍

Dev C单个源文件和项目两种编程方式介绍 Dev-C 是一款免费、开源的 C/C 集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为初学者和中级程序员设计&#xff0c;具有简单易用、功能丰富等特点。 Dev C 支持单文件编程和项目编程两种方式。它们之间的主要区别在于如何组…...

用AbortController取消事件绑定

视频教程 React - &#x1f914; Abort Controller 到底是什么神仙玩意&#xff1f;看完这个视频你就明白了&#xff01;&#x1f4a1;_哔哩哔哩_bilibili AbortController的好处之一是事件绑定的函数已无需具名函数,匿名函数也可以被取消事件绑定了 //该代码2秒后点击失效…...

解决:Fontconfig head is null, check your fonts or fonts configurat

文章目录 问题解决方案安装字体依赖包强制刷新字体缓存验证是否生效 个人简介 问题 在使用 Java 环境部署或运行图形相关应用时&#xff0c;比如图片验证码&#xff0c;偶尔会遇到如下报错&#xff1a; Fontconfig head is null, check your fonts or fonts configurat意味当…...

this指针 和 类的继承

一、this指针 Human类的属性fishc与Human&#xff08;&#xff09;构造器的参数fishc同名&#xff0c;但却是两个东西。使用this指针让构造器知道哪个是参数&#xff0c;哪个是属性。 this指针&#xff1a;指向当前的类生成的对象 this -> fishc fishc当前对象&#xff08;…...

无锡无人机驾驶证培训费用

无锡无人机驾驶证培训费用&#xff0c;随着科技的迅速发展&#xff0c;无人机在众多行业中发挥着举足轻重的作用。从影视制作到农业监测&#xff0c;再到物流运输与城市规划&#xff0c;无人机的应用场景不断扩展&#xff0c;因此越来越多的人开始意识到学习无人机驾驶技能的重…...

反向查询详解以Django为例

以下给出两张表格 class User(AbstractUser):mobilemodels.CharField(max_length11,default0,uniqueTrue,verbose_name手机号)email_activemodels.BooleanField(defaultFalse,verbose_name邮箱验证状态)default_address models.ForeignKey(Address, related_nameusers, nullT…...

我们如何思考AI创业投资

&#x1f3ac; Verdure陌矣&#xff1a;个人主页 &#x1f389; 个人专栏: 《C/C》 | 《转载or娱乐》 &#x1f33e; 种完麦子往南走&#xff0c; 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ 声明&#xff1a;本文作者转载&#xff0c;原文出自…...

详解在 MySQL 中建索引时的注意事项

MySQL 中建索引时的注意事项 1. 索引的必要性与设计2. 复合索引与列顺序3. 索引数量与维护4. 索引类型选择5. 特殊注意事项 1. 索引的必要性与设计 使用场景&#xff1a;优先为在 WHERE、JOIN、ORDER BY 和 GROUP BY 中频繁使用的列创建索引。合理的索引设计能显著提升查询效率…...

LabVIEW 中数字转字符串常用汇总

在 LabVIEW 编程环境里&#xff0c;数字与字符串之间的转换是一项极为基础且重要的操作&#xff0c;广泛应用于数据处理、显示、存储以及设备通信等多个方面。熟练掌握数字转字符串的方法和技巧&#xff0c;对编写高效、稳定的程序起着关键作用。接下来&#xff0c;我们将全面深…...

蓝桥杯 C/C++ 组历届真题合集速刷(二)

一、0ASC - 蓝桥云课 &#xff08;单位换算&#xff09;算法代码&#xff1a; #include <iostream> using namespace std; int main() {printf("%d",L);return 0; } 二、0时间显示 - 蓝桥云课 &#xff08;单位换算&#xff09;算法代码&#xff1a; #inclu…...

【接口自动化_数据格式与类型】

在HTTP接口的自动化测试中&#xff0c;请求的数据格式和内容类型是两个密切相关但又有所区别的概念。以下是它们的分类和详细说明&#xff1a; 一、数据格式 数据格式是指请求体&#xff08;Body&#xff09;中数据的组织方式&#xff0c;常见的数据格式有以下几种&#xff1…...

JavaScript/React中,...(三个连续的点)被称为 扩展运算符(Spread Operator) 或 剩余运算符(Rest Operator)

const processOrder (order) > {const tax order.total * 0.1;const finalAmount order.total tax;return { ...order, tax, finalAmount }; }; 解释一下&#xff0c;特别&#xff1a;...?在JavaScript/React中&#xff0c;...&#xff08;三个连续的点&#xff09;被称…...

网络带宽测速工具选择指南iperf3 nttcp tcpburn jperf使用详解

简介 本文主要介绍内网&#xff08;局域网&#xff09;与外网&#xff08;互联网&#xff09;的网络带宽测速工具下载地址、选择指南、参数对比、基本使用。 测速工具快速选择指南 测速工具下载地址 iperf 官网下载链接&#xff1a;iperf.fr/iperf-download.php该链接提供了不…...

源代码保密解决方案

背景分析 随着各行各业业务数据信息化发展&#xff0c;各类产品研发及设计等行业&#xff0c;都有关乎自身发展的核心数据&#xff0c;包括业务数据、源代码保密数据、机密文档、用户数据等敏感信息&#xff0c;这些信息数据有以下共性&#xff1a; — 属于核心机密资料&…...

网络安全小知识课堂(十二)

SQL 注入&#xff1a;一行代码如何毁掉整个数据库&#xff1f; 引言 想象一下&#xff1a;用户在一个搜索框中输入关键词&#xff0c;网站却突然崩溃&#xff0c;所有数据被清空 —— 这不是电影情节&#xff0c;而是 **SQL 注入攻击&#xff08;SQL Injection&#xff09;**…...

PyCharm使用Flask启动项目后,如何修改文件,开启启动加载或是热启动,不用重启项目,直接生效。

PyCharm使用Flask启动项目后&#xff0c;每次修改完文件比如html、py文件都要重启项目才生效&#xff0c;在测试时很不方便&#xff0c;如何设置热启动&#xff0c;修改完文件后直接生效了&#xff1f; 解决方法 1、app.py文件&#xff0c;设置debugTrue。开启调试模式。 开…...

SpringCloud微服务(一)Eureka+Nacos

一、认识 微服务技术对比&#xff1a; SpringCloud&#xff1a; 版本匹配&#xff1a; 二、服务拆分以及远程调用 消费者与提供者&#xff1a; Eureka&#xff1a; 搭建EurekaServer&#xff1a; Ribbon负载均衡&#xff1a; 实现原理&#xff1a; IRule&#xff1a;规则接口…...

【Java设计模式】第4章 简单工厂讲解

4. 简单工厂模式 4.1 简单工厂讲解 定义:由一个工厂对象决定创建哪种产品类的实例,属于创建型模式,但不属于GoF 23种设计模式。适用场景: 工厂类负责创建的对象较少。客户端仅需传入参数,无需关心对象创建逻辑。优点: 客户端只需传入参数即可获取对象,无需知道创建细节…...

深度学习天崩开局

李沐大神的d2l包导入&#xff0c; 这玩意需要python311版本&#xff0c;我现在版本已经313了&#xff0c;作为一个天生要强的男人&#xff0c;我是坚决不向低版本低头的。 然后我就研究啊&#xff0c;各种翻资料啊&#xff0c;然后deepseek加豆包都翻烂了&#xff0c; 最终所…...

【详细图文】在VScode中配置python开发环境

目录 一、下载安装VSCode 1、官网下载VSCode 2、安装VSCode 3、汉化vscode &#xff08;1&#xff09;已自动下载汉化版插件 &#xff08;2&#xff09;未自动下载汉化版插件 二、 下载安装Python 1、官网下载Python 2、安装Python &#xff08;1&#xff09;双击打开…...

Unity遮挡剔除与视锥剔除混合策略技术详解

一、核心剔除技术原理对比 1. 视锥剔除&#xff08;Frustum Culling&#xff09; 原理&#xff1a;根据物体包围盒与摄像机视锥体的相交测试&#xff0c;移除非可见物体 优势&#xff1a; 计算成本低&#xff08;平均0.1ms/万物体&#xff09; 完全自动执行 局限&#xff1a…...

Java面试黄金宝典34

1. 主键索引底层的实现原理 定义 主键索引是数据库中用于唯一标识表中每一行记录的索引&#xff0c;常见的底层实现是 B 树结构。B 树是一种平衡的多路搜索树&#xff0c;由内部节点和叶子节点组成。内部节点只存储索引键和指向下一层节点的指针&#xff0c;不存储实际数据&am…...

VR体验馆如何用小程序高效引流?3步打造线上预约+团购裂变系统

VR体验馆如何用小程序高效引流&#xff1f;3步打造线上预约团购裂变系统 一、线上预约的核心价值&#xff1a;优化体验&#xff0c;提升转化​​ ​​减少客户等待时间​​ 通过小程序预约功能&#xff0c;客户可提前选择体验时段&#xff0c;避免到店排队。数据显示&#…...

使用 node.js 和 MongoDB 编写一个简单的增删改接口 demo

文章目录 前言一、环境准备二、项目结构三、环境变量四、连接数据库3.1. connect.js 文件 五、定义数据模型5.1. BannerModel.js 文件 六、实现 server 接口6.1. server.js 文件 七、服务文件7.1. app.js 文件 八、感谢 前言 Mongoose 是一个在 Node.js 环境中操作 MongoDB 数据…...