Rasa 是一个开源框架,专门用于构建基于机器学习的对话式人工智能助手或聊天机器人。它提供了从自然语言理解 (NLU) 到对话管理的一站式解决方案。
Rasa 的主要组成部分
-
Rasa NLU (Natural Language Understanding)
- 用于处理用户输入,提取意图和实体。
- 主要任务:
- 意图识别:理解用户的意图,比如“查询天气”或“预订酒店”。
- 实体识别:从用户输入中提取具体信息,比如日期、地点等。
-
Rasa Core
- 负责对话管理,通过机器学习预测下一步的动作。
- 支持:
- 根据上下文动态生成对话。
- 集成业务逻辑和 API 调用。
Rasa 的核心特性
-
开源和灵活
- 可以根据需求自定义管道和模型。
- 与现有系统和数据库轻松集成。
-
支持多种语言
- 内置多语言支持,用户可以通过训练实现特定语言的理解。
-
完全本地运行
- Rasa 不需要依赖云服务,数据完全掌控在本地,适合注重隐私和安全的项目。
-
基于机器学习
- 使用 TensorFlow 或其他深度学习框架进行模型训练。
- 可以通过自定义训练数据优化性能。
-
无代码/低代码选项
- 提供 Rasa X(一个用于测试和改进对话的可视化工具),方便快速部署和迭代。
Rasa 工作流程
-
定义训练数据
- 创建 NLU 数据,包含意图、示例句子和实体标签。
- 创建对话故事,描述可能的对话流程。
-
配置管道
- 配置 NLU 管道和对话策略。
-
训练模型
- 通过训练数据生成模型。
-
测试和调试
- 使用 Rasa Shell 或 Rasa X 进行测试。
-
部署和集成
- 将 Rasa 部署到服务器,并与前端(如网页、微信、Telegram 等)集成。
示例代码
NLU 数据示例 (nlu.yml
)
version: "3.0"
nlu:
- intent: greet
examples: |
- 你好
- 您好
- 嘿
- intent: goodbye
examples: |
- 再见
- 拜拜
- 下次见
- intent: inform
examples: |
- 我的名字是 [小明](name)
- 我住在 [北京](city)
对话故事 (stories.yml
)
version: "3.0"
stories:
- story: greet and goodbye
steps:
- intent: greet
- action: utter_greet
- intent: goodbye
- action: utter_goodbye
培训模型和运行
# 训练模型
rasa train# 启动 Rasa 服务器
rasa run# 启动 Rasa Shell 测试
rasa shell