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. .NET静态代码织入——肉夹馍(Rougamo)发布2.0

    肉夹馍(https://github.com/inversionhourglass/Rougamo)通过静态代码织入方式实现AOP的组件,其主要特点是在编译时完成AOP代码织入,相比动态代理可以减少应 ...

  2. CF1190C Tokitsukaze and Duel

    搬运一下本喵的 lg 博客 qwq 详细讲一下如何判定后手能否获胜,对其他题解做个补充.(蒟蒻的我想了好久来着 此题的关键点在于可以重复上一个人的操作使局面保持不变. 考虑先手的获胜条件,由上一段可知 ...

  3. 线段树(nb)

    今天刚学习了线段树,赶紧趁热打了两遍模版 下面都是线段树的基本操作,这个板子是维护的区间中的最大值,当然修改change和build包括线段树中的data可以维护区间上的不同信息. 首先介绍一下线段树 ...

  4. STM32 定时器时钟配置技巧

    众所周知 STM32 的时钟配置比较复杂,而定时器的时钟配置更是 '奇葩'. 如下图(截图自STM32F4编程手册)APB的预分频器分频系数如果不为1,则定时器的时钟就倍频了反而. 配置技巧 下面以S ...

  5. 【scipy 基础】--图像处理

    SciPy库本身是针对科学计算而不是图像处理的,只是图像处理也包含了很多数学计算,所以Scipy也提供了一个专门的模块ndimage用于图像处理. ndimage模块提供的功能包括输入/输出图像.显示 ...

  6. JavaScript高级程序设计笔记04 变量、作用域与内存

    变量.作用域与内存 变量 特定时间点一个特定值的名称. 分类 原始值:按值访问 复制:两个独立使用.互不干扰 引用值(由多个值构成的对象):按引用访问 操作对象时,实际上操作的是对该对象的引用(ref ...

  7. 暴力+DP:买卖股票的最佳时机

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润. 注意:你不能在买入股票前卖出股票. ...

  8. go基础-函数

    概述 在任何语言中函数都是极其重要的内容,业务功能都是由一个或多个函数组合完成.go语言是函数式编程语言,函数是一等公民,可以被传递.有函数类型,go语言有三种类型的函数,普通函数.匿名函数(Lamb ...

  9. docker构建打包java项目

    docker构建打包java项目 简介 本项目用于 研究和实践 docker的工作流部署发布 查看github源码 技术栈 spring-web (RESTAPI 请求交互) redis (用于实验 ...

  10. 6款AI工具网站,赶紧收藏,以备不时之需

    1.海鲸AI-支持AI对话.AI文档解析.AI绘画 海鲸AI-基于新一代人工智能技术,只需输入问题,即可得到智能回答 https://​www.weijiwangluo.com/talk/ 海鲸AI是 ...