Rasa 中的 tracker_store 相对主流为 Redis,event_broker 相对主流为 RabbitMQ。后续为了研究学习直接将 tracker_store 和 event_broker 的 type 都设置为 SQL,使用 MySQL 统一管理。

一.Rasa 中的 tracker_store

  要使用 MySQL 作为 Rasa 的 tracker_store,需要在 endpoints.yml 文件中进行一些配置。以下是一个示例配置:

tracker_store:
    type: SQL
    dialect: "mysql+pymysql"
    url: "localhost"  # your mysql host
    db: "rasa"  # name of the mysql database
    username: "root"  # username to access the database
    password: "password"  # password to access the database

  在这个配置中,typeSQLdialectmysql+pymysql,这表示使用的是 MySQL 数据库,并且使用 pymysql 作为数据库驱动。urldbusernamepassword 分别是 MySQL 数据库的主机名,数据库名,用户名和密码。

  然后,需要确保环境中已经安装了 pymysql 这个库。如果没有,可以使用以下命令进行安装:

pip install pymysql

  这样,Rasa 就会使用 MySQL 作为 tracker_store 进行对话跟踪的存储了。TrackerStore 是一个抽象基类,它定义了一些方法,但并没有定义具体的数据结构。具体的数据结构取决于你选择的 TrackerStore 的实现。例如,SQLTrackerStoreRedisTrackerStoreDynamoTrackerStoreMongoTrackerStore 等都有自己的数据结构。

  但是,可以从 TrackerStore 的方法中推断出一些通用的字段。例如,save 方法接受一个 DialogueStateTracker 对象,这个对象包含了一次对话的所有信息。DialogueStateTracker 对象主要包含以下字段:

  • sender_id:对话的发送者 ID,类型为字符串。
  • slots:对话的槽位信息,类型为字典,键为槽位名,值为槽位值。
  • latest_message:最新的消息,类型为 UserUttered 对象,包含了消息的文本、意图、实体等信息。
  • events:对话的事件列表,类型为列表,包含了对话中的所有事件,如 UserUtteredBotUtteredSlotSet 等。

  具体的 TrackerStore 实现可能会存储更多的信息,也可能会对这些信息进行一些转换。例如,SQLTrackerStore 会将这些信息存储到 SQL 数据库中,而 RedisTrackerStore 则会将这些信息存储到 Redis 中。

二.Rasa 中的 event_broker

  在 Rasa 中,broker 是用于处理和传递消息的组件。它主要用于将事件(如用户的消息,机器人的回复,槽位的设置等)从一个地方传递到另一个地方。例如,当用户发送一条消息时,broker 会将这条消息从输入通道传递到 Rasa 核心,然后再将 Rasa 核心的回复传递回输入通道。

  Rasa 支持多种类型的 broker,包括 RabbitMQKafkaSQL、文件和自定义等。可以在 endpoints.yml 文件中配置 broker。以下是一个使用 RabbitMQ 作为 broker 的示例配置:

event_broker:
  type: "pika"
  url: "localhost"  # rabbitmq host
  username: "guest"  # username to access rabbitmq
  password: "guest"  # password to access rabbitmq
  queues:
    - "rasa_core_events"  # name of the rabbitmq queue

  在这个配置中,typepika,这表示使用的是 RabbitMQ 作为 brokerurlusernamepassword 分别是 RabbitMQ 的主机名、用户名和密码。queues 是一个列表,包含了想要使用的 RabbitMQ 队列的名字。

  然后需要确保环境中已经安装了 pika 这个库。如果没有,可以使用以下命令进行安装:

pip install pika

  这样,Rasa 就会使用 RabbitMQ 作为 broker 进行消息的处理和传递了。

参考文献

[1] Tracker Stores:https://rasa.com/docs/rasa/tracker-stores/

[2] Event Brokers:https://rasa.com/docs/rasa/event-brokers/


NLP工程化

1.本公众号以对话系统为中心,专注于Python/C++/CUDA、ML/DL/RL和NLP/KG/DS/LLM领域的技术分享。

2.本公众号Roadmap可查看飞书文档:https://z0yrmerhgi8.feishu.cn/wiki/Zpewwe2T2iCQfwkSyMOcgwdInhf

NLP工程化

飞书文档

