Rasa初始化聊天机器人的配置

2024-01-02 10:04

本文主要是介绍Rasa初始化聊天机器人的配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  本文详细介绍了使用 rasa init 初始化聊天机器人项目的配置,包括 nlu.yml、rules.yml、stories.yml、test_stories.yml、config.yml、credentials.yml、domain.yml、endpoints.yml 等文件。如下所示:

│  config.yml
│  credentials.yml
│  domain.yml
│  endpoints.yml
│  graph.html
│  requirements.txt
│
├─actions
│      actions.py
│      __init__.py
│
├─data
│      nlu.yml
│      rules.yml
│      stories.yml
│
├─models
└─teststest_stories.yml

一.nlu.yml 文件

version: "3.1"nlu:
- intent: greetexamples: |- hey- hello- hi- hello there- good morning- good evening- moin- hey there- let's go- hey dude- goodmorning- goodevening- good afternoon- intent: goodbyeexamples: |- cu- good by- cee you later- good night- bye- goodbye- have a nice day- see you around- bye bye- see you later- intent: affirmexamples: |- yes- y- indeed- of course- that sounds good- correct- intent: denyexamples: |- no- n- never- I don't think so- don't like that- no way- not really- intent: mood_greatexamples: |- perfect- great- amazing- feeling like a king- wonderful- I am feeling very good- I am great- I am amazing- I am going to save the world- super stoked- extremely good- so so perfect- so good- so perfect- intent: mood_unhappyexamples: |- my day was horrible- I am sad- I don't feel very well- I am disappointed- super sad- I'm so sad- sad- very sad- unhappy- not good- not very good- extremly sad- so saad- so sad- intent: bot_challengeexamples: |- are you a bot?- are you a human?- am I talking to a bot?- am I talking to a human?

(1)greet:欢迎语,比如你好等。

(2)goodbye:比如再见等。

(3)affirm:肯定,比如是的等。

(4)deny:否定,比如不等。

(5)mood_great:心情好,比如开心等。

(6)mood_unhappy:心情不好,比如沮丧等。

(7)bot_challenge:不在上述意图当中,就是 bot 无法识别意图。

二.rules.yml

version: "3.1"rules:- rule: Say goodbye anytime the user says goodbyesteps:- intent: goodbye- action: utter_goodbye- rule: Say 'I am a bot' anytime the user challengessteps:- intent: bot_challenge- action: utter_iamabot

  规则就是当识别到这个意图(intent)的时候,就执行相应的动作(action)。如下所示:

responses:utter_goodbye:- text: "Bye"utter_iamabot:- text: "I am a bot, powered by Rasa."

(1)当遇到 goodbye 意图的时候,就要执行 utter_goodbye 这个动作。

(2)当遇到 bot_challenge 意图的时候,就要执行 utter_iamabot 这个动作。

三.stories.yml

version: "3.1"stories:- story: happy pathsteps:- intent: greet- action: utter_greet- intent: mood_great- action: utter_happy- story: sad path 1steps:- intent: greet- action: utter_greet- intent: mood_unhappy- action: utter_cheer_up- action: utter_did_that_help- intent: affirm- action: utter_happy- story: sad path 2steps:- intent: greet- action: utter_greet- intent: mood_unhappy- action: utter_cheer_up- action: utter_did_that_help- intent: deny- action: utter_goodbye

1.这个场景包括 3 条路线

(1)happy path 路线

  • 用户:你好(意图:greet)
  • 机器人:你好(动作:utter_greet)
  • 用户:很开心(mood_great)
  • 机器人:很好,加油(动作:utter_happy)
    (2)sad path 1 路线
  • 用户:你好(意图:greet)
  • 机器人:你好(动作:utter_greet)
  • 用户:心情不好(意图:mood_unhappy)
  • 机器人:要开心起来(动作:utter_cheer_up)
  • 机器人:那对你有帮助吗?(动作:utter_did_that_help)
  • 用户:是的(意图:affirm)
  • 机器人:很好,加油(动作:utter_happy)
    (3)sad path 2 路线
  • 用户:你好(意图:greet)
  • 机器人:你好(动作:utter_greet)
  • 用户:心情不好(意图:mood_unhappy)
  • 机器人:要开心起来(动作:utter_cheer_up)
  • 机器人:那对你有帮助吗?(动作:utter_did_that_help)
  • 用户:没有(意图:deny)
  • 机器人:再见(动作:utter_goodbye)

2.rasa visualize 可视化 Story

  rasa visualize 命令的主要工作是分析 Rasa 项目中的对话故事(stories)文件并生成一个交互式的图形,以可视化对话流程。交互图的节点代表了用户意图和机器人动作,边表示它们之间的转换关系。这种可视化工具有助于直观地理解对话流程,特别是在对话逻辑比较复杂的情况下。以下是该命令的工作原理:

(1)读取 Stories 文件

  首先,rasa visualize 命令会读取项目中的 stories 文件(通常是 data/stories.yml)。这些文件包含了对话故事,定义了用户意图和机器人动作之间的交互流程。

