ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【Python大语言模子系列】开源机器人对话系统框架RASA介绍与利用(案例分析 [打印本页]

作者: 万万哇    时间: 2024-10-1 18:48
标题: 【Python大语言模子系列】开源机器人对话系统框架RASA介绍与利用(案例分析
这是我的第361篇原创文章。


一、引言

Rasa是一个开源的对话式 AI 框架,用于构建自定义的对话式 AI 助手。它可以处理自然语言理解(NLU)和对话管理(DM),使得开辟者能够轻松地创建功能丰富的对话式 AI 应用。Rasa是一个开源机器学习框架(小模子),重要功能:支持闲聊,问答型机器人和多轮会话。


二、系统架构



上图概述了Rasa开源体系结构:



三、核心模块介绍

Rasa有两个重要模块:Rasa NLU 和Rasa Core,旧版本:rasa-nlu和rasa-core是分开安装的,最新版本:rasa 将二者做了合并。
Rasa NLU 是核心模块之一,NLU是英文Natural Language Understanding的简称,也就是自然语言理解,这个模块用于对用户消息内容进行语义理解,并将效果转换成结构化的数据。在Rasa这里,需要提供一份练习数据,Rasa NLU会基于这份数据进行模子练习,然后通过模子对用户消息进行语义理解,重要是意图识别和实体提取。

NLU组件也是一个可细分pipeline结构,过程是Tokenize->Featurize->NER Extract->Intent Classify。
例如,下面句子:
"I am looking for a Mexican restaurant in the center of town"
返回结构化数据:
{ "intent": "search_restaurant","entities": {    "cuisine" : "Mexican",    "location" : "center"  }}
Rasa_NLU_Chi 作为 Rasa_NLU 的一个 fork 版本,加入了jieba 作为中文的 tokenizer,实现了中文支持。
Rasa Core是一个对话管理平台,用于举行对话和决定下一步做什么。Rasa core是Rasa框架提供的对话管理模块,它雷同于谈天机器人的大脑,重要的使命是维护更新对话状态和动作选择,然后对用户的输入作出响应。所谓对话状态是一种机器能够处理的对谈天数据的表征,对话状态中包含所有大概会影响下一步决定的信息,如自然语言理解模块的输出、用户的特性等;所谓动作选择,是指基于当前的对话状态,选择接下来符合的动作,例如向用户追问需增补的信息、实行用户要求的动作等。
RASA在处理对话时,团体流程是pipeline结构,自然语言理解(NLU)、对话状态追踪(DST)以及对话策略学习(DPL)一系列流程处理下来,再判断实行下一个动作。利用Rasa构建的助手响应消息的根本步骤:



几个术语



四、利用

1、安装rasa
利用pip install rasa[full]安装Rasa,则会为每种配置安装Rasa的所有依赖项(好比spaCy、MITIE)
2、创建一个新的rasa项目
  1. rasa init
复制代码


项目结构:一个典范的 Rasa 项目包含以下文件和文件夹:





3、根据业务配置文件
nlu.yaml


nlu文件是告诉模子用户大概会说什么。给的例子是模拟了平时人在相关情形下常说的话。可以理解为,有监视的机器学习,我们给模子提供的学习数据。为了创建自定义谈天机器人,我们将在其中编写一些意图,同时确保意图名称没有重复,并且每个意图确保至少给出两个示例。
domain.yml


这个文件列出了nlu里的所有类型,而responses则是我们告诉机器人,当用户做出了nlu里的相关行为之后,应该怎样回应(其实就是雷同一个判断分支的代码逻辑),好比当我识别出用户想让我讲个笑话的时候,我们就复兴本日的风儿甚是喧嚣啊。当然,我这里只定义了一条,当定义多条复兴信息时,机器人就会随机复兴其中的一条。
sotries.yaml:


这里其实是模拟了大概发生的对话环境,每一条练习数据是一个story,即是一次完整的场景对话(多个intent-action),好比第一个沮丧环境,机器人问候之后,用户表示不开心,机器人会做一个cheer_up行为,然后询问刚才的鼓励行为是否有效,假如用户复兴确认,机器人会进行说请保持,也就是23行的happy行为。


4、练习模子
准备好domain.yml和sotries.yaml数据之后,就可以进行模子的练习了。Rasa会根据这些数据来练习机器人的答复策略,模子的输入数据是历史对话记录,lable是下一个决定action。模子本质上是num_actions个种别的多分类。
这里它直接问我要不要练习这个初始化的模子,我直接输入Y就可以。等价于命令
  1. rasa train
复制代码
练习过程:


练习完成:


练习完成之后这将在models/文件夹下生成一个练习好的模子。
5. 测试模子
利用以下命令测试模子:
  1. rasa test
复制代码
这将在results/文件夹下生成测试效果。


6、运行
现在,可以将此谈天机器人集成到自己的网站大概毗连到任何其他平台,但是必须创建自己的自定义毗连器。有两种运行Rasa的方法:在Shell和localhost上。
这里它直接问我要不要对话这个练习好的模子,我直接输入Y就可以。等价于命令
  1. rasa shell
复制代码


另一种方法是在本地服务器上运行Rasa。为此,只需在Rasa文件夹中打开的终端上运行以下命令:
  1. rasa run
复制代码
这将在本地系统上运行Rasa,并在本田主机的5005端口公开REST端点。为了与Rasa服务器公开的REST端点进行通讯,可以利用cURL命令(对于Linux爱好者)或Postman。这里推荐Postman,由于它易于利用。


7、摆设对话式 AI 助手
要将你的对话式 AI 助手摆设到生产环境,你可以利用 Rasa 的 REST API。首先,在endpoints.yml文件中配置端点:
  1. action_endpoint:
  2. url: "http://localhost:5055/webhook"
  3. model:
  4.   url: "http://localhost:5005/model"
  5.   token: "your-token"
  6. tracker_store:
  7.   type: "sql"
  8.   dialect: "sqlite"
  9.   db: "rasa.db"
复制代码
然后,利用以下命令启动 Rasa 服务器:
  1. rasa run
复制代码
现在你的对话式 AI 助手已经摆设到生产环境,可以通过 REST API 与外部服务进行交互。
   作者简介:
  读研期间发表6篇SCI数据发掘相关论文,现在某研究院从事数据算法相关科研工作,联合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列根本知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小同伴可以关注底部公众号添加作者微信。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4