天天看點

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

以下這篇文章主要介紹微軟的對話機器人架構,轉載自

https://blog.csdn.net/weixin_33979745/article/details/85926649

實作的大緻效果是可以詢問微軟俱樂部的相關情況,并且查詢天氣。效果示範如下:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

下面我會将整個過程進行詳細的表述。

1. 什麼是Bot Framework?

Bot Framework就是幫你快速搭建智能服務的後端,快速在各種終端和服務上提供服務。包括三大元件。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

Bot Builder SDKs:

這個是Bot的生成器,快速生成一個ASP.NET和Node.js的後端服務,提供了像Dialog、FormFlow幫你管理與使用者的會話。

Bot Connector:

這是個Bot的Channel,幫你把你的服務快速釋出到各個管道,比如說Skype,Facebook Messager等等。這樣使用者就可以在Skype等Channel上使用你的服務了。

Bot Directory:

這個算是Bot 的商店,在這裡可以找到各個bot,你也可以把自己的Bot釋出出來,進而大家都可以看到你的Bot。

官方網址:https://docs.microsoft.com/zh-cn/bot-framework,用你的微軟賬戶登入就行。

界面如圖所示:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

2. 什麼是LUIS?

說到LUIS,我們首先談一下Cognitive Services(認知服務)。

Cognitive Services(認知服務)的前身是Project Oxford(牛津計劃),正式釋出的時候更名的。這是微軟将研究院研究的技術以API和SDK的形式開放給開發者的一系列智能化服務。

主要包括5大類的服務:視覺、語言、語言、知識和搜尋。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

其實就包括我們今天要講的"語言了解(Language Understanding Intelligent Service,簡稱LUIS)"。

LUIS的官網介紹:https://www.luis.ai,用你的微軟賬戶登入就行。

界面如圖所示:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

點選"App"這一欄,咱們先點選"new App"建立一個app。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

建立完成後,點選應用的名稱,進入編輯這個應用。

我們先看以下左邊的tab,可以看到有儀表盤,意圖(Intents),實體(Entities),功能以及釋出應用。。。。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

Intents:就是意圖,比如咱們現在要提供天氣查詢的服務,那麼咱們就建立一個"查詢天氣"的Intent。

實體裡頭有兩類:

Entities:實體,比如在查詢天氣的時候需要有地理位置資訊,需要把使用者的語言裡頭的地點提取出來,這個地點就是這個句子裡頭的執行個體,咱們建立一個"地點"的執行個體。

Pre-built Entities(預建實體):這個是預置好的執行個體,比如說時間,數字等等,我加了一個datetime的預置執行個體。

在功能裡頭會有:

Phrase List Features(短語清單功能):固定的一些短語,能夠直接識别,比如說航空公司的名字等已知資訊

Pattern Features(模式功能):正規表達式,可以比對出相應的一些字段,比如說航班号。

咱們現在來建立一個能夠識别查詢天氣的語言了解服務。

首先,查詢天氣需要地點資訊,咱們先建立一個"地點"的執行個體。

點選到“實體”裡頭,“添加自定義實體”:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程
對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

 添加一個“預建實體” datetime:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

再建立一個叫做"查詢天氣"的Intent。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

點選save之後會出現以下界面:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

在“句式”中,輸入幾個例子,比如說“北京天氣怎麼樣”,可以多輸入幾個句子的類型,比如“北京今天有霧霾嗎?”等等,沒輸入完一句按一下回車。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

如果北京等地點資訊沒有顯示标記的話,選中北京兩個字,然後選擇"地點"标注。然後點選"儲存"。

之後點選"釋出應用",點選該界面裡頭的"Train"按鈕。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

開始訓練,可能需要點時間,你可以做點其他事情。

訓練完成之後,Publish按鈕,釋出成api的形式。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

大家可以看到有“Endpoint url”這個選項,這個url後面加上查詢語句就是API了。

如:https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/LUIS_APP_ID?subscription-key=LUIS_subscription-key&timezoneOffset=0.0&verbose=true&q=北京今天天氣怎麼樣?

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