(2)构建交互图

  通过解析 stories 文件,命令会构建一个对话交互图。这个图表示用户和机器人在对话中的交互流程,以及相应的用户意图和机器人动作。

(3)生成可视化HTML文件

  rasa visualize 命令会将构建的对话交互图转换为一个 HTML 文件,其中包含了图形表示以及相应的节点和边。这个 HTML 文件包含了交互式元素,允许用户通过鼠标交互浏览对话流程。

(4)在浏览器中打开HTML文件

  最后,命令会在默认的浏览器中打开生成的 HTML 文件,让用户能够通过图形化界面来查看对话的流程。

四.config.yml 文件

# 配置配方
# https://rasa.com/docs/rasa/model-configuration/
recipe: default.v1# assistant项目唯一标识符
# 此默认值必须替换为部署中的唯一assistant名称
assistant_id: 20231231-104634-violent-plate# Rasa NLU的配置
# https://rasa.com/docs/rasa/nlu/components/
language: enpipeline: null
# # 没有为NLU管道提供配置。以下默认管道用于训练你的模型。
# # 如果想自定义它,请取消注释并调整管道。
# # 有关更多信息,请参见https://rasa.com/docs/rasa/tuning-your-model。
#   - name: WhitespaceTokenizer
#   - name: RegexFeaturizer
#   - name: LexicalSyntacticFeaturizer
#   - name: CountVectorsFeaturizer
#   - name: CountVectorsFeaturizer
#     analyzer: char_wb
#     min_ngram: 1
#     max_ngram: 4
#   - name: DIETClassifier
#     epochs: 100
#     constrain_similarities: true
#   - name: EntitySynonymMapper
#   - name: ResponseSelector
#     epochs: 100
#     constrain_similarities: true
#   - name: FallbackClassifier
#     threshold: 0.3
#     ambiguity_threshold: 0.1# Rasa Core的配置
# https://rasa.com/docs/rasa/core/policies/
policies: null
# # 没有为策略提供配置。以下默认策略用于训练你的模型。
# # 如果想自定义它们,请取消注释并调整策略。
# # 有关更多信息,请参见https://rasa.com/docs/rasa/policies。
#   - name: MemoizationPolicy
#   - name: RulePolicy
#   - name: UnexpecTEDIntentPolicy
#     max_history: 5
#     epochs: 100
#   - name: TEDPolicy
#     max_history: 5
#     epochs: 100
#     constrain_similarities: true

  主要是提供关于 Rasa NUL(管道配置)、Rasa Core(策略配置)、recipe(配方配方)、assistant_id(唯一标识符配置)、language(语言)的配置。需要注意的是,当 pipeline: null 和 policies: null 时,执行默认的管道和策略。

五.domain.yml

version: "3.1"intents:- greet- goodbye- affirm- deny- mood_great- mood_unhappy- bot_challengeresponses:utter_greet:- text: "Hey! How are you?"utter_cheer_up:- text: "Here is something to cheer you up:"image: "https://i.imgur.com/nGF1K8f.jpg"utter_did_that_help:- text: "Did that help you?"utter_happy:- text: "Great, carry on!"utter_goodbye:- text: "Bye"utter_iamabot:- text: "I am a bot, powered by Rasa."session_config:session_expiration_time: 60   # 会话过期时间,单位秒carry_over_slots_to_new_session: true  # 是否将上一个会话的槽位带入到新的会话中

  主要是意图(intent),响应(response)和会话(session)配置。

六.credentials.yml

# 这个文件包含了你的机器人使用的语音和聊天平台的凭证。
# https://rasa.com/docs/rasa/messaging-and-voice-channelsrest:
#  # 你不需要在这里提供任何东西 - 这个频道不需要任何凭证#facebook:
#  verify: "<verify>"
#  secret: "<your secret>"
#  page-access-token: "<your page access token>"#slack:
#  slack_token: "<your slack token>"
#  slack_channel: "<the slack channel>"
#  slack_signing_secret: "<your slack signing secret>"#socketio:
#  user_message_evt: <event name for user message>
#  bot_message_evt: <event name for bot messages>
#  session_persistence: <true/false>socketio:user_message_evt: user_uttered  # 用户消息事件bot_message_evt: bot_uttered    # 机器人消息事件session_persistence: false      # 会话持久化#mattermost:
#  url: "https://<mattermost instance>/api/v4"
#  token: "<bot token>"
#  webhook_url: "<callback URL>"# 这个entry是在你使用Rasa企业版时需要的。这个entry代表了Rasa企业版的“频道”的凭证,即与你的机器人交谈并与访客共享。
rasa:url: "http://localhost:5002/api"

(1)socketio 配置

  • user_message_evt: 用户消息事件。在使用 Socket.IO 通道时,Rasa 将监听该事件来接收来自用户的消息。
  • bot_message_evt: 机器人消息事件。在使用 Socket.IO 通道时,Rasa 将通过该事件向用户发送消息。
  • session_persistence: 会话持久化。设置为 false 表示不保存对话状态,每次连接都是新的对话。