Rasa中的tracker_store和event_broker的更多相关文章

  1. 了解各种AA特性

    AA(Anti-Aliasing)抗锯齿想必不少玩家在游戏画质设定中经常会遇到,说通俗一点AA抗锯齿的作用:将图像边缘及其两侧的像素颜色进行混 合,然后用新生成的具有混合特性的点来替换原来位置上... ...

  2. Deferred Shading,延迟渲染(提高渲染效率,减少多余光照计算)【转】

    Deferred Shading,看过<Gems2> 的应该都了解了.最近很火的星际2就是使用了Deferred Shading. 原帖位置:   http://blog.csdn.net ...

  3. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  4. 报时机器人的rasa shell执行流程分析

      本文以报时机器人为载体,介绍了报时机器人的对话能力范围.配置文件功能和训练和运行命令,重点介绍了rasa shell命令启动后的程序执行过程. 一.报时机器人项目结构 1.对话能力范围 (1)能够 ...

  5. vmware 中ubuntu客户机 安装vmware tool vmhgfs 共享文件夹失败处理

    vmware版本:10.0.0 build-1295980 ubuntu版本:3.13.0-62-generic 先安装的vmware workstation自带光盘中vmare tools包,安装完 ...

  6. Ubuntu 14.04 中安装 VMware10 Tools工具

    Run: apt-get install dkms linux-headers-$(uname -r) build-essential psmisc2 - Run: git clone https:/ ...

  7. 使用Botkit和Rasa NLU构建智能聊天机器人

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 我们每天都会听到关于有能力涉及旅游.社交.法律​​.支持.销售等领域的新型机器人推出的新闻.根据我最后一次查阅的数据,单单Facebook Me ...

  8. VMware Workstation 11 中 Ubuntu 14.04 的 VMware Tools 问题 :没有显示共享文件夹

      症状:主要表现在Win7中用VM11安装的Ubuntu14.04中,安装完自带的VMware Tools之后,/mnt/hgfs 中没有前面已经设置好的共享文件夹.   仔细查看了安装过程,发现在 ...

  9. Rasa学习记录 01

    目录 Rasa的安装和简单的测试 什么是Rasa: 安装Rasa: 测试自带的数据 查看项目里的文件内容 举一反三(自己的第一个机器人) Rasa的安装和简单的测试 怪雨是新手,刚刚接触Rasa,以下 ...

  10. rasa学习(domain.yml、nlu.md、stories.md)(一)

    一. 什么是rasa Rasa是一个用于自动文本和基于语音的对话的开源机器学习框架.了解消息,保持对话以及连接到消息传递通道和API Rasa分为Rasa core和 Rasa nlu两部分: Ras ...

随机推荐

  1. 【Unity3D】Shader Graph简介

    1 Shader Graph 简介 ​ Shader Graph 是 Unity 官方在 2018 年推出的 Shader 制作插件,是图形化的 Shader 制作工具,类似于 Blender 中的 ...

  2. 删除小程序scroll-view的滚动条

    小程序scroll-view滚动条很丑,想隐藏? 在有scroll-view滚动条页面的wxss里添加: ::-webkit-scrollbar { display: none; width: 0; ...

  3. Pushpin:开源即时通信神器,让你的API秒变实时API,轻松实现WebSocket,HTTP流和HTTP长轮询等服务

    作为一个开发者,你可能已经利用过REST API来构建和集成各种应用.REST API是基于HTTP协议的交互模式,它使得客户端和服务器可以通过请求和响应来进行数据交换,简单.灵活.通用. 然而,当你 ...

  4. C++ 与 QML 之间进行数据交互的几种方法

    一.属性绑定 这是最简单的方式,可以在QML中直接绑定C++ 对象的属性.通过在C++ 对象中使用Q_PROPERTY宏定义属性,然后在QML中使用绑定语法将属性与QML元素关联起来. person. ...

  5. Java线程安全详解

    并发与多线程 blog:https://devonmusa.github.io 1 常见概念 1.1 操作系统线程运行状态 NEW RUNNABLE RUNNING BLOCKED 1.2 Java虚 ...

  6. C++快读、快写模版

    inline int read() { char ch = getchar(); int x = 0,f = 1; while (!isdigit(ch)) if (ch == '-') f = -1 ...

  7. 【闭包应用】JS:防抖、节流

    1.防抖:当进行连续操作时,只执行最后一次的操作. //防抖的概念是 当进行连续操作时,只执行最后一次的操作. function debounce(fn, delayTime) { let timeo ...

  8. QT中级(2)QTableView自定义委托(二)实现QProgressBar委托

    同系列文章 QT中级(1)QTableView自定义委托(一)实现QSpinBox.QDoubleSpinBox委托 QT中级(2)QTableView自定义委托(二)实现QProgressBar委托 ...

  9. decltype关键词

    简述 decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导. decltype 是"declare type"的缩写,译 ...

  10. Vite 5.0有哪些新变化?

    Rollup 4 Vite 现在使用 Rollup 4,它也带来了一些重大的变化,特别是: 导入断言(assertions 属性)已被重命名为导入属性(attributes 属性). 不再支持 Aco ...