Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 為現任微軟最有價值專家 (MVP)、微軟認證講師 (MCT) 、Blogger、Youtuber:記錄軟體開發的點點滴滴 著重於微軟技術、C#、ASP .NET、Azure、DevOps、Docker、AI、Chatbot、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 SDK基本概念
  1. [01]開篇 - CaaP是什麽,爲什麽應該學
  2. [02]微軟的Bot Framework是什麽?
  3. [03]建立第一個chatbot - EchoBot
  4. [04]瞭解Bot Builder SDK的組成
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深入使用 - 如何在Bot Builder SDK使用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開發想更深入應該看哪方面。


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus