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: SQLdialect: "mysql+pymysql"url: "localhost"# your mysql hostdb: "rasa"# name of the mysql databaseusername: "root"# username to access the databasepassword: "password"# password to access the database
在这个配置中,type
是 SQL
,dialect
是 mysql+pymysql
,这表示使用的是 MySQL 数据库,并且使用 pymysql 作为数据库驱动。url
、db
、username
和 password
分别是 MySQL 数据库的主机名,数据库名,用户名和密码。
然后,需要确保环境中已经安装了 pymysql
这个库。如果没有,可以使用以下命令进行安装:
pip install pymysql
这样,Rasa 就会使用 MySQL 作为 tracker_store
进行对话跟踪的存储了。TrackerStore
是一个抽象基类,它定义了一些方法,但并没有定义具体的数据结构。具体的数据结构取决于你选择的 TrackerStore
的实现。例如,SQLTrackerStore
,RedisTrackerStore
,DynamoTrackerStore
,MongoTrackerStore
等都有自己的数据结构。
但是,可以从 TrackerStore
的方法中推断出一些通用的字段。例如,save
方法接受一个 DialogueStateTracker
对象,这个对象包含了一次对话的所有信息。DialogueStateTracker
对象主要包含以下字段:
sender_id
:对话的发送者 ID,类型为字符串。slots
:对话的槽位信息,类型为字典,键为槽位名,值为槽位值。latest_message
:最新的消息,类型为UserUttered
对象,包含了消息的文本、意图、实体等信息。events
:对话的事件列表,类型为列表,包含了对话中的所有事件,如UserUttered
,BotUttered
,SlotSet
等。
具体的 TrackerStore
实现可能会存储更多的信息,也可能会对这些信息进行一些转换。例如,SQLTrackerStore
会将这些信息存储到 SQL 数据库中,而 RedisTrackerStore
则会将这些信息存储到 Redis 中。
二.Rasa 中的 event_broker
在 Rasa 中,broker
是用于处理和传递消息的组件。它主要用于将事件(如用户的消息,机器人的回复,槽位的设置等)从一个地方传递到另一个地方。例如,当用户发送一条消息时,broker
会将这条消息从输入通道传递到 Rasa 核心,然后再将 Rasa 核心的回复传递回输入通道。
Rasa 支持多种类型的 broker
,包括 RabbitMQ
、Kafka
、SQL
、文件和自定义等。可以在 endpoints.yml
文件中配置 broker
。以下是一个使用 RabbitMQ
作为 broker
的示例配置:
event_broker:type: "pika"url: "localhost"# rabbitmq hostusername: "guest"# username to access rabbitmqpassword: "guest"# password to access rabbitmqqueues:- "rasa_core_events"# name of the rabbitmq queue
在这个配置中,type
是 pika
,这表示使用的是 RabbitMQ
作为 broker
。url
、username
和 password
分别是 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/