1.背景介绍
一句话概括
在现代社会,面对复杂的业务流程和多种操作手法,人工智能(AI)、机器学习(ML)和自动化技术(RPA)等技术正在成为各行各业的标配,能够自动化地解决重复性任务,缩短工作周期,提高效率。然而在实际生产环境中,仍存在很多手动、半自动或人工操作环节,这就需要一个能够快速准确地完成业务流程任务的自动化平台来减少操作成本,提升工作效率。
RPA在企业应用场景中的落地
基于AI、ML、RPA技术,目前在企业应用场景中已经得到广泛应用。这些技术主要用来解决以下三个问题:
1.重复性任务自动化:企业每天都要处理成百上千个重复性任务,例如审批表单、合同审批、入库清单审核、内部文档归档、数据报表生成、财务审计等。AI、ML、RPA技术可以将繁琐的手工流程自动化,极大的提升了工作效率。 2.系统运维自动化:对于复杂、长期的系统运维过程,采用人力手动进行管理的成本非常高昂,而使用AI、ML、RPA技术进行自动化管理,可以显著降低人工操作成本。 3.业务流程自动化:在日益复杂的业务中,企业经常会遇到各种各样的业务流程需求,不同阶段的操作手法可能不同,因此,人工操作仍然是大量存在的。然而,借助于AI、ML、RPA技术,企业可以利用数据驱动的方式快速准确地完成各种业务流程任务。
GPT-3的创新与改变
近年来,NLP领域也出现了一些颠覆性的进展,其中最突出的就是GPT-3的问世,它是一种基于Transformer的无监督语言模型,通过巨大的训练数据和强大的计算能力,完全克服了传统的RNN结构,将自然语言推理模型提升到了前所未有的水平。
随着GPT-3的不断壮大,越来越多的人开始认识到其潜力,他们纷纷表示将其应用到企业级应用的自动化场景中,希望通过问答方式获取用户需求,并由GPT-3模型自动生成业务流程任务。
本文的目标读者
本文以GPT-3作为工具,结合RPA实现业务流程任务自动化,面向金融行业,从业务角度出发,带领大家进入一个全新的RPA开发模式,教大家如何以更快的速度、更精准的执行力,来完成公司内业务流程中的重复性任务。
2.核心概念与联系
业务流程任务
业务流程任务指的是企业内部为了顺利运行,需要按规定的流程走完的一系列操作。比如,销售人员购买商品后,需要提交订单申请;提交订单申请后,需要等待相关部门审核后,才能生成凭证;如果业务风险较高,还需要加入风控流程,甚至是停工整顿等严重事故排除流程,总之,就是一系列业务操作,需要有专门的人去协调完成。
RPA(Robotic Process Automation)
RPA是指通过计算机编程,模拟人的行为,在一定范围内按照预先定义好的脚本来执行工作,最终达到自动化程度更高的目的。RPA通过提取文本、图像、音频、视频、数据库、业务规则等信息进行数据抽取、过滤、转换、分析、存储等一系列处理,实现了信息自动化、流程自动化、作业自动化,极大地加速了工作效率,降低了操作成本。
GPT-3
GPT-3是一款由OpenAI推出的无监督语言模型,基于transformer结构,能够产生令人惊叹的生成效果。由于开源社区的发展及其规模,GPT-3模型的发展速度异常迅速,当今已经出现了基于海量数据的GPT-3-Large模型,能够输出超过十亿种可能性的文本。
AI自动化和业务流程任务的关系
业务流程任务和AI自动化的关系,可以简述为“机器替代人”,即把人工依赖的部分交给机器去做,以提高工作效率,降低人力成本,同时节省时间,并减少人为因素的影响。如今,GPT-3模型可以理解为一种形式的AI自动化,可以用于处理业务流程任务,生成业务文档、关键信息、电子文件等等。
GPT-3-Large模型与业务流程任务的关系
GPT-3-Large模型的推出和普及,使得人们可以在短时间内创建属于自己的GPT-3模型。本文以GPT-3-Large模型为基础,开发出具有自动业务流程任务执行能力的RPA应用。
3.核心算法原理和具体操作步骤以及数学模型公式详细讲解
算法原理
- 获取用户输入指令,经过自然语言处理,转换为机器可读命令。
- 通过用户指令查询业务数据,将业务数据保存到历史记录数据库中。
- 在历史记录数据库中搜索最符合要求的历史业务数据。
- 将查询到的业务数据传入GPT-3模型,并获取模型生成的业务流转任务。
- 执行业务流转任务,并返回结果。
操作步骤
配置云服务器
首先,你需要配置一台云服务器,并安装好Win10操作系统。如果你没有特殊需求,可以使用亚马逊AWS免费的EC2云服务器。如果你想使用别的云服务商,可以按照相应的教程安装系统。
之后,你需要安装Python3环境,并配置好PyCharm编辑器。你可以从官方网站下载安装包,也可以使用其他的方法。之后,你需要安装pandas、numpy、matplotlib、selenium、pyautogui、beautifulsoup4等Python第三方库。
!pip install pandas numpy matplotlib selenium pyautogui beautifulsoup4
接下来,你需要安装Google Chrome浏览器,并下载ChromeDriver驱动。你可以前往谷歌官方网站下载ChromeDriver,下载后解压,然后复制到Python目录下的Scripts文件夹,如下图所示:
C:\Users\Administrator>cd C:\Program Files (x86)\Google\Chrome\Application\
C:\Program Files (x86)\Google\Chrome\Application>mkdir chromedriver_win32
C:\Program Files (x86)\Google\Chrome\Application>copy chromedriver.exe chromedriver_win32\chromedriver.exe
最后,打开PyCharm,新建一个Python项目,创建一个名为main.py的文件。
安装ChromeDriver
安装ChromeDriver之前,请确保你的Chrome版本号与你的Chromedriver版本相匹配,否则可能导致运行时报错。
安装步骤如下:
- 访问 sites.google.com/a/chromium.…
- 找到适合你的操作系统(Windows/Mac/Linux),点击下载按钮。
- 下载的文件是一个压缩包,解压后把里面的
chromedriver(.exe)
放到Python目录下的Scripts文件夹即可。
设置配置文件
设置配置文件之前,你需要有一个浏览器,并且已经登陆某个特定账户。
配置步骤如下:
-
用记事本打开配置文件config.ini,复制粘贴以下内容:
[DEFAULT] # 默认浏览器路径 browser = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe' # 默认登录账户 user_name = 'your username here' password = '<PASSWORD>' # 业务数据地址 data_url = 'http://example.com/' # 是否开启调试模式 debug = True
根据自己的情况填写正确的值。
-
把配置文件放在Python项目的根目录下,命名为config.ini。
编写核心程序
编写核心程序之前,你需要熟悉一下Python的语法。
核心程序的逻辑非常简单,通过读取配置文件,启动Chrome浏览器,打开数据网页,登录账户,自动填写表单,提交并获取结果页面,最后解析结果页面的内容。
import configparser
from selenium import webdriver
from bs4 import BeautifulSoup
import time
def main():
try:
# 读取配置文件
config = configparser.ConfigParser()
config.read('config.ini')
# 初始化浏览器对象
options = webdriver.ChromeOptions()
if not config['DEFAULT']['debug']:
options.add_argument('--headless')
driver = webdriver.Chrome(options=options, executable_path=config['DEFAULT']['browser'])
# 打开数据网页
driver.get(config['DEFAULT']['data_url'])
# 登录账户
input_user_name = driver.find_element_by_xpath("//input[@id='username']")
input_password = driver.find_element_by_xpath("//input[@id='password']")
submit_button = driver.find_element_by_xpath("//button[@type='submit']")
input_user_name.send_keys(config['DEFAULT']['user_name'])
input_password.send_keys(config['DEFAULT']['password'])
submit_button.click()
# 自动填写表单
#... 此处省略表单填写的代码...
# 提交并获取结果页面
submit_button = driver.find_element_by_xpath("//button[contains(@class,'btn-primary')]")
submit_button.click()
while True:
content = driver.page_source
soup = BeautifulSoup(content, "html.parser")
if soup.select(".ant-message-success"):
break
else:
time.sleep(1)
# 解析结果页面的内容
print("程序运行结束!")
except Exception as e:
raise e
if __name__ == '__main__':
main()
以上就是整个程序的基本框架。
测试运行程序
测试运行程序之前,请先检查一下Python环境是否安装正确,确保所有第三方库都已经成功安装。
运行程序之前,你需要保证你的数据网页和登录页面都正常打开。
运行步骤如下:
- 在PyCharm右侧的菜单栏点击Run -> Edit Configurations...,选择+号,选择Python配置项。
- 修改默认名称Test Python Configuration,添加命令
python
,点击OK。 - 在编辑器下方的终端窗口,输入命令
python
。 - 如果出现欢迎界面,请输入用户名密码。
- 如果出现验证码,请手动输入。
- 如果运行成功,终端窗口会打印出提示。
至此,整个程序运行结束。
4.具体代码实例和详细解释说明
创建历史记录数据库
历史记录数据库是一个用于保存历史业务数据的SQLite文件,用于方便检索。
import sqlite3
conn = sqlite3.connect('history.db')
cursor = conn.cursor()
create_table_sql = '''CREATE TABLE IF NOT EXISTS history
(id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
customer VARCHAR(100) NOT NULL,
product VARCHAR(100),
quantity INTEGER,
price REAL);'''
cursor.execute(create_table_sql)
conn.commit()
conn.close()
查询业务数据
查询业务数据是一个根据用户输入指令搜索历史业务数据的功能。
import sqlite3
conn = sqlite3.connect('history.db')
cursor = conn.cursor()
def search_data(customer):
sql = f"SELECT * FROM history WHERE customer LIKE '%{customer}%'"
cursor.execute(sql)
rows = cursor.fetchall()
return rows
conn.close()
调用GPT-3模型
调用GPT-3模型是一个将业务数据传入模型,并获取生成的业务流转任务的功能。
import os
import openai
openai.api_key = 'YOUR OPENAI API KEY HERE'
def generate_task(data):
prompt = f"What should I do with the following {len(data)} items?"
for i in range(len(data)):
item = ', '.join([str(k) + ':'+ str(v) for k, v in data[i].items()])
prompt += '\n' + item
response = openai.Completion.create(
engine="text-davinci-002",
prompt=prompt,
max_tokens=500,
stop=['\n', '.', '?'],
n=1)
result = response["choices"][0]["text"]
tasks = []
for task in result.split('\n'):
tasks.append(dict([(item.strip(), '') for item in task.split(':')]))
return tasks
generate_task([{
"customer": "John Smith",
"product": "Product A",
"quantity": 10,
"price": 100.0
},
{
"customer": "Jane Doe",
"product": "Product B",
"quantity": 5,
"price": 200.0
}])
执行业务流转任务
执行业务流转任务是一个通过模拟人类操作的方式,来完成执行生成的业务流转任务。
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
def execute_task(driver, tasks):
wait = WebDriverWait(driver, 10)
actions = ActionChains(driver)
for task in tasks:
# 根据任务类型,模拟操作行为
#... 此处省略代码...
submit_button = driver.find_element_by_xpath("//button[contains(@class,'btn-primary')]")
submit_button.click()
while True:
content = driver.page_source
soup = BeautifulSoup(content, "html.parser")
if soup.select(".ant-message-success"):
break
else:
time.sleep(1)
message = soup.select('.ant-message-custom-content')[0].get_text().replace('\n', '').strip()
return message
# 模拟实际执行业务流转任务的操作
actions.perform()
函数组合示例
函数组合是一个使用多个函数组合成一个新函数,或者在多个函数间传递参数的机制。
import logging
logging.basicConfig(filename='myapp.log', level=logging.INFO)
def greeting(msg):
def decorator(func):
def wrapper(*args, **kwargs):
logging.info(msg)
func(*args, **kwargs)
return wrapper
return decorator
@greeting('hello')
def say_hi():
print('Hi!')
say_hi()
这样一来,运行这个程序,会在控制台看到日志:
INFO:__main__:hello
Hi!
这种设计模式使得我们可以很容易地记录程序运行的过程,并能方便地查看错误原因。
5.未来发展趋势与挑战
在当前阶段,基于GPT-3模型的自动业务流程任务执行系统,已经具备了一定的基础能力。但随着GPT-3模型的不断壮大,模型的能力也在不断增强。未来的发展方向包括:
-
更多类型的业务流程自动化:除了常见的销售业务,还有其他类型如理财产品评估、政策宣传等业务,它们也是受到GPT-3模型的驱动。
-
模型的训练优化:由于GPT-3模型的训练数据量比较小,且模型结构和能力较弱,所以它的训练性能仍然存在一些限制。这意味着,GPT-3模型的训练优化仍然是未来发展的重要方向。
-
语料库的积累:随着业务流程任务类型的增加,GPT-3模型的语料库也需要跟上快速发展的步伐,构建足够的训练数据集。这要求我们不断收集、整理和标注相关数据,并分享给社区。
-
框架的优化与升级:虽然GPT-3模型已经非常强大,但仍存在很多优化空间。这意味着我们需要改善我们的框架设计,让它更易于扩展,更灵活。
-
多端部署:我们需要考虑将我们的框架部署到不同的端设备,如移动端、PC端、智能手机等。这也需要我们改善我们的架构设计。