把LUIS的ID(就是apps後面那串字元)和subscription-key記下來,後面需要用到。

在URL後面可以輸入相關的語句,然後回車,就可以看到傳回的json字元串了。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

3. 什麼是QnA Maker?

QnA Maker可以建立、訓練并釋出一個基于問題對的智能比對,可以通過簡單的訓練來組織問題對,特别适合處理的就是标準問答的形式,比如“微軟學生俱樂部是什麼?”“如何加入微軟俱樂部?”等等,後面比對上标準的答案。

官方網址:https://qnamaker.ai

界面如下:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

第一次進入,我們點選Create new Service,進入建立界面。

SERVICE NAME:随便起,我起的BOPdemo。

FAQ URL(S):如果你有相關的URL,可以填寫,沒有可以不寫。樣式參考:http://studentclub.msra.cn/bop2017/qa這種格式。

FAQ FILES:如果有相關檔案可以直接導入,沒有可以不導入,因為最後還可以手動導入。樣例檔案如下:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

中間記得用tab鍵隔開。至此,就建立完了。

建立完了之後,你會發現在My services多了一個剛才建立的服務,如下:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

   點進去之後,效果如圖:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

還可以通過Add new QnA pair添加單獨的問題對。添加完了之後别忘了Save and retrain,之後你就可以通過Test進行測試,比如我輸入Hi,機器人回複Hello。

通過URL,File以及單獨添加的問題對都訓練完并且測試滿足條件之後,你就可以Publish釋出了。

這時你肯定想問,怎麼通過自己的代碼進行通路啊?我以C#為例:參考文檔:https://qnamaker.ai/Documentation/ApiReference

Publish之後,會形成如下HTTP樣式:

POST /knowledgebases/<Your KB ID>/generateAnswer HTTP/1.1
Host: https://westus.api.cognitive.microsoft.com/qnamaker/v1.0
Ocp-Apim-Subscription-Key: <Your Subscription key>
Content-Type: application/json
Cache-Control: no-cache
{"question": "Question goes here"}      

請求的代碼:

string responseString = string.Empty;
      

var query = “hi”; //User Query

var knowledgebaseId = “YOUR_KNOWLEDGE_BASE_ID”; // Use knowledge base id created.

var qnamakerSubscriptionKey = “YOUR_SUBSCRIPTION_KEY”; //Use subscription key assigned to you.

//Build the URI

Uri qnamakerUriBase = new Uri(“https://westus.api.cognitive.microsoft.com/qnamaker/v1.0”);

var builder = new UriBuilder($"{qnamakerUriBase}/knowledgebases/{knowledgebaseId}/generateAnswer");

//Add the question as part of the body

var postBody = $"{{“question”: “{query}”}}";

//Send the POST request

using (WebClient client = new WebClient())

{

//Set the encoding to UTF8

client.Encoding = System.Text.Encoding.UTF8;

</span><span style="color:#008000;">//</span><span style="color:#008000;">Add the subscription key header</span>
client.Headers.Add(<span style="color:#800000;">"</span><span style="color:#800000;">Ocp-Apim-Subscription-Key</span><span style="color:#800000;">"</span><span style="color:#000000;">, qnamakerSubscriptionKey);
client.Headers.Add(</span><span style="color:#800000;">"</span><span style="color:#800000;">Content-Type</span><span style="color:#800000;">"</span>, <span style="color:#800000;">"</span><span style="color:#800000;">application/json</span><span style="color:#800000;">"</span><span style="color:#000000;">);
responseString </span>=<span style="color:#000000;"> client.UploadString(builder.Uri, postBody);
           

}

View Code

得到的響應格式是JSON,如下:

{ "Answer": "Sample response", "Score": "0" }      

4. 開發流程

1) 首先擷取Bot Builder SDK和Bot模拟器

可以去https://docs.microsoft.com/en-us/bot-framework/resources-tools-downloads進行參考。 

首先,請下載下傳Bot Framework的SDK,建議下載下傳Bot Framework的Visual Studio的模闆Bot Application。

下載下傳下來的模闆(不用解壓)請直接放置到C:\Users\你的使用者名\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C# 下面,這樣你在C#下面就可以看到有Bot Application的模闆了。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

如果是使用NuGet來下載下傳SDK,請參考:

  1. 右鍵你的C#項目,選擇"Manage NuGet Packages".
  2. 在"Browse"的tab頁,輸入"Microsoft.Bot.Builder".
  3. 點選"Install"的按鈕.

下載下傳模拟器的位址為:https://github.com/Microsoft/BotFramework-Emulator/releases/tag/v3.5.31

選擇.exe那個,直接下一步,下一步就行了。

2)建立一個新項目

快速開始,參考:https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-quickstart

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程
對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

建立完之後,預設就是一個完整的項目,可以直接運作。直接點選運作,會打開一個web頁面,位址欄如下:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

打開模拟器輸入URL:http://localhost:3979/api/messages

直接點選Connect即可。此時,你輸入一段話,對方就會回一段話,顯示你發送的内容,并說明這句話有多少字元。

這個基本的模型就建好了。

看一下項目目錄,我們需要寫的就是在Dialogs檔案夾下建立Dialog,每次新增完在Controllers檔案夾下的MessagesController.cs中記得更改一下,如圖:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

3)将應用釋出到Azure雲