(2)rasa 配置

  • url: http://localhost:5002/api:最早这部分配置是为了在使用 Rasa X 时提供凭证信息。但是现在 Rasa X 已经体制维护了,所以成了现在的 Rasa 企业版。

(3)Facebook、Slack、Mattermost 配置

  每个注释后面的配置项提供了针对特定平台(如 Facebook、Slack、Mattermost)的配置示例。这些示例包括验证令牌、密钥、访问令牌等信息,这些信息是在连接到相应平台时所需的。你应该根据你的实际情况替换这些示例值。如果你没有使用某个平台,可以将相应的部分注释掉或删除。确保只保留你实际使用的平台的配置信息。

七.endpoints.yml 文件

# 这个文件包含了你的机器人可以使用的不同端点。# 服务器从中拉取模型的位置。
# https://rasa.com/docs/rasa/model-storage#fetching-models-from-a-server#models:
#  url: http://my-server.com/models/default_core@latest
#  wait_time_between_pulls:  10   # [optional](default: 100)# 服务器运行自定义操作。
# https://rasa.com/docs/rasa/custom-actionsaction_endpoint:url: "http://localhost:5055/webhook"# Tracker store用于存储对话。默认情况下,对话存储在内存中。
# https://rasa.com/docs/rasa/tracker-stores#tracker_store:
#    type: redis
#    url: <host of the redis instance, e.g. localhost>
#    port: <port of your redis instance, usually 6379>
#    db: <number of your database within redis, e.g. 0>
#    password: <password used for authentication>
#    use_ssl: <whether or not the communication is encrypted, default false>#tracker_store:
#    type: mongod
#    url: <url to your mongo instance, e.g. mongodb://localhost:27017>
#    db: <name of the db within your mongo instance, e.g. rasa>
#    username: <username used for authentication>
#    password: <password used for authentication># Event broker which all conversation events should be streamed to.
# 所有对话事件都应该流式传输到的Event broker。
# https://rasa.com/docs/rasa/event-brokers#event_broker:
#  url: localhost
#  username: username
#  password: password
#  queue: queue

  这个配置文件定义了 Rasa 机器人在不同端点上的配置。确保根据你的需求正确配置这些端点。如果不需要使用远程模型、自定义操作、或者对话存储,你可以注释掉相应的部分。以下是对每个部分的详细解释:

(1)模型服务器端点(models

  • url: 指定了从服务器中拉取模型的位置。可以设置为训练好的模型所在的服务器地址。通常,这个配置项用于从远程服务器获取最新的模型。
  • wait_time_between_pulls: 可选配置,用于设置两次拉取模型之间的等待时间。默认值是100毫秒。

注释掉这个部分的配置意味着使用本地文件系统中的模型,而不是从远程服务器拉取。

(2)自定义操作端点(action_endpoint

  • url: 指定了运行自定义操作的服务器地址。当 Rasa 接收到执行自定义操作的请求时,它会将请求发送到这个地址。这个地址应该指向运行自定义操作的服务器。

(3)对话存储(tracker_store

  • type: 指定了对话存储的类型。可以选择使用 redismongod 作为对话存储后端。注释掉这部分的配置将使用默认的内存存储,对话数据将在内存中保留,服务器重新启动后将丢失。
  • 具体的配置参数(如 urlportdbusernamepassword 等)取决于选择的存储类型。

(4)事件代理(event_broker

  • url: 指定了事件代理的地址。事件代理用于将所有对话事件流式传输到指定的位置。可以选择使用例如 RabbitMQ 或 Redis 作为事件代理,将对话事件发送到其它系统中。注释掉这部分的配置表示不使用事件代理。

参考文献

[0] 本文源码(rasa-v2024010101):https://github.com/ai408/nlp-engineering/tree/main/知识工程-对话系统/公众号代码/rasa-v2024010101

[1] Rasa 领域:https://rasa.com/docs/rasa/domain/

[2] Rasa 架构:https://rasa.com/docs/rasa/arch-overview/#!

[3] Rasa 模型配置:https://rasa.com/docs/rasa/model-configuration/

[4] Rasa 动作:https://rasa.com/docs/rasa/actions/

[5] Rasa 评估:https://rasa.com/docs/rasa/markers/

这篇关于Rasa初始化聊天机器人的配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/562116

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

c++的初始化列表与const成员

初始化列表与const成员 const成员 使用const修饰的类、结构、联合的成员变量,在类对象创建完成前一定要初始化。 不能在构造函数中初始化const成员,因为执行构造函数时,类对象已经创建完成,只有类对象创建完成才能调用成员函数,构造函数虽然特殊但也是成员函数。 在定义const成员时进行初始化,该语法只有在C11语法标准下才支持。 初始化列表 在构造函数小括号后面,主要用于给

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10