Rasa簡(jiǎn)介
Rasa框架包含四個(gè)部分:
- Rasa NLU:提取用戶想要做什么和關(guān)鍵的上下文信息
- Rasa Core:基于對(duì)話歷史,選擇最優(yōu)的回復(fù)和動(dòng)作
- 通道(channel)和動(dòng)作(action):連接對(duì)話機(jī)器人與用戶及后端服務(wù)系統(tǒng)
- tracker store、lock store和event broker等輔助系統(tǒng)
1. 系統(tǒng)結(jié)構(gòu)
Rasa的核心部分分為Rasa和Rasa SDK兩部分
Rasa又可細(xì)分為Rasa NLU和Rasa Core
- Rasa
- Rasa NLU:主要負(fù)責(zé)將用戶的輸入轉(zhuǎn)化為意圖和實(shí)體信息,即自然語(yǔ)言理解(NLU)過(guò)程
- Rasa Core:主要負(fù)責(zé)基于當(dāng)前和歷史的對(duì)話記錄(Rasa NLU的輸出是對(duì)話記錄的一部分),決策下一個(gè)動(dòng)作(action),下一個(gè)動(dòng)作可能是回復(fù)用戶某種消息、調(diào)用用戶自定義的動(dòng)作類。
- Rasa SDK
幫助用戶構(gòu)建自定義動(dòng)作的軟件開(kāi)發(fā)工具包(Software Development Kit, SDK)。大多數(shù)機(jī)器人通過(guò)調(diào)用外部服務(wù)來(lái)完成功能。例如天氣機(jī)器人調(diào)用天氣信息服務(wù)商的接口完成天氣查詢。
在Rasa中,這種由具體業(yè)務(wù)決定的動(dòng)作被稱為自定義動(dòng)作(custom action)。自定義動(dòng)作運(yùn)行在一個(gè)單獨(dú)的服務(wù)器進(jìn)程中,稱為動(dòng)作服務(wù)器(action server)。動(dòng)作服務(wù)器通過(guò)HTTP與Rasa Core通信。
另外,完整的聊天機(jī)器人需要一個(gè)友好的使用界面,Rasa通過(guò)通道(channel)支持多種即時(shí)通信軟件(Instant Messaging,IM)對(duì)接Rasa。

康威定律(Conway's Law):軟件系統(tǒng)的結(jié)構(gòu)反映組織結(jié)構(gòu)。
基于此理論,Rasa NLU和Rasa Core結(jié)合比較緊密,都位于Rasa的軟件包中;而Rasa SDK單獨(dú)為一個(gè)軟件包。
通常情況下,Rasa NLU和Rasa Core由算法團(tuán)隊(duì)負(fù)責(zé),而自定義動(dòng)作的開(kāi)發(fā)由python工程師團(tuán)隊(duì)負(fù)責(zé)。Rasa SDK和Rasa Core的分開(kāi)設(shè)計(jì)可以使兩個(gè)團(tuán)隊(duì)在低耦合情況下,各自獨(dú)立開(kāi)發(fā),獨(dú)立部署,獨(dú)立改進(jìn),從而提高工作效率。
2 Rasa項(xiàng)目的基本流程
構(gòu)建一個(gè)完整的Rasa項(xiàng)目工程步驟:
- 初始化項(xiàng)目
- 準(zhǔn)備NLU訓(xùn)練數(shù)據(jù)
- 配置NLU模型
- 準(zhǔn)備故事(story)數(shù)據(jù)
- 定義領(lǐng)域(domain)
- 配置Rasa Core模型
- 訓(xùn)練模型
- 測(cè)試機(jī)器人
- 讓人們使用機(jī)器人
3 Rasa常用命令
rasa 常用命令 - python包包俠 - 博客園 (cnblogs.com)
rasa 如何寫(xiě)一個(gè)故事 - python包包俠 - 博客園 (cnblogs.com)
| 命令 | 功能 |
|---|---|
| rasa init | 創(chuàng)建一個(gè)新的項(xiàng)目,包含樣本訓(xùn)練模型、配置和動(dòng)作 |
| rasa train | 使用NLU訓(xùn)練數(shù)據(jù)、故事數(shù)據(jù)和配置訓(xùn)練模型,默認(rèn)保存訓(xùn)練模型到./models目錄 |
| rasa interactive | 交互式訓(xùn)練,通過(guò)和機(jī)器人對(duì)話修正可能的錯(cuò)誤,并將對(duì)話數(shù)據(jù)導(dǎo)出。 |
| rasa shell | 等價(jià)于執(zhí)行rasa run命令,開(kāi)啟基于命令行界面的對(duì)話界面和機(jī)器人交流。 |
| rasa run | 運(yùn)行rasa服務(wù)器。用訓(xùn)練過(guò)的模型啟動(dòng)服務(wù)器 |
| rasa run actions | 使用rasa動(dòng)作服務(wù)器 |
| rasa visualize | 生成你的故事視覺(jué)表 |
| rasa test | 在任何以test_開(kāi)頭的文件上測(cè)試經(jīng)過(guò)訓(xùn)練的rasa模型 |
| rasa x | 在本地模式啟動(dòng)rasa x服務(wù)器 |
| rasa -h | 顯示所有可用命令 |
| rasa data split nlu | 對(duì)NLU訓(xùn)練數(shù)據(jù)進(jìn)行80/20的分割 |
| rasa data convert | 在不同格式之間轉(zhuǎn)換訓(xùn)練數(shù)據(jù) |
| rasa data validate | 檢查域,NLU和會(huì)話數(shù)據(jù)是否一致 |
| rasa export | 將會(huì)話從跟蹤器存儲(chǔ)導(dǎo)出到事件代理 |
4 創(chuàng)建示例項(xiàng)目
.
|---- actions
??|---- actions.py
??|---- init.py
|---- config.yml
|---- credentials.yml
|---- data
??|---- nlu.yml
??|---- rules.yml
??|---- stories.yml
|---- domain.yml
|---- endpoints.yml
|---- tests
??|---- test_stories.yml