從零開始玩人工智能-機器人服務-03

    機器人服務應該是個比較容易上手的AI服務,發展也非常的快。距離我之前寫的隨筆沒多久吧,已經從原來的獨立站點,變爲Azure中的Bot Services了。而且支持的機器人種類也更加清晰和增多了。

    更新的Bot Service的文檔可以看到,現在機器人可以分爲五類。之前我嘗試的應該是Basic類和Form類,而上次沒來得及嘗試的語義識別單列了Language類,主動觸發機器人服務是Proactive類,而今天想玩的是QnA Maker類機器人。

TemplateDescription
BasicCreates a bot that uses dialogs to respond to user
input.
FormCreates a bot that collects input from a user via a
guided conversation that is created using FormFlow in C#
or waterfalls in
Node.js.
Language understandingCreates a bot that uses natural language models
(LUIS) to understand user intent.
QnA MakerCreates a bot that uses the QnA Maker service to
answer user’s FAQs.
ProactiveCreates a bot that uses Azure Functions to alert
users of events.

     QnA Maker的站點在:https://qnamaker.ai/ 這個站點很簡潔,但是需要的信息都有了。QnA機器人應用場景類似問題和答案簡單匹配,其實大部分的對話機器人和這個類似。結合其他的功能,比如Card,比如分支,就會讓機器人流光溢彩。我覺得QnA應該是快速讓機器人具備回答問題的最佳選擇吧,至少比我上次寫一堆代碼來做人機交互快多了。站點提供了一張圖來說明QnA機器人的邏輯,可從多種來源輸入問題/回答,並將機器人服務連接到不同的頻道。問題/回答可以提供索引和評分,便於機器人不斷學習和優化回答。

clip_image001

    對於QnA機器人,我初步打算做兩個測試,第一,嘗試使用QnA機器人建立一個KB自動答覆。對於常見的問題,構建一個框架讓機器人自動根據提問提供解決問題的KB文章。第二,嘗試把這個機器人放到Azure的Bot Service上。

    QnA Maker使用兩個UUID管理不同的機器人,首先要有一個訂閱ID,才能夠訪問QnA的服務。其次每個QnA服務都有個KB ID,這樣就能把不同用處的機器人分開了。每個服務都可以對指定的用戶進行授權。

    爲機器人準備問題/答案並訓練它再簡單不過了,在QnA Maker網站上就可以導入QnA的文本文件。文本文件的格式也非常簡單,前面是問題,使用Tab分隔,然後是答案。導入文件後,點擊“保存並訓練”,導入的內容就被服務接受了。然後你在服務中就能夠看到導入的問題/答案了。有了問題和答案,馬上就能在TEST頁面進行測試。

image

    看到這裏,估計你會說,這哪裏看得出人工智能了?我寫個腳本按照輸入查找輸出字符串不就搞定了?請仔細觀察上圖哦~ 第一次提問,我是按照導入的完整問題輸入的,很準確的給出了預設的答案。第二次提問,我只輸入了幾個關鍵字哦,QnA服務自己進行了匹配,給出了最接近的答案。

    實際上QnA服務確實會對答案進行評分,從它返回的JSON格式就能看出來。對於QnA的Service使用方法,給了一個非常好的說明站點和Swagger實現。例如,調用服務來做應答,就可以使用POST方法,具體可以參考:

https://westus.dev.cognitive.microsoft.com/docs/services/58994a073d9e04097c7ba6fe/operations/58994a073d9e041ad42d9ba9

    除了在QnA站點的Test頁面,使用Swagger可以也很快的驗證你的機器人。   

image

    輸入你的訂閱ID和機器人對應的KB ID,內容類型使用JSON。

image

    頁面會按照提供的信息自動構造HTTP請求。

image

    點擊發送後,QnA Maker Bot服務就會給出響應,對於可能的響應都給出了具體說明。

    方法很簡單,所以寫一個Python的實現也不難(雖然Pylint給示例代碼打了個無比負的分哈哈)

image

    可以看到,代碼返回的HTTP響應和之前Swagger測試的一致,同樣包含問題、答案和評分。

    回到導入問題/答案導入的環節。需要注意的是,開始我發現每次導入文件時,中文都變成了亂碼,我立即意識到,默認的notepad使用的ANSI編碼可能有問題。改成UNICODE就正常了。

    除了使用TXT導入之外,QnA Maker的Service還支持添加URL,對於自動導入以前的QnA頁面也非常方便。這個方式我是在測試Create Knowledge Base的POST方法時發現的,示例直接添加了文檔的QnA頁面:https://docs.microsoft.com/en-in/azure/cognitive-services/qnamaker/faqs

    我還奇怪它是如何識別問題和答案的,後來發現起作用的是問號~ 爲了驗證,我把TXT文本改成類似的格式,導入也成功了。

    限於篇幅,後續再繼續寫Azure Bot Service部分和學習Node.JS部分。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章