🚀 原文地址:

机器人会话存储在跟踪存储器中,Rasa 提供了不同存储类型的现成实现,你也可以自定义创建跟踪存储器。

1. InMemoryTrackerStore

Rasa 默认的跟踪存储器是InMemoryTrackerStore,如未配置其他跟踪存储器的话,InMemoryTrackerStore 将会启用,它的作用是将对话历史存储在历史中。

:::info 💡 注意
—————————————

  • 由于InMemoryTrackerStore是将所有历史存放在内存中,所以重启 Rasa 后所有的历史都会丢失。
  • 使用InMemoryTrackerStore是不需要进行配置的 :::

    2. SQLTrackerStore

    我们可以使用 SQLTrackerStore 在 SQL 数据中存储机器人会话历史。配置SQLTrackerStore步骤如下。

    2.1 配置PostgreSQL

  1. endpoints.yml 中添加如下内容,如果想要请求路由到对应服务,请确保 url 参数使用服务名称:

    1. tracker_store:
    2. type: SQL
    3. dialect: "postgresql" # the dialect used to interact with the db
    4. url: "postgres" # (optional) host of the sql db, e.g. "localhost"
    5. db: "rasa" # path to your db
    6. username: # username used for authentication
    7. password: # password used for authentication
    8. query: # optional dictionary to be added as a query string to the connection URL
    9. driver: my-driver
  2. 加载 endpoints.yml 启动 Rasa:

    1. $ rasa run -m models --endpoints endpoints.yml
  3. 如果采用 Docker Compose 部署模型,将以下服务添加到 docker-compose.yml 中:

    1. postgres:
    2. image: postgres:latest

其他可配置的参数:

  • domain:与此跟踪器存储关联的领域对象
  • dialect:用于和 SQL 后端通信的dialect,默认为 sqlite
  • url:SQL 服务器的 URL
  • port: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 的步骤:

  1. 启用 Redis 实例
  2. 添加所需的配置到 endpoints.yml

    1. tracker_store:
    2. type: redis
    3. url: <url of the redis instance, e.g. localhost>
    4. port: <port of your redis instance, usually 6379>
    5. key_prefix: <alphanumeric value to prepend to tracker store keys>
    6. db: <number of your database within redis, e.g. 0>
    7. password: <password used for authentication>
    8. use_ssl: <whether or not the communication is encrypted, default `false`>
    1. $ rasa run -m models --endpoints endpoints.yml
  3. 如果在 Docker Compose 中部署模型,请将服务添加道 docker-compose.yml

    1. redis:
    2. image: redis:latest

    要将请求路由到新服务,请确保 endpoints.yml 中的 url 引用服务名称:

    1. tracker_store:
    2. type: redis
    3. url: <url of the redis instance, e.g. localhost>
    4. port: <port of your redis instance, usually 6379>
    5. db: <number of your database within redis, e.g. 0>
    6. key_prefix: <alphanumeric value to prepend to tracker store keys>
    7. password: <password used for authentication>
    8. use_ssl: <whether or not the communication is encrypted, default `false`>

可配置的参数:

  • url:Redis 实例的 URL,默认为localhost
  • port:正在运行 Redis 端口,默认为 6379
  • db:Redis 数据库的数量,默认为 0
  • key_prefix:附加到跟踪器存储键的前缀,必须为字母数字
  • password:用于身份验证的密码
  • record_exp:以秒为单位的记录过期时间
  • use_ssl:是否使用 SSL 进行传输加密,默认为 False

    4. MongoTrackerStore

5. DynamoTrackStore

6. CustomTrackerStore