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

将Agent技术的灵活性引入RPA,清华等发布自动化智能体ProAgent

近日,来自清华大学的研究人员联合面壁智能、中国人民大学、MIT、CMU 等机构共同发布了新一代流程自动化范式 “智能体流程自动化” Agentic Process Automation(APA),结合大模型智能体帮助人类进行工作流构建,并让智能体自主处理工作流中涉及复杂决策与动态处理的环节,进一步提升自动化的程度,提高效率,将人类从繁重的劳动中解放出来。

图片

  • 项目地址:https://github.com/OpenBMB/ProAgent

  • 论文地址:https://github.com/OpenBMB/ProAgent/blob/main/paper/paper.pdf

在历史的长河中,自动化是人类技术发展的主要动力,帮助人类从复杂、危险、繁琐的劳动环境中解放出来。自早期农业时代的水车灌溉,到工业时代的蒸汽机,人类一直在不断寻求更加先进的自动化技术,从而解放自身于繁重的工作。

随着信息时代的到来,软件作为信息处理、存储和通信的基础成为了人类生产生活密不可分的一环,从而催成了机器人流程自动化(Robotic Process Automation, RPA)技术。其通过人工编制规则将多个软件协调成一个固化的工作流(Workflow),通过模拟人交互的方式来和软件交互实现高效执行。

图片

图 1 机器人流程自动化 RPA 与智能体流程自动化 APA 对比

RPA 利用软件机器人或称为 “BOT” 来模拟和执行重复性、规则性的任务,从而解放人力资源,提高工作效率。RPA 的应用范围非常广泛。很多企业(包括银行、保险公司、制造业、零售业等各个行业)常利用 RPA 机器人来自动执行一些常规和繁琐的任务,例如:数据录入、数据提取、数据处理。通过自动化任务,RPA 可以大幅度减少错误率,并且能够在 24*7 不间断地执行任务,从而提高了业务的可靠性和响应能力。

根据市场研究,RPA 市场正在迅速增长并取得巨大成功。Gartner 预测,2023 年全球 RPA 市场收入将达到 33 亿美元,相比 2022 年增长 17.5%。这表明了企业对于 RPA 的强烈需求和认可。

但是,RPA 仅能替代简单、机械的人力工作,一些复杂的流程仍旧依赖人工:

  1. 编写 RPA 工作流本身需要繁重的人类劳动,成本较高。

  2. 复杂任务非常灵活,通常涉及动态决策,难以固化为规则进行表示。

图片

图 2 RPA 与 APA 的效率与智能对比

幸运的是,最近 AI 领域兴起的大模型智能体技术(Large Language Model based Agents, LLM-based Agents)也许给自动化技术创造了新的可能性。有没有可能将 Agent 技术的灵活性引入到 RPA 领域中,来进一步减少人的参与呢?

该团队的研究探讨了大模型智能体时代下新型自动化范式 “智能体流程自动化” Agentic Process Automation (APA)。和传统 RPA 相比,在 APA 范式中,Agent 可以根据人类的需求自主完成工作流构建,同时其可以识别人类需求中需要动态决策的部分,将自动编排进工作流中,并在工作流执行到该部分时主动接管工作流的执行完成相应复杂决策。

为了探索 APA 的可能性,该研究工作实现了一个自动化智能体 ProAgent,其可以接收人类指令,以生成代码的方式构建工作流,同在工作流中引入 DataAgent 和 ControlAgent 来在工作流中实现复杂数据处理与逻辑控制。ProAgent 的研究展现了 APA 在大模型智能体时代下的可行性,也揭示了 LLM 时代下,自动化技术的崭新可能性。

方法介绍

在 RPA 中,工作流是由一系列工具调用组成的图状结构:节点代表一个原子化的工具调用(如 Gmail、Twitter、Google Sheets),而边代表了执行的逻辑顺序(承接、分支、循环)。一个工作流往往包含了对于一个或一类任务的所有先验知识,其中包含解决问题的路径,遇到异常时的处理逻辑等等。因此人编写固化出来的工作流往往是非常稳定周全、非常高效的。

图片

图 3 智能体工作流描述语言示例

在 ProAgent 中,由于 LLM 本身在代码数据中进行预训练,学习到了较强代码能力,该研究便基于代码的智能体工作流描述语言 Agentic Workflow Description Language。该语言使用 JSON 实现对工作流中数据的组织与管理,选择 Python 语法实现对工作流的逻辑控制,将控制流中的跳转、循环等直接通过 Python 语法进行表征,同时将工作流中的工具调用封装为 Python Function。于是对于 ProAgent,工作流构建任务便转化为代码生成任务。当接收到人类指令时,ProAgent 便编写相应的 Agentic Workflow Description Language,从而实现了工作流自动化构建。

