使用RPA通过GPT大模型AI Agent自动执行业务流程任务企业级应用开发实战:GPT大模型在业务流程自动化中的应用

119 阅读9分钟

1.背景介绍

什么是GPT?它是一种基于深度学习的预训练语言模型,能够生成连续的自然语言文本,可以用于语言建模、数据集扩充、文本摘要、自动翻译等领域。那么GPT大模型又是什么呢?GPT大模型是一个采用GPT作为编码器、并配合微调策略(fine-tune)得到的新型自然语言生成模型。它能生成具有一定含义和语法风格的长文本,可以用来完成包括自动问答、自动对话、智能数据处理等各种自然语言理解和生成任务。 基于GPT大模型,我们可以构建一个人工智能(AI)智能助手(Agent),它的主要功能是在服务场景中,帮助用户进行业务流程自动化的关键环节。目前,许多公司已经开始采用这种方式,帮助他们快速、低成本、准确地解决日常工作中遇到的重复性工作和繁琐的手动操作。不过,在实际应用中,如何利用GPT大模型实现业务流程自动化还存在很多问题。本文将以《使用RPA通过GPT大模型AI Agent自动执行业务流程任务企业级应用开发实战:GPT大模型在业务流程自动化中的应用》为主题,结合我多年的RPA相关工作经验和技术积累,从零到一地分享GPT大模型在业务流程自动化中的应用方法和案例。

2.核心概念与联系

GPT模型简介

GPT(Generative Pre-trained Transformer)模型由OpenAI推出,是一种基于深度学习的预训练语言模型,其神奇之处在于能够生成连续的自然语言文本,它的优点是生成质量高、训练简单、泛用性强、可控性强。

GPT与BERT

GPT与BERT都是由同一家名下的研究人员提出的预训练语言模型,不同的是BERT是BERT预训练任务的升级版,将词嵌入向量(Word Embeddings)也纳入输入序列,使得BERT模型更具一般化能力;而GPT则只是简单的改进BERT的结构,不加区别地采用Transformer编码器,并没有引入任何其他额外模块。 GPT模型可以生成连续的自然语言文本,因此适用于文本生成类任务,例如机器翻译、文本摘要、自动问答、图像描述等。同时,基于GPT模型,还可以通过微调策略,来实现更复杂的任务,如对话、对话状态追踪等。GPT模型最大的特点就是能够生成连续的自然语言文本。

AI Agent简介

人工智能智能助手(Artificial Intelligence Assistant)也叫做AI Agent,是指以人类的交互方式来获取或处理信息,完成任务的一类计算机程序。它可以自动完成某些重复性的任务,提升工作效率,减少人力成本。

RPA(Robotic Process Automation)

人工智能自动化流程(Robotic Process Automation)是一种基于规则引擎技术的高度自动化的自动化方式。与传统的批处理模式相比,RPA流程以人为参与者,在计算机上运行程序,通过自动化工具、指令及业务规则来执行工作流,直至工作结束。由于其高度自动化、专注人类沟通、重视协作、界面人机交互的特点,RPA正在受到越来越多企业的青睐。

GPT Agent与RPA之间的关系

GPT Agent与RPA可以看做是两种不同的技术路线,二者可以一起运用到同一个业务场景里,但是两者之间又存在着巨大的差异。RPA关注的是业务自动化这一核心功能,它在流程编排上采用脚本语言DSL进行配置,可以灵活、精准地完成一系列复杂的任务。GPT Agent则关注于生成语言模型技术的应用,它可以根据业务需求进行定制化的语言模型训练,并使用文本生成技术生成所需结果。

3.核心算法原理和具体操作步骤以及数学模型公式详细讲解

生成语言模型的概述

生成语言模型(Language Model)模型通常包括以下三个基本组成部分:语言模型,训练数据集,以及语言模型的性能评价标准。语言模型是一个带有参数的概率分布函数,用来计算给定序列(句子、文档等)出现的可能性。训练数据集包含一组训练文本样本,这些样本由模型根据统计规律估计得到的语言模型参数构成。对于给定的输入序列,语言模型可以计算这个序列出现的可能性。训练数据集越丰富,语言模型就越准确。语言模型的性能评价标准往往是囊括了BLEU、Perplexity等指标。

GPT大模型的概述

GPT大模型是一种新型的自然语言生成模型,它既是一个编码器,也是一个解码器。编码器接受输入序列(文本、语音、图像等),将其转变为中间表示,即上下文向量,再通过多层网络进行编码。解码器接收前面编码器输出的上下文向量,然后按照一定规则生成相应的输出。最后,解码器生成的输出作为下一次迭代的输入,形成一个不断循环的过程。GPT大模型包括两种类型的网络结构,一种是小型模型,另一种是大型模型。小型模型的大小只有几个百万参数,大型模型则有数十亿的参数。GPT大模型的两个特点是生成速度快、生成效果好。

案例场景分析

