🚀 原文地址:
机器人会话存储在跟踪存储器中,Rasa 提供了不同存储类型的现成实现,你也可以自定义创建跟踪存储器。
1. InMemoryTrackerStore
Rasa 默认的跟踪存储器是InMemoryTrackerStore
,如未配置其他跟踪存储器的话,InMemoryTrackerStore
将会启用,它的作用是将对话历史存储在历史中。
:::info
💡 注意
—————————————
- 由于
InMemoryTrackerStore
是将所有历史存放在内存中,所以重启 Rasa 后所有的历史都会丢失。 - 使用
InMemoryTrackerStore
是不需要进行配置的 :::2. SQLTrackerStore
我们可以使用SQLTrackerStore
在 SQL 数据中存储机器人会话历史。配置SQLTrackerStore
步骤如下。2.1 配置PostgreSQL
在 endpoints.yml 中添加如下内容,如果想要请求路由到对应服务,请确保
url
参数使用服务名称:tracker_store:
type: SQL
dialect: "postgresql" # the dialect used to interact with the db
url: "postgres" # (optional) host of the sql db, e.g. "localhost"
db: "rasa" # path to your db
username: # username used for authentication
password: # password used for authentication
query: # optional dictionary to be added as a query string to the connection URL
driver: my-driver
加载 endpoints.yml 启动 Rasa:
$ rasa run -m models --endpoints endpoints.yml
如果采用 Docker Compose 部署模型,将以下服务添加到 docker-compose.yml 中:
postgres:
image: postgres:latest
其他可配置的参数:
domain
:与此跟踪器存储关联的领域对象dialect
:用于和 SQL 后端通信的dialect
,默认为sqlite
url
:SQL 服务器的 URLport
:SQL 服务器的端口db
:要使用的数 sqlite 据库路径,默认为rasa.db
username
:用于身份验证的用户名password
:用于身份验证的密码event_broker
:发布事件的事件代理器login_db
:最初连接的可选数据库名称,并创建由db
指定的数据库(仅适用于 PostgreSQL)query
:连接时要传递给 dialect 和/或 DBAPI 的选项字典
以下是官方公布的与SQLTrackerStore
兼容的数据库:
- PostgreSQL
- Oracle > 11.0
- SQLite
2.2 配置Oracle
3. RedisTrackerStore
我们可以使用 RedisTrackerStore
将机器人的对话历史记录存在 Redis 中,Redis 是一种快速的内存键值存储,还可以选择持久化数据。
以下是在 Rasa 中使用 Redis 的步骤:
- 启用 Redis 实例
添加所需的配置到 endpoints.yml:
tracker_store:
type: redis
url: <url of the redis instance, e.g. localhost>
port: <port of your redis instance, usually 6379>
key_prefix: <alphanumeric value to prepend to tracker store keys>
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`>
$ rasa run -m models --endpoints endpoints.yml
如果在 Docker Compose 中部署模型,请将服务添加道 docker-compose.yml:
redis:
image: redis:latest
要将请求路由到新服务,请确保 endpoints.yml 中的 url 引用服务名称:
tracker_store:
type: redis
url: <url 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>
key_prefix: <alphanumeric value to prepend to tracker store keys>
password: <password used for authentication>
use_ssl: <whether or not the communication is encrypted, default `false`>
可配置的参数:
url
:Redis 实例的 URL,默认为localhost
port
:正在运行 Redis 端口,默认为 6379db
:Redis 数据库的数量,默认为 0key_prefix
:附加到跟踪器存储键的前缀,必须为字母数字password
:用于身份验证的密码record_exp
:以秒为单位的记录过期时间use_ssl
:是否使用 SSL 进行传输加密,默认为False
4. MongoTrackerStore