图片

图 4 结合 DataAgent 和 ControlAgent 的智能体工作流描述语言示例

复杂的现实任务中通常会涉及动态决策,单纯的 Python 式的逻辑控制规则以及 JSON 式的数据组织形式在面对灵活的需求时便无能为力,此时便需要引入 agent。因此,该研究工作进一步定义出了两种 Agent 操作:

1. DataAgent:对于一个复杂的数据处理需求,工作流构建时会使用自然语言来描述处理的任务,然后在执行时会初始化一个 DataAgent,其会基于该自然语言描述自主处理并完成该数据处理任务。 

图片

2. ControlAgent:对于难以用规则表示的逻辑控制规则,工作流构建时使用自然语言对控制逻辑进行描述,然后在运行时会初始化一个 ControlAgent,其会基于该自然语言描述自主选择工作流后续需要执行的分支。

图片

ProAgent 使用 ReACT 模式逐步构建工作流,其共包含四个工作流构建步骤:

  1. Action_Define:决定在工作流中添加什么工具。

  2. Action Implement:将工具的输入 / 输出参数转化为 JSON 结构,同时将工具的调用封装为 Python 函数。

  3. Workflow Implement:定义一个 mainWorkflow 函数,用以组织整个 workflow 的逻辑控制与数据处理。

  4. Task Submit: 当 ProAgent 构建完 workflow 时以该操作标识构建过程结束。

图片

图 5 ProAgent 工作流构建过程示例

另外,为了优化 ProAgent 的效果,又引入了几个优化技巧:

  1. 1.Testing-on-Constructing:在构建过程中,ProAgent 会在一次修改工作流之后对工作流进行测试,以保证工作流的正确性。

  2. Function Calling:工作流构建的所有操作均封装为了 GPT-4 的 Function,从而提高对工作流构建过程的控制。

  3. Chain-of-Thought:ProAgent 在编写工作流代码时,需要对于每个 function 都要给出注释 comment 和一个编写 plan,从而提高 ProAgent 工作流构建的性能。

工作流执行过程基于 Python interpreter。给定一个工作流,其对应的 mainWorkflow 函数用作为工作流执行的入口来开始整个执行过程。执行过程遵循 Python 代码执行规则,即按照顺序逐行执行。一旦 mainWorkflow 函数返回,工作流执行就成功完成了。

可行性验证

为了验证 Agentic Process Automation 的可行性,该研究使用 OpenAI GPT-4 作为基础模型,并以一个开源的 RPA 平台 n8n 作为载体,实现了上述的 ProAgent。同时设计了一个需要兼顾灵活与效率的任务:这是一个典型的商业场景,需要从 Google Sheets 中提取各种业务线的营利数据,同时根据业务是否属于 2B 或是 2C,决定后续的行为。一旦确定业务线为 2C,就会向 Slack 频道发送一条消息。而对于 2B 的业务线,则会向相应的经理发送一封电子邮件,其中包括对业务线的评估和简要的盈利概况。

图片

图 6 任务 Instruction 展示

对于该任务,首先它是一个重复性的任务,对于多条产品线,应该走相同的处理流程。其次,分辨一个业务线是 2C 还是 2B 很难通过规则判断,需要涉及 Agent 动态决策来判断后续的工作流执行操作。最后,根据撰写业务线的评估邮件需要一定的智能,所以需要 Agent 的介入。

在 ProAgent 生成中,对于该任务,编写出了一个包含四个原子操作,一个 DataAgent 和一个 ControlAgent 的工作流。总体过程大致如下图所示:

图片

图 7 ProAgent 工作流构建过程展示

可以看到,ProAgent 通过自主编写代码的方式,自动完成了工作流的构建过程,其中无需涉及人工介入。在需要判断业务线是 2B 还是 2C 时,ProAgent 引入了 ControlAgent 来做判断,ControlAgent 的 Prompt 被设置为 “Decide Whether the business line is toC or toB”。当业务线为 2B 时,ProAgent 还引入了一个 DataAgent,其任务设置为 “Write a email of the business line of profit, together with your suggestion”,从而利用 agent 的智能来根据不同业务线的实际情况来撰写邮件。

在工作流被编写、固化下来以后,工作流就会根据不同的数据自动分支到不同的逻辑进行高效地数据处理了。