首先注冊中國區Azure雲并申請1元訂閱。

第一步:搜尋引擎輸入關鍵字“世紀互聯Azure”,進入世紀互聯azure官網,并點選申請試用,如下圖紅色框所示

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

圖1:中國區Azure官網頁面

第二步:點選申請試用後,彈對外連結接,填寫電話号碼與手機收到的驗證碼。

第三步:填寫完驗證碼後将彈出下圖頁面,将必要資訊填入到網頁中。身份證正反面掃描件或者照片均可,建議選手在身份證正反面照片中打上水印,如“僅限申請Azure賬戶使用”,但不應該遮蔽身份證号碼等必要的驗證資訊。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

圖2:Azure試用申請表

第四步:送出之後,你将收到一封郵件(可能稍有延遲)。打開你上圖中填寫的郵箱,檢視主題為“Azure一進制試用激活碼”的郵件,郵件正文如下圖所示:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

圖3:Azure一進制試用激活碼郵件内容

第五步:執行郵件的正文中的第一步“點選進入輸入激活碼頁”

第六步:執行郵件正文中的第二步,建立使用者賬号并付費完成注冊。第七步的具體過程如下:

  • 點選郵件中的連結進入如下界面,填寫相關資訊,由此生成登入賬号。
    對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程
    圖4:填寫資訊
  • 設定賬号密碼(密碼需要包含大小寫字母、符号和數字),并填寫手機号擷取驗證碼。
    對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程
    圖5:填寫資訊
  • 自動跳轉登入界面,輸入密碼登入。
    對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程
    圖6:登入頁面
  • 選擇支付寶,支付一進制錢。
    對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程
    圖7:一進制訂閱支付頁面

第七步:收到主題為“由世紀互聯營運的 Windows Azure 購買确認”郵件以及主題為“歡迎使用 Windows Azure Active Directory”表示azure注冊成功。具體圖檔分别如下圖8和9所示:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

圖8:郵件主題為“由世紀互聯營運的 Windows Azure 購買确認”截圖

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

圖9:郵件主題為“歡迎使用 Windows Azure Active Directory”截圖

申請完之後,需要用VS連結到中國區Azure,參考:

https://www.azure.cn/documentation/articles/developerdifferences/

也許這一塊你還會有其他很多問題,别着急,在http://studentclub.msra.cn/bop2017/qa肯定能找到答案。

回到VS,點選項目名,右鍵,釋出,最後效果:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

此時已經部署到雲了。

4)在Bot Framework網站上注冊應用

登入 Bot Fraework網站,https://dev.botframework.com/ 如果你還沒有賬号,請先注冊一個。

點選"Register a Bot"https://dev.botframework.com/bots/new 注冊一個

填寫相關的資訊:

"Name":你的bot的名字,比如我的叫做"萌萌"。

