1.背景介绍
目前人工智能(AI)、机器学习(ML)和规则引擎(RE)等技术在处理复杂业务流程方面已经取得了举足轻重的作用,而智能助手(Chatbot)也正在成为越来越多的应用场景中的一项重要功能。
但是,当业务的复杂程度越来越高时,如何让智能助手更加智能、能够应对日益复杂的业务流程呢?为了解决这一问题,RPA(Robotic Process Automation,即机器人流程自动化)技术应运而生。
RPA作为人工智能和自动化领域的一个新技术,其主要特点是利用图形界面操作,用计算机指令代替人类来完成重复性繁琐的工作,从而提升工作效率和减少人力成本。
企业级应用开发者一般都需要用某种编程语言来进行应用的开发,而RPA的实现也是需要开发人员编写脚本或者基于某种流程定义工具来设计流程。同时,业务数据也是需要导入到RPA框架中的,然后才能触发流程的执行。
为了实现企业级应用开发者的需求,除了要掌握RPA的相关知识外,还需要了解如何把RPA和AI Agent整合起来,才能做到最佳效果。这就是本文将要介绍的内容。
2.核心概念与联系
2.1 GPT-3 与 GPT 模型
GPT-3 是由 OpenAI 推出的基于 GPT 模型的 AI 语言模型,可以说是 GPT 的升级版。它拥有超过 1750 亿参数,并支持多种任务,包括文本生成、图像分类、语言建模等。其中,GPT 和 GPT-2 是最先进的两个版本,其后续版本 GPT-3 更是深入一步,采用了大量训练数据的自然语言生成能力。
GPT 模型的结构是 Transformer,一个编码器—解码器的结构,编码器编码输入序列得到编码表示,解码器根据编码结果生成输出序列。
2.2 RPA与BOT平台
RPA,即机器人流程自动化。简单来说,它是一种技术,通过使用软件工具来模拟人的操作行为,并通过脚本实现各种自动化流程,从而大幅提高生产力、节约时间和降低成本。RPA 可以理解为“机器来替代人”的意思。
BOT平台,也就是业务流程自动化服务平台。BOT平台,顾名思义,就是用来为企业提供自动化服务的软件平台。其主要功能有:
- 根据用户的操作习惯及业务需求,定义用户任务流;
- 按照任务流顺序执行任务,完成用户的业务需求;
- 提供相应的统计分析报告;
- 为企业提供业务数据服务和集成接口。
3.核心算法原理和具体操作步骤以及数学模型公式详细讲解
GPT 模型采用了强大的 Transformer 技术。Transformer 是 Google 在 2017 年提出的模型,主要用于 Seq2Seq 任务,即将一段文本映射到另一段文本。Transformer 在编码器—解码器结构上做了创新,在捕获长距离依赖关系的同时,保证模型鲁棒性。
GPT 模型的基本原理是在大量的数据上预训练模型,然后在新任务中微调模型即可。微调是指不断调整模型的参数,使得模型在新任务上的表现比初始模型更好。GPT 模型提供了两种微调策略:
- Fine-tuning 方法:即从头开始训练模型,并采用较小的学习率、随机初始化权重,用少量的数据优化模型参数。这种方法不需要额外的数据,适合于小规模数据集。
- Learning transferable skills 方法:即采用预训练好的模型来完成新任务。这就要求我们事先准备好大量的训练数据,这样就可以利用之前训练好的模型来解决新的任务。这种方法适合于大规模数据集。
3.1 生成文本示例代码
GPT 模型采用 Python 源码来实现文本生成。生成文本的过程如下:
import openai
openai.api_key = "YOUR_API_KEY" # replace with your API key
response = openai.Completion.create(
engine="davinci",
prompt="Once upon a time,",
temperature=0.9,
max_tokens=100,
top_p=1,
n=1,
stop=["\n"]
)
print(response["choices"][0]["text"])
其中,engine 参数指定了使用的 GPT 版本,如 davinci,curie。prompt 参数指定了提示语,即我们想让模型生成什么样的文字。temperature 参数是一个取值范围在 0.1 到 1.0 的数值,它决定了生成文本的随机性。max_tokens 表示模型最多生成多少个词。top_p 是 nucleus sampling 的一个参数,它决定了模型选择最可能的前 top_p 个词来生成新词。stop 参数是一个列表,指定了停止词,模型在生成的时候会停止生成这些词。
3.2 对话机器人示例代码
对话机器人包括自动问答机器人、闲聊机器人等。我们也可以通过 API 来调用已训练好的模型来构建自己的对话机器人。
import requests
url = 'https://api.openai.com/v1/engines/davinci/completions'
headers = {'Authorization': f'Bearer {your_access_token}'}
data = {"prompt": "Hi! How can I help you?",
"temperature": 0.85,
"max_tokens": 150,
"stop": ["\n"]}
r = requests.post(url, headers=headers, data=data).json()
reply = r['choices'][0]['text']
print(f"{myname}: {message}\n{robotname}: {reply}")
这里,我们通过 POST 请求向 OpenAI 的 API 发起请求,指定要生成的对话,如 prompt。temperature 指定了生成的随机性,max_tokens 指定了生成的最大长度,stop 指定了结束标志符号,比如换行符 \n。服务器返回 JSON 数据包,我们取出第一个选项的文本作为回答,并打印出来。
3.3 RPA平台与规则引擎
现在,我们把 RPA 和 BOT 平台结合起来,来看看如何实现业务流程自动化。
首先,我们要明确两者的界限。RPA 不涉及到业务数据导入的问题,所有的数据都来自业务流程,是端到端的业务流,适合业务流程相对比较简单的情况,并且可以实现快速反馈。而 BOT 平台主要负责把业务数据导入到平台中,为 AI 模型的训练提供数据支撑。BOT 平台可以进行数据清洗、数据增强、特征工程等工作。
接着,我们要搭建好 RPA 平台,确保 RPA 任务可以正常运行。接下来,我们要把业务流程中的规则转换为符合 RPA 规则引擎的脚本。规则引擎是一个脚本语言,它定义了若干条件和动作,当满足条件时执行对应的动作。
例如,一条业务规则可能是 “当采购订单被创建且金额大于一定阈值时,发送消息给经理” 。这个规则可以转换为一个 RPA 脚本,当满足条件时执行相应的动作,如发送消息给经理。另外,我们还可以通过画流程图的方式来描述业务流程。流程图展示了各个节点之间的依赖关系,帮助团队快速理解业务逻辑,协同完成工作任务。
最后,我们要把规则引擎和 BOT 平台连接起来,并通过第三方服务(如 Zapier、IFTTT 或 Twilio)把规则引擎的执行结果通知到对应人员,帮助企业节省成本和提升效率。
4.具体代码实例和详细解释说明
4.1 用 GPT-3 生成性别对白诗
为了实现这个需求,我们需要用 GPT-3 生成性别对白诗。生成文本的过程如下:
-
创建 GPT-3 API 账户:前往 beta.openai.com/account/dev… ,创建一个账户并申请 API Key。
-
安装库
openai:pip install openai -
初始化 API:
import openai OPENAI_API_KEY = "YOUR_API_KEY" openai.api_key = OPENAI_API_KEY -
配置参数:
prompts = [ """男朋友跟我聊天,他说:"你好啊!你是喜欢看动漫还是看小说?" 我说:"哦,那你好好读一读哦,也许你就会喜欢上这个方向了。" """, """女孩子跟我说:"你喜欢哪个城市的夜空?" 我说:"嘻嘻,当然是东京的夜空啦~可惜我去过日本没怎么见过..." """, """女生跟我说她在听歌。我说:"唱歌真的是太酷了!" 她说:"嗯……" """ ]以此来尝试生成不同的对白诗。
-
调用 API 生成文本:
for prompt in prompts: response = openai.Completion.create( engine="text-davinci-002", prompt=prompt, temperature=0.9, max_tokens=100, top_p=1, n=1, logprobs=None, echo=True ) print("Generated:", response["choices"][0]["text"].strip())上述代码设置参数
logprobs为None时,将不会显示每种可能性的概率。执行以上代码,即可得到生成的性别对白诗。
4.2 用对话机器人生成问答对
为了实现这个需求,我们需要用对话机器人生成问答对。生成对话的过程如下:
-
配置参数:
MYNAME = "Alice" ROBOTNAME = "Bob" message = input("{}: ".format(MYNAME)) while True: if message == "exit": break url = 'http://openapi.tuling123.com/openapi/api/v2' data = { "reqType":0, "perception": { "inputText":{ "text": message } }, "userInfo": { "apiKey":"<KEY>", "userId":"" } } headers = { 'Content-Type': 'application/json', } try: res = requests.request('POST', url, json=data, headers=headers) answer = eval(res.content)["results"][0]["values"]["text"] print("\n{}: {}\n{}: {}".format(MYNAME, message, ROBOTNAME, answer)) except Exception as e: print(e) message = input("{}: ".format(MYNAME))上述代码通过图灵机器人的 API 调用,来实现对话机器人的生成。输入 exit 退出对话。
-
执行以上代码,即可得到生成的问答对。
4.3 将规则引擎与 BOT 平台联动
为了实现该功能,我们需要把规则引擎与 BOT 平台连接起来。BOT 平台主要负责把业务数据导入到平台中,为 AI 模型的训练提供数据支撑。同时,我们还可以建立一个与规则引擎交互的 API 接口,方便第三方服务调用。
以下以一个假设的业务场景为例,演示如何将规则引擎与 BOT 平台联动:
-
业务需求
公司希望在运营商网络设备上发现异常流量,并发送短信或邮件警报通知运维人员。
-
分析阶段
- 收集业务数据:
- 每隔半小时,运营商检测一次网络设备的流量,记录下来并上传至业务数据库。
- 流量异常时,写入日志。
- 分析数据:
- 运营商网络设备的流量记录是一个一维数据序列,可以使用滑窗法或其他统计方法聚合。
- 如果某条数据点异常,则认为该设备存在异常流量。
- 识别模式:
-
当两个连续的时间点流量差值大于某个阈值时,判定为异常流量。
-
此处我们假设阈值为 10MBps,因为这是比较常见的异常流量阈值。
-
在数据清洗或特征工程时,可以将该列的值规范化为单位 MBps。
-
- 收集业务数据:
-
自动化实现阶段
- 数据导入:使用 BOT 平台把业务数据导入到平台中。
- 设置规则:如果检测到流量异常,则发送短信或邮件警报通知运维人员。
- 提供接口:第三方服务可以通过 API 调用规则引擎,获得匹配的设备信息。
- 训练 AI 模型:
- 使用规则和业务数据训练 AI 模型。
- 比较 AI 模型的预测结果与实际流量数据之间的差异。
- 通过 API 返回检测结果。
- 数据导入:使用 BOT 平台把业务数据导入到平台中。