图片

图 8 ProAgent 工作流执行过程展示

在处理 2C 业务线数据时,ControlAgent 可以根据业务线描述判断出当前业务线的类型,选择调用 Slack 工具。当遇到 2B 业务线数据时,DataAgent 可以撰写邮件发到相应经理的邮箱中。

总结

该研究提出了大模型时代下新的自动化范式 ——Agentic Process Automation,和传统 Robotic Process Automation 技术相比,其可以实现工作流构建的自动化,以及工作流执行时动态决策的自动化。该研究进一步实现了 ProAgent 并通过实验揭示了大模型智能体在自动化中的可行性与潜力。相信未来大模型智能体技术会帮助人类实现更高层次的自动化,将人类从各种繁重的劳动中解放出来。

团队相关研究

目前研究团队已在大模型智能体方向有诸多研究,包括:

  • XAgent:超强大模型智能体应用框架,可自行拆解复杂任务,并高效执行。

  • 项目地址:https://github.com/OpenBMB/XAgent

  • ChatDev:多智能体协作开发框架,让多个不同角色的智能体进行协作,自动化开发软件应用。

  • 项目地址:https://github.com/OpenBMB/ChatDev

  • AgentVerse:大模型驱动的智能体通用平台,招募各种各样的 agent 专家,共同帮助用户解决复杂任务。

  • 项目地址:https://github.com/OpenBMB/AgentVerse

文章转载自机器之心,如有侵权,请联系删除。

原文标题:《被OpenAI带火的Agent如何解放人力?清华等发布ProAgent》

相关文章:

将Agent技术的灵活性引入RPA,清华等发布自动化智能体ProAgent

近日,来自清华大学的研究人员联合面壁智能、中国人民大学、MIT、CMU 等机构共同发布了新一代流程自动化范式 “智能体流程自动化” Agentic Process Automation(APA),结合大模型智能体帮助人类进行工作流构建,并让智能…...

高济健康:数字化科技创新与新零售碰撞 助推医疗产业优化升级

近日,第六届中国国际进口博览会在上海圆满落幕,首次亮相的高济健康作为一家专注大健康领域的疾病和健康管理公司,在本届进博会上向业内外展示了围绕“15分钟步行健康生活圈”构建进行的全域数字化升级成果。高济健康通过数字化科技创新与新零…...

SystemVerilog学习 (5)——接口

一、概述 验证一个设计需要经过几个步骤: 生成输入激励捕获输出响应决定对错和衡量进度 但是,我们首先需要一个合适的测试平台,并将它连接到设计上。 测试平台包裹着设计,发送激励并且捕获设计的输出。测试平台组成了设计周围的“真实世界”,…...

vue3插槽的使用

什么是插槽 Vue 3 插槽(Slots)是一个强大的工具,用于在组件之间传递内容和逻辑。通过使用插槽,我们可以将子组件中的内容插入到父组件中的特定位置。本篇文章将总结 Vue 3 插槽的基本用法、特点以及使用场景。 基本用法 插槽分为…...

IPTABLES问题:DNAT下如何解决内网访问内部服务器问题

这个问题,困扰了我几年了,今天终于得到解决。 问题是这样的,在局域网内部有一台服务器,通过IPTABLES的网关提供对外服务,做过IPTABLES网关的人都知道,这很容易做到,只要在网关机器上写一个DNAT…...

异步任务线程池——最优雅的方式创建异步任务

对于刚刚从校园出来的菜鸡选手很容易写出自以为没问题的屎山代码,可是当上线后就会立即暴露出问题,这说到底还是基础不够扎实!只会背八股文,却不理解,面试头头是道,一旦落地就啥也不是。此处,抛…...

uniapp 跨页面传值及跨页面方法调用