在本案例中,我们假设公司有如下业务流程: 流程图左侧是贷款申请人的信息,右侧是贷款借款人的信息。当申请人填写完贷款申请表后,提交到后端系统。后端系统对其进行初步审核,如果通过审核,便把信息存入贷款系统数据库中。借款人提交贷款申请后,需要提交的材料和资料非常多,而且不同人有不同填写模板,需要花费大量的人工时间才能做好准备工作。GPT Agent可以帮助借款人快速填写这些材料,提高工作效率。它可以跟踪借款人的相关信息、提供历史贷款查询服务、借款逾期管理、提供贷款相关咨询等功能。GPT Agent除了帮助借款人快速填报材料外,还可以根据借款人的情况、对贷款金额、利率、期限等信息进行个性化的贷款建议。

操作步骤

  1. 确定需要生成的结果类型:比如贷款申请人的信息、贷款借款人的信息、贷款申请材料、贷款申请资料等。
  2. 提供业务信息:在机器对话系统中编写业务逻辑代码,以便将指令转换成可执行的代码。业务逻辑代码应覆盖完整的业务流程。
  3. 根据需求选择合适的训练数据:首先收集足够的训练数据,包括申请人的信息、借款人的信息、贷款申请资料、贷款申请材料等。然后将这些训练数据整理成统一的数据格式,如json文件。
  4. 通过NLP库进行数据清洗、数据增强和数据分割:包括去除无关符号、特殊字符、英文缩写、数字归一化、停用词移除等。
  5. 构建GPT模型:选择合适的开源框架或者工具,构建GPT模型。利用Python或者Java进行编程,调用Tensorflow、PyTorch等框架,构建GPT模型。
  6. 数据集切分:将数据集切分为训练集和测试集。训练集用于训练GPT模型,测试集用于测试模型的准确率。
  7. 模型训练:选取合适的优化算法、学习率等超参数,使用训练集训练GPT模型。
  8. 模型测试:使用测试集测试GPT模型的性能,获得模型的评估结果。
  9. 将模型部署到后台服务器:将训练好的GPT模型部署到后台服务器上,供业务系统调用。
  10. 运用生成语言模型完成业务流程自动化:编写规则脚本,调用GPT模型API接口,根据脚本中的条件判断和配置规则,通过GPT模型生成对应的结果。

数学模型公式详细讲解

为了更好地理解GPT大模型,下面我们举一个公式来说明。 pθ(x)=exp(i=1seq_lenlogpθ(xix<i))i=1vocab[j=1vocablogpθ(xi=jx<i)]p_{\theta}(x)=\frac{exp(\sum_{i=1}^{\text{seq}\_len} \log p_{\theta}(x_{i}|x^{<i}))}{\prod_{i=1}^{|\text{vocab}|}\left[\sum_{j=1}^{|\text{vocab}|}\log p_{\theta}(x_{i}=j|x^{<i}) \right]} 这个公式表示的是语言模型的概率,其中θ\theta是模型的参数,xx是输入序列,pθp_{\theta}是模型的输出分布函数,seqlen\text{seq}_len表示序列长度。公式的分母代表的是归一化因子,它用来保证概率的正确性。该公式可以用来计算给定输入序列的出现的概率。

给定GPT大模型的输入序列xx, 有以下几种模型生成方法:

  1. 不带条件的生成: 直接生成完整的序列。此时公式中的θ\theta是模型的参数。可以用argmaxxpθ(x)\arg\max_{x'} p_\theta(x') 来求解最优路径。

    import numpy as np
    
    def generate():
        x = [bos]
        
        while True:
            logits, _ = model([np.array([x]), None])
            
            # sample next token from distribution
            idx = int(logits[0][-1].argmax())
            
            if idx == eos or len(x) >= max_len:
                break
                
            x.append(idx)
            
        return tokenizer.decode(x), float(np.exp(model.loss([np.array([x[:-1]]), np.array([x[1:]])])) / (len(x)-1))
    
  2. 带条件的生成: 在某个特定条件下生成序列。此时公式中的θ\theta不是模型的参数。可以用argmaxxpθ(xx)\arg\max_{x'} p_\theta(x'|x) 来求解最优路径。

    import numpy as np
    
    def conditioned_generate(condition):
        x = [bos] + condition
        
        while True:
            logits, _ = model([np.array([x]), None])
            
            # sample next token from distribution conditioned on previous tokens
            idx = int(logits[0][-1].argmax()[:, -1].argmax())
            
            if idx == eos or len(x) >= max_len:
                break
                
            x.append(idx)
            
        return tokenizer.decode(x), float(np.exp(model.loss([np.array([x[:-1]]), np.array([x[1:]])])) / (len(x)-1))
    
  3. 生成采样: 用采样的方法生成序列。此时公式中的θ\theta也是模型的参数。可以使用采样的方法,从θ\theta中采样出各个token的分布,然后用采样的方法生成输出序列。

    import numpy as np
    
    def sample_generate():
        x = [bos]
        
        while True:
            logits, _ = model([np.array([x]), None])
            
            # use categorical distribution to sample token from predicted probability distribution
            idx = np.random.choice(np.arange(len(logits[0][-1])), p=logits[0][-1])
            
            if idx == eos or len(x) >= max_len:
                break
                
            x.append(idx)
            
        return tokenizer.decode(x), float(np.exp(model.loss([np.array([x[:-1]]), np.array([x[1:]])])) / (len(x)-1))