endpoints.yml
是 Rasa 项目中用于配置各类服务接口(endpoints)的文件,它告诉 Rasa:
- 去哪里加载模型
- 自定义动作在哪个服务运行
- 对话历史存储在哪(tracker store)
- 是否要把事件推送到某个消息队列中(event broker)
📌 总体作用
区域 | 说明 |
---|---|
models | 从远程拉取模型的位置(可选) |
action_endpoint | 自定义动作服务的地址 |
tracker_store | 用户对话历史的存储方式(默认是内存) |
event_broker | 是否将对话事件发送到外部消息队列,比如 Kafka、RabbitMQ |
下面我们来逐一解释每个部分。
1. models
(远程模型存储)
#models:
# url: http://my-server.com/models/default_core@latest
# wait_time_between_pulls: 10
如果你想让 Rasa 每隔一段时间从远程服务器拉取更新后的模型,可以配置这个。
字段 | 含义 |
---|---|
url | 模型服务器的地址 |
wait_time_between_pulls | 轮询间隔时间(秒),默认是 100s |
⚠️ 如果你是在本地部署或开发,可以不配置这个。
2. action_endpoint
(自定义动作服务器)
#action_endpoint:
# url: "http://localhost:5055/webhook"
当你写了带逻辑的自定义动作(actions.py
),Rasa 不会直接执行,而是通过 HTTP 请求把信息发给 Action Server(通常跑在 5055 端口),再由它执行逻辑、返回结果。
字段 | 含义 |
---|---|
url | 自定义动作服务器地址,默认是本地 http://localhost:5055/webhook |
✅ 如果你要用 actions.py
中的动作,就 必须配置这个 并启动 action server:
rasa run actions
3. tracker_store
(对话追踪器)
Rasa 会记录每个用户的对话历史(称为“tracker”)。默认存储在内存中,但你可以配置为:
✅ Redis 存储(适合生产环境)
#tracker_store:
# type: redis
# url: localhost
# port: 6379
# db: 0
# password: mypassword
# use_ssl: false
✅ MongoDB 存储
#tracker_store:
# type: mongod
# url: mongodb://localhost:27017
# db: rasa
# username: myuser
# password: mypass
这样,你可以长期保存用户的对话历史,适用于:
- 多人并发
- 日志分析
- 恢复会话状态
4. event_broker
(事件推送)
#event_broker:
# url: localhost
# username: username
# password: password
# queue: queue
如果你希望把对话中的所有事件实时推送到 Kafka、RabbitMQ 等系统(用于分析、可视化、监控),可以配置这个。
⚠️ 不配置不会影响正常使用,大多数开发者默认关闭。
✅ 小结表
配置项 | 作用 | 是否必须 |
---|---|---|
models | 远程拉取模型 | ❌ 可选 |
action_endpoint | 连接自定义动作服务 | ✅ 使用自定义动作时必须 |
tracker_store | 保存对话历史(可接数据库) | ❌ 建议用于生产 |
event_broker | 将事件流推送到外部队列 | ❌ 特殊需求用 |
🧪 示例:医生助手常用配置
action_endpoint:url: "http://localhost:5055/webhook"tracker_store:type: redisurl: localhostport: 6379db: 0password: ""event_broker:type: pikaurl: amqp://localhostqueue: rasa_events
如果你告诉我你用的是本地开发还是要部署到线上(比如服务器或云平台),我可以给你推荐最适合的 endpoints.yml
配置。需要我帮你定制一下吗?