uniapp 跨页面传值及跨页面方法调用 1、跨页面传值 使用全局方法监听uni.$emit、uni.$on、uni.$off 发布、监听、移除 methods: {addFun(){let data [1]uni.navigateBack({ // 返回上一页delta: 1})uni.$emit(successFun,{data}) // 传值} }监听页 onLoad() {uni.$on(succ…...

无线物理层安全大作业

这个标题很帅 Beamforming Optimization for Physical Layer Security in MISO Wireless NetworksProblem Stateme![在这里插入图片描述](https://img-blog.csdnimg.cn/58ebb0df787c4e23b0c7be4189ebc322.png) Beamforming Optimization for Physical Layer Security in MISO W…...

目标检测标注工具AutoDistill

引言 在快速发展的机器学习领域,有一个方面一直保持不变:繁琐和耗时的数据标注任务。无论是用于图像分类、目标检测还是语义分割,长期以来人工标记的数据集一直是监督学习的基础。 然而,由于一个创新性的工具 AutoDistill&#x…...

关于SPJ表的数据库作业

打字不易,且复制且珍惜 建表 use 库名;create table S( --供应商 SNO char(6) not null, SNAME char(10) not null, STATUS INT, CITY char(10), primary key(SNO));create table P( --零件 PNO char(6) not null, PNAME char(12)not null, COLOR char(4), WEIGHT…...

【Nacos】配置管理、微服务配置拉取、实现配置热更新、多环境配置

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Nacos 一、nacos实现配置管理1.1 统一配置管…...

HTML5学习系列之网页图像

HTML5学习系列之网页图像 前言定义图像定义流定义图标 总结 前言 学习记录 定义图像 标签可以直接把图像插入网页中。 <img src"xx" alt"xx"/>src&#xff1a;显示图像的URLalt&#xff1a;设置图像的替代文本height、width&#xff1a;图像的高度…...

go语言学习之旅之Go语言数据类型

学无止境&#xff0c;今天学习Go 语言数据类型 Go&#xff08;或Golang&#xff09;是一种静态类型语言&#xff0c;这意味着变量的数据类型必须显式声明&#xff0c;并且在运行时不能更改。以下是Go中的一些基本数据类型&#xff1a; 这里仅介绍最常用的类型 数值类型: int: …...

Day49 力扣单调栈 : 739. 每日温度 |496.下一个更大元素 I

Day49 力扣单调栈 : 739. 每日温度 &#xff5c;496.下一个更大元素 I 739. 每日温度第一印象看完题解的思路什么是单调栈?我的总结 实现中的苦难感悟代码 496.下一个更大元素 I第一印象看完题解的思路实现中的困难感悟代码 739. 每日温度 今天正式开始单调栈&#xff0c;这是…...

实用篇-ES-RestClient查询文档

一、快速入门 上面的查询文档都是依赖kibana&#xff0c;在浏览器页面使用DSL语句去查询es&#xff0c;如何用java去查询es里面的文档(数据)呢 我们通过match_all查询来演示基本的API&#xff0c;注意下面演示的是 match_all查询&#xff0c;也叫基础查询 首先保证你已经做好了…...

2023年第九届数维杯国际大学生数学建模挑战赛

2023年第九届数维杯国际大学生数学建模挑战赛正在火热进行&#xff0c;小云学长又在第一时间给大家带来最全最完整的思路代码解析&#xff01;&#xff01;&#xff01; 下面是数维杯B题思路解析&#xff1a; 前面三问主要是绘制趋势图、散点图等这些比较简单的统计学分析方法…...

TensorRT基础知识及应用【学习笔记(十)】

这篇博客为修改过后的转载&#xff0c;因为没有转载链接&#xff0c;所以选了原创 文章目录 一、准备知识1.1 环境配置A. CUDA DriverB. CUDAC. cuDNND. TensorRT 1.2 编程模型 二、构建阶段2.1 创建网络定义2.2 配置参数2.3 生成Engine2.4 保存为模型文件2.5 释放资源 三、运…...

[内存泄漏][PyTorch](create_graph=True)

PyTorch保存计算图导致内存泄漏 1. 内存泄漏定义2. 问题发现背景3. pytorch中关于这个问题的讨论 1. 内存泄漏定义 内存泄漏&#xff08;Memory Leak&#xff09;是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放&#xff0c;造成系统内存的浪费&#xff0c;导致…...

【Git学习二】时光回溯:git reset和git checkout命令详解

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;Git等软件工具技术的使用 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要…...

多维时序 | MATLAB实现PSO-GRU-Attention粒子群优化门控循环单元融合注意力机制的多变量时间序列预测

多维时序 | MATLAB实现PSO-GRU-Attention粒子群优化门控循环单元融合注意力机制的多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-GRU-Attention粒子群优化门控循环单元融合注意力机制的多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MAT…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...

Linux【5】-----编译和烧写Linux系统镜像(RK3568)

参考&#xff1a;讯为 1、文件系统 不同的文件系统组成了&#xff1a;debian、ubuntu、buildroot、qt等系统 每个文件系统的uboot和kernel是一样的 2、源码目录介绍 目录 3、正式编译 编译脚本build.sh 帮助内容如下&#xff1a; Available options: uboot …...