来源:https://terrifyzhao.github.io/2018/09/17/Rasa使用指南01.html
story文件定义了聊天流程模板,多轮对话按照模板进行对话,story中有意图和行为,意图决定了返回什么行为。
domain则是定义了意图有哪些,行为有哪些,行为的具体内容是什么。
story、domain、nlu文件之间的关系如下:
有了slot之后呢?
pip install rasa_core
执行上面的命令这时可能会出现C++环境问题如下
这里提供了C++的文件在windows中双击安装即可。
网盘地址:https://pan.baidu.com/s/1kQvBw1dg8qzF-e7DvH8TWw
提取码:ef5y
pip install rasa_nlu[tensorflow]
首先配置stories文件,注意编码格式utf-8,在编辑内容保存的时候检查文件保存格式。文件名是stories.md,文件的具体内容如下:
## story_happy
* greet
- utter_greet
* mood_happy
- utter_happy
## story_unhappy
* greet2
- utter_greet
* mood_unhappy
- utter_unhappy
接下来配置domain文件,文件名是domain.yml,注意编码格式utf-8,在编辑内容保存的时候检查文件保存格式。文件的具体内容如下:
intents:
- greet
- mood_happy
- mood_unhappy
actions:
- utter_greet
- utter_happy
- utter_unhappy
templates:
utter_greet:
- text: "你好,你今天过的怎么样"
utter_happy:
- text: "那很棒棒哦"
utter_unhappy:
- text: "咋了,可以告诉我吗"
domain.yml中的内容要与stories.md中的内容对应上
以上的文件存放在同一目录下,在当前目录中执行下面的命令:
python -m rasa_core.train -d domain.yml -s stories.md -o models/dialogue
执行下面的命令,开启对话服务:
python -m rasa_core.run -d models/dialogue
输入内容就可以对话了。
配置nlu文件,文件名nlu.md,文件内容如下:
## intent:greet
- 你好
- 上午好
- 下午好
- 早上好
- 晚上好
## intent:mood_happy
- 很好
- 我很好
## intent:mood_unhappy
- 我很难受
- 我心情很差
配置nlu_config文件,文件名nlu_config.yml,文件内容如下:
language: zh
pipeline: tensorflow_embedding
在同级目录下,执行下面的命令:
python -m rasa_nlu.train -c nlu_config.yml --data nlu.md -o models --fixed_model_name nlu --project current --verbose
同级目录下执行下列命令,开启对话
python -m rasa_core.run -d models/dialogue -u models/current/nlu
在domain.yml中定义slot,内容如下:
entities:
- city
slots:
city:
type: text
action依赖rasa_core_sdk的,需要安装
pip install rasa_core_sdk
action是以服务的形式调用的。所以需要配置endpoints文件,文件名endpoints.yml,文件内容如下:
action_endpoint:
url: "http://localhost:5055/webhook"
文件名自定义,这里定义的test.py,文件内容如下:
from rasa_core_sdk import Action
from rasa_core_sdk.events import SlotSet
class ActionAskWeather(Action):
def name(self):
return 'action_ask_weather'
def run(self, dispatcher, tracker, domain):
dispatcher.utter_message(f'您问的天气地点是哪里呢')
return [SlotSet('city', '深圳')]
stroies.md中添加关于天气的场景、意图、行为,内容如下:
## story_ask_weather
* ask_weather
- action_ask_weather
* weather_city
- utter_weather_good
配置domain.yml文件,在意图、实体、行为中都进行添加,具体内容如下:
intents:
- greet
- mood_happy
- mood_unhappy
- ask_weather
- weather_city
entities:
- city
slots:
city:
type: text
actions:
- utter_greet
- utter_happy
- utter_unhappy
- action_ask_weather
- utter_weather_good
templates:
utter_greet:
- text: "你好,你今天过的怎么样"
utter_happy:
- text: "那很棒棒哦"
utter_unhappy:
- text: "咋了,可以告诉我吗"
utter_weather_good:
- text: "{city}天气很好呢"
1、rasa_core
python -m rasa_core.train -d domain.yml -s stories.md -o models/dialogue -c policy_config.yml
2、rasa_nlu
python -m rasa_nlu.train -c nlu_config.yml --data nlu.md -o models --fixed_model_name nlu --project current --verbose
3、action
python -m rasa_core_sdk.endpoint --actions test
4、开启服务
python -m rasa_core.run -d models/dialogue -u models/current/nlu --endpoints endpoints.yml
接下来可以进行对话测试了。
以上内容理解可以参考Rasa使用指南
项目中的代码可以参考:项目源码
如果你只是了解学习rasa,截至目前为止,就可以了。如果想在公司的项目中应用rasa,那需要继续关注后续内容。