Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps、C#, Asp .net Mvc、Azure、AI、Chatbot、Docker、Data Science

[chatbot + AI = 下一代操作模式][42]回顧整個系列 - 開發Chatbot的整個生命周期

[chatbot + AI = 下一代操作模式][42]回顧 - 開發Chatbot的整個生命周期.jpg
圖片來源:https:/pixabay.com/en/books-spine-colors-pastel-1099067/ 

在上一篇([41]使用Chatdown做Chatbot的UI Prototyping),介紹完了可以用來做Prototyping的UI工具Chatdown之後,這個系列想要介紹的東西都介紹完了。

這篇想要整個重新在review一次整個開發chatbot的開發流程(lifecycle),并且看看再每一個環節這個系列都介紹了什麽可以使用。

Chatbot的開發流程

還記得下面這張圖嗎?這張圖在(02 bbb)的時候有介紹過,這個其實不只是針對chatbot,而是軟件開發基本上都會經歷過的流程:

93487305-17b0-4c95-9c25-30e3960b4df4.png
圖片原始來源,以及一些參考資訊可以看: https:/docs.microsoft.com/en-us/azure/bot-service/bot-service-overview-introduction

現在這個系列介紹到了尾聲,可以看的出來那些篇幅屬於那個環節嗎?

Plan 階段

好的開始是成功的一半,因此Plan的完不完整,瞭不瞭解需求以及問題,打算怎麽開發,整合那些服務都是在plan階段要做的事情。

有些在Plan階段可以思考的問題:

  1. 找到end user是誰,他們的問題是什麽,chatbot能夠怎麽解決他們的問題
  2. 定義chatbot是怎麽和end user溝通 - 例如透過文字、卡片式、語音還是客製方式?
  3. 整個交談過程是怎麽個方式執行:一來一回、引導式、上下文對應式
  4. 使用什麽語言開發 - 偏工程面需要考量,要用什麽語言開發,甚至用什麽框架開發

上面的問題完全會影響之後在開發的時候的開發方式,因此Plan階段好好想,可以少走很多冤枉路。

微軟在Plan這個階段提供了一些工具幫助Planning變得更加簡單,其中最重要的是Chatdown + Bot Emulator來做Prototyping。透過這個工具,能夠定義出:

  1. Chatbot流程怎麽走
  2. 對話用什麽方式 - 文字、卡片式還是一些特殊的卡片
  3. 交談模式是什麽

當SA和用戶透過這個確認好需求之後,工程師照著做舊肯定沒有問題,詳細可以參考: [41]使用Chatdown做Chatbot的UI Prototyping   

這個系列不focus太多在Plan,而在後面的階段。但是實際上和任何軟體開發一樣,Plan做不好,基本上整個Project都會gg。因此,建議多花點時間在這個上面。

Build 階段

Build階段就是實際開始往下去開發啦,在這個部分不止Chatbot本身的開發,還包含其他服務的串接例如Cognitive Service。

在整個系列主要Focus的都是Build階段的部分:

Bot Builder基本概念
  1. [01]開篇 - CaaP是什麽,爲什麽應該學
  2. [02]微軟的Bot Framework是什麽?
  3. [03]建立第一個chatbot - EchoBot
  4. [04]瞭解BotBuilder的組成
IDialog、卡片式、FormFlow的使用方式
  1. [05]深入IDialogContext - 處理上下文、對外的聯係和state
  2. [06]不只能輸出文字 - 看看各種内建卡片模式以及可自定的Adaptive Card
  3. [07]使用FormFlow讓Chatbot搜集表單資訊更容易
  4. [08]如何微調FormFlow讓使用上更流暢
  5. [09]使用IDialog來實現SoC
  6. [10]用IDialog全部重構 - 階段性總結
整合語言識別LUIS
  1. [17]語義識別服務 - LUIS概念介紹
  2. [18]在LUIS建立app - 概念變成實作
  3. [19]把LUIS和BotBuilder整合
  4. [20]LUIS深入使用 - 定義Entities來截取參數
  5. [21]LUIS深入使用 - 如何在BotBuilder使用entities
  6. [22]LUIS管理及維護 - 持續加强app、多人維護、備份以及加入別的region key
  7. [23]LUIS管理工具 - luis-api和LUDown介紹
整合Computer Vision做到OCR
  1. [24]圖像識別的服務 - Computer Vision概觀介紹
  2. [25]使用Computer Vision - 如何設定、看文件以及使用REST API測試
  3. [26]賦予chatbot OCR的能力 - 加入對發票的功能