"Bot Handle":随便寫一串字母,比如我的寫"mengmeng",其實就是你的Bot的id。

"Description":你的Bot的描述,會在你的publish之後首頁上顯示。

下面需要填寫你的endpoint,就是你背景服務的位址:https://你的伺服器位址/api/messages (剛才咱們釋出的template的預設接口)

你需要點選"Create Microsoft App ID and password",建立App ID和Password(注意,切記把這個app password記下來,隻顯示一次)

下面的必填的一些選項随便填一下就可以了。

點選儲存。

在右邊的"Channels"裡頭可以看到"Web Chat",這個網頁端的一個channel,已經幫你寫好的一個frame,咱們點選"Edit"更新。

生成Web Chat的密鑰之後,把密鑰複制,點選"I'm done configuring Web Chat"。

5)更新你的後端服務

在你的Web.config裡,填上你的botId,剛才建立的App ID和app password。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

打開網站的起始頁default.htm

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

複制以下代碼:

<!DOCTYPE html>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<html>
<head>
<title>小馳</title>
<meta charset="utf-8" />
</head>
<body style="font-family:'Segoe UI'">
<iframe name="myframe" scrolling="auto" width="100%" height="100%"
onload="document.all['myframe'].style.height=myframe.document.body.scrollHeight"
src="https://webchat.botframework.com/embed/mengmeng?s=你 自 己 的 Web Chat 密 鑰 " style="height: 502px; max-height: 502px;"></iframe>
</body>
</html>      

然後右鍵項目工程,點選"publish",之後你就可以擁有一個簡單的Bot啦。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

注意:此時你再想通過模拟器調試,需要加上app id和password了。 

學習資料:

http://studentclub.msra.cn/bop2017/qa

http://studentclub.msra.cn/bop2017/rules/learning

以下這篇文章主要介紹微軟的對話機器人架構,轉載自

https://blog.csdn.net/weixin_33979745/article/details/85926649

實作的大緻效果是可以詢問微軟俱樂部的相關情況,并且查詢天氣。效果示範如下:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

下面我會将整個過程進行詳細的表述。

1. 什麼是Bot Framework?

Bot Framework就是幫你快速搭建智能服務的後端,快速在各種終端和服務上提供服務。包括三大元件。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

Bot Builder SDKs:

這個是Bot的生成器,快速生成一個ASP.NET和Node.js的後端服務,提供了像Dialog、FormFlow幫你管理與使用者的會話。

Bot Connector:

這是個Bot的Channel,幫你把你的服務快速釋出到各個管道,比如說Skype,Facebook Messager等等。這樣使用者就可以在Skype等Channel上使用你的服務了。

Bot Directory:

這個算是Bot 的商店,在這裡可以找到各個bot,你也可以把自己的Bot釋出出來,進而大家都可以看到你的Bot。

官方網址:https://docs.microsoft.com/zh-cn/bot-framework,用你的微軟賬戶登入就行。

界面如圖所示:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

2. 什麼是LUIS?

說到LUIS,我們首先談一下Cognitive Services(認知服務)。

Cognitive Services(認知服務)的前身是Project Oxford(牛津計劃),正式釋出的時候更名的。這是微軟将研究院研究的技術以API和SDK的形式開放給開發者的一系列智能化服務。

主要包括5大類的服務:視覺、語言、語言、知識和搜尋。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

其實就包括我們今天要講的"語言了解(Language Understanding Intelligent Service,簡稱LUIS)"。

LUIS的官網介紹:https://www.luis.ai,用你的微軟賬戶登入就行。

界面如圖所示:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

點選"App"這一欄,咱們先點選"new App"建立一個app。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

建立完成後,點選應用的名稱,進入編輯這個應用。

我們先看以下左邊的tab,可以看到有儀表盤,意圖(Intents),實體(Entities),功能以及釋出應用。。。。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

Intents:就是意圖,比如咱們現在要提供天氣查詢的服務,那麼咱們就建立一個"查詢天氣"的Intent。

實體裡頭有兩類:

Entities:實體,比如在查詢天氣的時候需要有地理位置資訊,需要把使用者的語言裡頭的地點提取出來,這個地點就是這個句子裡頭的執行個體,咱們建立一個"地點"的執行個體。

Pre-built Entities(預建實體):這個是預置好的執行個體,比如說時間,數字等等,我加了一個datetime的預置執行個體。

在功能裡頭會有:

Phrase List Features(短語清單功能):固定的一些短語,能夠直接識别,比如說航空公司的名字等已知資訊

Pattern Features(模式功能):正規表達式,可以比對出相應的一些字段,比如說航班号。

咱們現在來建立一個能夠識别查詢天氣的語言了解服務。

首先,查詢天氣需要地點資訊,咱們先建立一個"地點"的執行個體。

點選到“實體”裡頭,“添加自定義實體”:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程
對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

 添加一個“預建實體” datetime:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

再建立一個叫做"查詢天氣"的Intent。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

點選save之後會出現以下界面:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

在“句式”中,輸入幾個例子,比如說“北京天氣怎麼樣”,可以多輸入幾個句子的類型,比如“北京今天有霧霾嗎?”等等,沒輸入完一句按一下回車。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

如果北京等地點資訊沒有顯示标記的話,選中北京兩個字,然後選擇"地點"标注。然後點選"儲存"。

之後點選"釋出應用",點選該界面裡頭的"Train"按鈕。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

開始訓練,可能需要點時間,你可以做點其他事情。

訓練完成之後,Publish按鈕,釋出成api的形式。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

大家可以看到有“Endpoint url”這個選項,這個url後面加上查詢語句就是API了。

如:https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/LUIS_APP_ID?subscription-key=LUIS_subscription-key&timezoneOffset=0.0&verbose=true&q=北京今天天氣怎麼樣?

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

把LUIS的ID(就是apps後面那串字元)和subscription-key記下來,後面需要用到。

在URL後面可以輸入相關的語句,然後回車,就可以看到傳回的json字元串了。

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

3. 什麼是QnA Maker?

QnA Maker可以建立、訓練并釋出一個基于問題對的智能比對,可以通過簡單的訓練來組織問題對,特别适合處理的就是标準問答的形式,比如“微軟學生俱樂部是什麼?”“如何加入微軟俱樂部?”等等,後面比對上标準的答案。

官方網址:https://qnamaker.ai

界面如下:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

第一次進入,我們點選Create new Service,進入建立界面。

SERVICE NAME:随便起,我起的BOPdemo。

FAQ URL(S):如果你有相關的URL,可以填寫,沒有可以不寫。樣式參考:http://studentclub.msra.cn/bop2017/qa這種格式。

FAQ FILES:如果有相關檔案可以直接導入,沒有可以不導入,因為最後還可以手動導入。樣例檔案如下:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

中間記得用tab鍵隔開。至此,就建立完了。

建立完了之後,你會發現在My services多了一個剛才建立的服務,如下:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

   點進去之後,效果如圖:

對話機器人之QnA Maker1. 什麼是Bot Framework?2. 什麼是LUIS?3. 什麼是QnA Maker?4. 開發流程

還可以通過Add new QnA pair添加單獨的問題對。添加完了之後别忘了Save and retrain,之後你就可以通過Test進行測試,比如我輸入Hi,機器人回複Hello。

通過URL,File以及單獨添加的問題對都訓練完并且測試滿足條件之後,你就可以Publish釋出了。

這時你肯定想問,怎麼通過自己的代碼進行通路啊?我以C#為例:參考文檔:https://qnamaker.ai/Documentation/ApiReference

Publish之後,會形成如下HTTP樣式:

POST /knowledgebases/<Your KB ID>/generateAnswer HTTP/1.1
Host: https://westus.api.cognitive.microsoft.com/qnamaker/v1.0
Ocp-Apim-Subscription-Key: <Your Subscription key>
Content-Type: application/json
Cache-Control: no-cache
{"question": "Question goes here"}      

請求的代碼:

string responseString = string.Empty;
      

繼續閱讀