1. 前言
問答機(jī)器人現(xiàn)在很多場(chǎng)合都有使用,比如:網(wǎng)頁智能客服、微信公眾號(hào)智能回復(fù)、淘寶的售后客服,QQ聊天機(jī)器人等等。有了這些客戶機(jī)器人就能幫我們回答很多預(yù)置的一些問題,幫助用戶解決常見問題,還可以進(jìn)行自主訓(xùn)練,得到一個(gè)適合自己使用的機(jī)器人。機(jī)器人也可以關(guān)聯(lián)很多其他的技能,玩小游戲,查詢天氣、查詢節(jié)假日、查詢很多其他的信息,非常方便。
這篇文章就采用華為云提供的智能問答機(jī)器人設(shè)計(jì)一個(gè)小軟件,采用華為云提供的API接口完成數(shù)據(jù)交互,與機(jī)器人進(jìn)行問答交互,通過這個(gè)例子可以了解到智能問答機(jī)器人的基本功能、使用場(chǎng)景、使用方法等等。
華為云的智能問答機(jī)器人特點(diǎn)介紹
提供問答引擎、機(jī)器人管理平臺(tái)來方便客戶快速、低成本構(gòu)建智能問答服務(wù)。智能問答能滿足用戶快速上線、高度定制、數(shù)據(jù)可控的需求,具有問答準(zhǔn)確率高、自主學(xué)習(xí)等特點(diǎn)。能夠幫助企業(yè)節(jié)省客服人力,大大降低客服響應(yīng)時(shí)間。
具備如下優(yōu)勢(shì)點(diǎn):
- 智能的問答管理
- 熱點(diǎn)問題、趨勢(shì)、知識(shí)自動(dòng)分析統(tǒng)計(jì)。
- 支持未知問題自動(dòng)聚類,匹配相似問答,輔助人工不斷擴(kuò)充知識(shí)庫。
- 支持問答調(diào)測(cè),點(diǎn)對(duì)點(diǎn)的監(jiān)測(cè)智能應(yīng)答過程。
- 支持領(lǐng)域知識(shí)挖掘,提供易用的標(biāo)注工具挖掘領(lǐng)域詞。
- 全面的對(duì)話管理
- 支持自然語言多能力融合,智能對(duì)話中控。
- 靈活的知識(shí)庫管理,支持對(duì)知識(shí)的批量操作。
- 支持嵌入多輪對(duì)話技能,滿足復(fù)雜的任務(wù)型對(duì)話場(chǎng)景。
- 高效訓(xùn)練部署
2. 使用問答機(jī)器人服務(wù)
2.1 開通服務(wù)
地址: https://www.huaweicloud.com/product/cbsqa.html
點(diǎn)擊立即使用
會(huì)進(jìn)入到購買頁面,可以免費(fèi)體驗(yàn)14天,對(duì)于技術(shù)評(píng)估,場(chǎng)景測(cè)試已經(jīng)足夠。
2.2 配置機(jī)器人
(1)機(jī)器人購買之后,點(diǎn)擊進(jìn)入管理頁面,對(duì)機(jī)器人的屬性、技能進(jìn)行配置,訓(xùn)練。
(2)可以添加預(yù)置的技能,還可以添加自定義技能
預(yù)置的技能有查詢天氣、成語接龍、查星座、查節(jié)日、猜數(shù)字游戲等等。也可以自己自定義技能標(biāo)注訓(xùn)練發(fā)布。
2.3 對(duì)話體驗(yàn)
在管理頁面右上角可以在線體驗(yàn)與機(jī)器人對(duì)話,可以快速調(diào)試問答效果。
2.4 接口調(diào)試
地址: https://support.huaweicloud.com/api-cbs/cbs_03_0115.html
在調(diào)用API測(cè)試之前,可以先使用在線調(diào)試接口測(cè)試,了解請(qǐng)求如何發(fā)出,有哪些必填參數(shù),請(qǐng)求參數(shù)怎么填,返回的結(jié)果格式是怎樣的。
2.5 API請(qǐng)求總結(jié)
(1)請(qǐng)求的URL格式
請(qǐng)求的URL格式: POST /v1/{project_id}/qabots/{qabot_id}/chat
其中參數(shù)介紹:
project_id 是項(xiàng)目ID。
qabot_id 是機(jī)器人標(biāo)識(shí)符,qabot編號(hào),UUID格式。如:303a0a00-c88a-43e3-aa2f-d5b8b9832b02。
登錄對(duì)話機(jī)器人服務(wù)控制臺(tái),在智能問答機(jī)器人列表中就可以查看到abot_id。
最終拼接的URL格式: https://cbs-ext.cn-north-4.myhuaweicloud.com/v1/0e5957be8a00f53c2fa7c0045e4d8fbf/qabots/5c889415-6834-4ada-aa51-ea5000941e25/chat
(2)請(qǐng)求頭與請(qǐng)求參數(shù)總結(jié)
請(qǐng)求頭:
"X-Auth-Token": "------------", 這是API接口鑒權(quán)用的,所有的API請(qǐng)求都要這個(gè)參數(shù)
"Content-Type": "application/json"
請(qǐng)求體:
{
"question": "北京天氣" 這是給機(jī)器人提交的問題,隨后機(jī)器人會(huì)返回答案
}
?
響應(yīng)結(jié)果:
{
"request_id": "e3ab440c-0bb2-455b-aff8-07e4cc4115f4",
"reply_type": 1,
"taskbot_answers": {
"answer": "當(dāng)前北京天氣晴,最高8攝氏度,最低-5攝氏度,日間南風(fēng)≤3級(jí),夜間南風(fēng)≤3級(jí)。",
"skill_id": "22a20348-aa8b-44d2-96df-dcae1b8d92c2",
"skill_responses": [
{
"frame": {
"intention": "weather_query",
"confidence": 1,
"reply": "當(dāng)前北京天氣晴,最高8攝氏度,最低-5攝氏度,日間南風(fēng)≤3級(jí),夜間南風(fēng)≤3級(jí)。",
"intention_alias": "查天氣",
"candidate_words": [],
"task_complete": true,
"flow_complete": true,
"current_slots": [
{
"slot_id": "a9ee29df-8f60-4ff1-863e-60e9412a1f95",
"slot_name": "地點(diǎn)",
"slot_identification": "loc",
"slot_values": [
{
"word": "北京",
"norm_word": "北京",
"begin_position": 0,
"end_position": 1
}
]
}
],
"history_slots": []
},
"candidate": {
"candidate_confidence": 0
},
"skill_id": "22a20348-aa8b-44d2-96df-dcae1b8d92c2",
"skill_version": "v50",
"locked": false,
"related_intentions": [
{
"intention": "weather_query",
"confidence": 1
}
]
},
{
"frame": {
"confidence": 0,
"reply": "你太難理解了,我需要一些信息才能知道呢,哼!",
"candidate_words": [],
"task_complete": true,
"flow_complete": true,
"current_slots": [],
"history_slots": []
},
"candidate": {
"candidate_confidence": 0
},
"skill_id": "8b71d740-aedb-4c01-8948-460dab64fd22",
"skill_version": "v67",
"locked": false,
"related_intentions": [
{
"intention": "constellation",
"confidence": 0.513
}
]
},
{
"frame": {
"confidence": 0,
"reply": "對(duì)不起,我沒明白,請(qǐng)?jiān)俣嘟涛乙恍┌?,
"candidate_words": [],
"task_complete": true,
"flow_complete": true,
"current_slots": [],
"history_slots": []
},
"candidate": {
"candidate_intention": "chengyu",
"candidate_confidence": 0.507154
},
"skill_id": "9d2aa6d4-8461-4ca7-9db8-af32fdbfde57",
"skill_version": "v12",
"locked": true,
"related_intentions": [
{
"intention": "chengyu",
"confidence": 0.507
}
]
},
{
"frame": {
"confidence": 0,
"reply": "對(duì)不起,我沒明白,請(qǐng)?jiān)俣嘟涛乙恍┌?,
"candidate_words": [],
"task_complete": true,
"flow_complete": true,
"current_slots": [],
"history_slots": []
},
"candidate": {
"candidate_confidence": 0
},
"skill_id": "4a93acd4-5a29-4188-b033-9fffd932e5df",
"skill_version": "v31",
"locked": true,
"related_intentions": [
{
"intention": "sys.other",
"confidence": 0.555
}
]
},
{
"frame": {
"confidence": 0,
"reply": "對(duì)不起,我沒明白,請(qǐng)?jiān)俣嘟涛乙恍┌?,
"candidate_words": [],
"task_complete": true,
"flow_complete": true,
"current_slots": [],
"history_slots": []
},
"candidate": {
"candidate_confidence": 0
},
"skill_id": "25ad99ee-8a13-40a2-8fa1-0a18370e2ef5",
"skill_version": "v34",
"locked": false,
"related_intentions": [
{
"intention": "sys.other",
"confidence": 0
}
]
}
]
},
"session_id": "4b105ca2-28e2-4ec8-bd4b-87c8d7c6a322"
}
請(qǐng)求頭里的X-Auth-Token字段在之前的文章已經(jīng)介紹過,獲取方法看這里: https://bbs.huaweicloud.com/blogs/317759 翻到2.3小節(jié)。
(3)請(qǐng)求參數(shù)介紹
詳細(xì)的參數(shù)可以看官方文檔介紹: https://support.huaweicloud.com/api-cbs/cbs_03_0115.html
請(qǐng)求參數(shù)里一般主要填下面兩個(gè)字段:
?
question 這是必填的參數(shù),填用戶的問題。如:查天氣。長(zhǎng)度為1~512。
?
session_id 填會(huì)話標(biāo)識(shí)符,UUID格式。如:c04e6f7b-61d7-4a2d-a0c8-f9ecd2f62359。
每次對(duì)話開啟,機(jī)器人創(chuàng)建會(huì)話id,下次請(qǐng)求中傳入該id表示繼續(xù)該輪對(duì)話,每輪會(huì)話有效時(shí)間為2分鐘。
若傳入的會(huì)話id已過期或者為空,則機(jī)器人會(huì)重新創(chuàng)建新的會(huì)話id(重新創(chuàng)建會(huì)話id會(huì)消耗一定時(shí)間)。
比如: 玩成語接龍游戲,就需要填會(huì)話標(biāo)識(shí)ID,這樣才可以接著上一次的對(duì)話繼續(xù)問答。
(4)響應(yīng)參數(shù)介紹
reply_type 表示當(dāng)前回答的類型
0 知識(shí)庫回復(fù)。
1 技能回復(fù)。
2 閑聊回復(fù)。
3 圖譜回復(fù)。
4 文檔回復(fù)。
5 表格回復(fù)。
?
session_id 這是當(dāng)前的會(huì)話id,每次對(duì)話開啟,機(jī)器人創(chuàng)建會(huì)話id,下次請(qǐng)求中傳入該id表示繼續(xù)該對(duì)話,每輪會(huì)話有效時(shí)間為2分鐘。
?
以技能回復(fù)為例:
"taskbot_answers": {
"answer": "當(dāng)前北京天氣晴,最高8攝氏度,最低-5攝氏度,日間南風(fēng)≤3級(jí),夜間南風(fēng)≤3級(jí)。",
}
3. 實(shí)現(xiàn)效果與案例代碼
3.1 實(shí)現(xiàn)效果
(1)成語接龍
(2)天氣查詢
(3)查星座
(4)猜數(shù)字游戲
3.2 核心代碼
#include "widget.h"
#include "ui_widget.h"
?
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui- >setupUi(this);
?
this- >setWindowTitle("智能問答機(jī)器人");
?
?
//讀取之前保存的token數(shù)據(jù)
QString data_token=ReadDataFile();
if(!data_token.isEmpty())
{
Token=data_token.toUtf8();
qDebug()< "讀取到之前的數(shù)據(jù):"<
審核編輯:湯梓紅
-
機(jī)器人
+關(guān)注
關(guān)注
211文章
28379瀏覽量
206908 -
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151014 -
華為云
+關(guān)注
關(guān)注
3文章
2445瀏覽量
17406
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論