使用Custom Vision自己建立image classifier的Model
  1. [27]Custom Vision - 自己的Model自己Train 建立圖片的分類模型
  2. [28]整合Custom Vision到chatbot - 拍照就可以識別價錢
  3. [29]維護Custon Vision Model - 使用歷史查詢記錄做訓練以及如何版控
  4. [30]Confusion Matrix - 用來衡量Classifier Model的方式 Precision和Recall
  5. [31]Custom Vision Train好的Model匯出離線和給app使用
使用Translator Speech API做語音轉文字
  1. [32]Cognitive Service語音服務相關介紹
  2. [33]C#使用Translator Speech API服務達到語音轉文字加翻譯
  3. [34]賦予Chatbot用語音下指令以及翻譯的功能
使用QnA Maker建立知識庫
  1. [35]使用QnA Maker打造問答知識類型資料集服務
  2. [36]Chatbot整合QnAMaker - 使用對話查找知識集
  3. [37]維護QnA Maker的知識庫 - 設定url或者檔案為來源、多人維護以及離綫定義知識庫
維護Cognitive Service的小工具
  1. [23]LUIS管理工具 - luis-api和LUDown介紹
  2. [40]Visual Studio Tools for AI - 用VS管理Cognitive Service的服務
  3. [41]使用Chatdown做Chatbot的UI Prototyping

Test 階段

開發過程當然需要不斷的測試功能避免開發出來的東西不如預期。

廣義來説,Test應該包含多個層面,除了功能/UI的測試之外(這個系列只有看的地方),還應該包含細部的程式碼測試像是Unit Test和最後的整合測試。

這邊主要的測試工具還是Bot Emulator測試執行結果:

  1. [03]建立第一個chatbot - EchoBot

Publish 階段

開發好了,測試也完成了,這個時候就是要發佈上去給大家做測試了。

使用Bot Framework有至少兩個服務需要發佈:

  1. Bot Channel Registration - 注冊Bot的地方,管理Connect 階段的部分
  2. Bot程式碼的hosting位置

發佈Bot程式碼host在Azure上面有兩個做法:

  1. Web App
  2. Azure Function - 這個沒有介紹有興趣可以看看屬於Azure的Serverless服務

一些和publish有關的文章:

  1. [11]準備上綫 - chatbot發佈到Azure App Service

Connect 階段

Bot Framework的好處之一是寫一次,多個平臺可以使用。這個就是透過Bot Channel Registration來控制。

這系列介紹了兩個Channel,FB以及Direct Line。有了Direct Line其實任何平臺都可以接的上:

  1. [12]準備上綫 - 用Bot Channel Registration注冊chatbot
  2. [13]上綫 - 開啓web control channel
  3. [14]上綫 - 把facebook粉絲頁和chatbot接上
  4. [15]上綫 - 透過Direct Line把chatbot和任意程式做連接

因此,像是微信、Line這些不再内建Channel裡面要提供和内建Channel例如FB的一致體驗也是沒有問題。

Evaluate 階段

上線了之後,最重要的一點是持續的追蹤以及精進。因爲End User使用的方式,可能和當初預期的不同

這個時候,把程式碼做調整,或者把Cognitive Service做調整就變得非常的重要。

和Evaluate有關這個系列介紹了:

  1. [22]LUIS管理及維護 - 持續加强app、多人維護、備份以及加入別的region key
  2. [30]Confusion Matrix - 用來衡量Classifier Model的方式 Precision和Recall
  3. [38]用Application Insight看使用者都在QnA Maker查什麽

結語

這篇可以看作是這個系列的一個總綱,透過這個可以看到要完成開發一個Chatbot并且持續精進沒有想象中的困難,但是也沒有想象中的簡單。

Chatbot和任意的程式開發一樣,要快速開發出來可以,但是要做的很好需要花很多功夫在計劃以及設計上面。

這篇除了做個總結之外,另外一個目的是想點出每一個階段其實還有很多可以在看的地方。在這個系列不會在介紹這些,不過未來的部落格文章還是有可能會介紹,因此別忘記持續關注幾個有關的tag哦

  1. chatbot
  2. cognitive-service
  3. ai

這篇看完了過去,下一篇([43]结束?一切正要開始 - 下一步是什麽)想看看未來,也就是下一步怎麽走?如果對AI以及Chatbot開發想更深入應該看哪方面。

comments powered by Disqus