ProAgent: 从机器人流程自动化到代理流程自动化
从水车到机器人流程自动化(RPA),自动化技术在历史上不断发展,以解放人类免于繁重的任务。然而,RPA在需要类人智能的任务中仍面临挑战,特别是在工作流程构建的精细设计和工作流程执行中的动态决策方面。随着大型语言模型(LLMs)展现出类人智能,本文介绍了"代理流程自动化"(APA),这是一种突破性的自动化范式,使用基于LLM的代理进行高级自动化,通过将人工劳动转移到与构建和执行相关的代理来实现。我们随后实例化了ProAgent,这是一个基于LLM的代理,旨在根据人类指令制定工作流程,并通过协调专门的代理做出复杂决策。我们进行了实证实验,详细说明了其工作流程的构建和执行过程,展示了APA的可行性,揭示了由代理驱动的新自动化范式的可能性。
这是"代理流程自动化"论文的官方代码,你可以在这里下载我们的论文。
代码设置
1. 安装包
pip install -r requirements.txt
特别注意,我们使用的是Dev Day之前的OpenAI版本,所以你不能使用最新版本的OpenAI
2. 准备n8n
我们的项目使用自托管的n8n,你可以准备一个n8n环境并将ProAgent与真实世界的APP服务连接。
或者,你可以加载我们的记录来重现论文中报告的案例,无需n8n环境
准备n8n服务并非易事,你可能会遇到我们之前未遇到的一些问题或bug,你必须自行处理这些情况。例如,在中国连接你的APP账户与n8n时,你可能会遇到一些GFW问题
安装n8n
我们的项目使用自托管的n8n,你必须首先按照指南安装n8n。你可以在linux/macOS中使用以下命令
npm install n8n -g
自托管的n8n不支持https
服务。然而,我们已经建立了一个重定向服务,你可以暂时使用我们的服务(可能不是很稳定,我们将开源重定向服务代码)
export WEBHOOK_URL=https://n8n.x-agent.net/redirect/http%3A%2F%2Flocalhost%3A5678/
n8n
在n8n中连接你的账户
在启动ProAgent之前,你需要在n8n中注册或连接现有的APP。连接APP可能需要一些特定于APP的操作,你可以参照这里的n8n凭证指南
保存凭证
我们的代码库需要加载工作流ID和凭证ID。所以你必须先创建一些工作流和注册一些应用,然后执行以下命令从n8n服务解码凭证
n8n export:credentials --all --decrypted --output=./ProAgent/n8n_tester/credentials/c.json
将c.json
移动到./ProAgent/n8n_tester/credentials/c.json
n8n export:workflow --all --output=./ProAgent/n8n_tester/credentials/w.json
将w.json
移动到./ProAgent/n8n_tester/credentials/w.json
代码运行
运行依赖于config
,位于ProAgent/config.py
,你可以设置运行环境:
- development:这是论文中报告的模式。
- refine:从现有工作流加载,然后根据一些新请求优化工作流
- production:从现有工作流加载,你可以使用此模式重现ProAgent的现有运行
我们在./apa_case
中提供了论文中报告的案例,你可以使用production
模式直接加载运行
我们在production模式下禁用了测试变更功能,APA代码只会在运行结束时进行一次测试
相反,refine模式启用了测试变更功能
使用以下命令启动ProAgent,如果你使用development模式,记得先启动n8n
python main.py
注意,我们编写了一个可读的记录系统。所有ProAgent运行都会在
./records
中生成一个新记录,所以你可以在refine
或production
模式下从记录加载运行。
如果你使用development模式,必须先准备OpenAI密钥。在你的环境中设置以下变量
OPENAI_API_KEY, OPENAI_API_BASE
我们代码中的方法基本上与论文中描述的相同。但是在论文发布后,有些地方发生了变化:
-
HCI:我们观察到当ProAgent对问题有一些误解时会出现一些问题,所以我们开发了一个功能,使ProAgent能够通过新的函数调用(类似XAgent)向人类寻求帮助。这种主动方式鼓励ProAgent与人类一起构建和测试工作流。
-
n8n功能:n8n在我们工作的同时快速发布了一些新功能。我们的代码基本上是基于较旧版本的n8n构建的,我们在代码库中编写了一个
n8n-compiler
。因此,该编译器可能与较新版本的n8n不兼容。 -
OpenAI:ProAgent基于GPT4-0613。然而,OpenAI在Dev Day发布了GPT4-1106-preview,在函数调用方面有38%的改进。所以由于OpenAI的更新,你可能会发现ProAgent比我们的论文中表现更好~
引用
如果你觉得这个仓库有帮助,欢迎引用我们。
@article{ye2023proagent,
title={ProAgent: From Robotic Process Automation to Agentic Process Automation},
author={Ye, Yining and Cong, Xin and Tian, Shizuo and Cao, Jiannan and Wang, Hao and Qin, Yujia and Lu, Yaxi and Yu, Heyang and Wang, Huadong and Lin, Yankai and others},
journal={arXiv preprint arXiv:2311.10751},
year={2023}
}