[閱讀筆記] 設計聊天機器人 (Designing Bots)

smalltown
smalltownslowmedia

--

背景介紹

最近剛好在幫公司內部開發 ChatBot,目的是為了達成 ChatOps,把很多本來需要透過人力甚至還需要紙本的作業流程,全部搬到 IM 內自動化,自己的開發心得將 ChatOps 分成三個階段 (目前會需要做到第三點的情景,其實就是 Change Management 中需要有人類做核准的角色,對比於紙本簽核或是線上發 Ticket 完成 RFC 來說,這真的是超級有效率的做法)

  1. 單純得到資訊 (Read Only)
  2. 執行使用者下達的修改指令 (Read/Write)
  3. 除了以上兩點之外再加上多人互動 (Auditing)

就在開發告一個段落,思考自己在此方向該如何更近一步時 (撇開添加新功能不談),發現了這本書,因此就把他從書架上拿下來結脹了!

重點提要

本書不是技術鑽研的類型,而是偏向於設計方法概觀,假如是想要知道有關於 ChatBot 的詳細程式開發,可以不用再花時間繼續讀下去XD 書中想要傳達給讀者的東西,我自己將其整理為幾個部分:Bot 分析設計流程概觀,以及一些跟設計開發無關的部分,底下會就這些項目在做更詳盡的述說…

Bot 分析

機器人在設計前必須特別要注意的一點,在於它不同於一般的應用程式,使用者無法知道你的機器人有什麼功能,因此你要透過一些方式來告訴使用者,譬如 Google Assistant 會將所能提供的主要功能秀在按鈕上讓人們選擇;而且過去的應用程式主要是使用者學習如何去使用,但是對話式的機器人則剛好相反,必須要學會如何滿足人類提出的需求

在設計機器人之前必須要先思考過機器人的主要應用情境是什麼,然後,譬如有最常見的 警告/通知機器人 (e.g. 串接 Prometheus),提昇個人生產力類型,客服機器人,第三方服務整合機器人 (ChatOps 大本營XD),品牌機器人,購物機器人…etc,而在設計機器人時有幾個面向需要先行探討:

  1. 品牌,個性及人工介入:個性,標誌以及圖示,命名,人工介入
  2. 人工智慧:自然語言理解,對話管理,預測,情感分析
  3. 對話:初次登場,功能腳本,意見回饋與錯誤處理,幫助和支援
  4. 多元互動:檔案,聲音和影片,圖像、地圖和圖表,按鈕,模板,連結和格式化,表情符號和回應,常駐功能選單,輸入中的提示,[/] 指令,網頁視窗
  5. 前後文和記憶
  6. 發現和安裝
  7. 提升參與度的方法:通知,用戶主動喚醒機器人,訂閱
  8. 商業化

至於需不需要人工智慧?!答案則是不一定需要,畢竟假如可以使用正規表示式,就將使用者下達的命令很好的理解,那殺雞焉用牛刀;而目前 AI 在對話式應用程式主要在於幫助自然語言的理解,情感分析,對話管理,甚至還有一些更進階的影像辨識,電腦視覺功能

Bot 設計流程概觀

機器人主要的設計流程有底下五個步驟

  1. 應用情境定義與探索:透過基礎分析 (受眾,商業模式,功能偏好設備,使用平台) 將機器人所要達成的目的以及在什麼樣的平台服務什麼樣的人給定義出來,接著可以自己假裝機器人跟真人對談當成實驗來探索解決方案,再開始撰寫程式之前,提前知道可能遇到的問題
  2. 對話腳本:撰寫重要的對話流程,先將大綱列出:影響機器人成敗的初次登場,主要的流程,流程中遇到問題如何給予幫助,使用者該如何在最後時給予回饋,遇到錯誤時的處理方式
  3. 設計和測試:使用類似於 Botsociety 的工具模擬出機器人在對話平台所呈現的樣貌來改進對話腳本中不適宜的地方,確定沒問題之後開始找使用者來測試,並且可以透過 ProtoBot 來新增簡易的機器人腳本供測試使用
  4. 機器人建構概述:在視覺化編輯開發工具有 Flow XO, PullString, Chatfuel, Chatflow, Pandorabots, Automat, Recast.AI,Imperson。AI 的部分則有 Google DialogFlow,IBM Watson,Facebook Wit.ai,Microsoft LUIS,msg.ai。開發 SDK 或是 Framework 有 Botkit,Microsoft Bot Framework,Slapp,Twilio SDK,當然也可以完全自製,不依靠 Framework
  5. 分析和持續改進:觀察對話機器人的日誌,比一般應用程式可以獲得的更多,畢竟使用者的使用方式一覽無遺,可以透過原始日誌,已過濾的日誌,分析工具與 SDK,Saas 分析服務來改善機器人,讓它減少錯誤,最佳化對話以及更新流程

跟設計開發無關的…

對話式應用程式並不是萬靈丹,它跟網頁及行動平台應用程式比較起來各有其優缺點;而這個領域才剛開始發展,在各個方面都還在起步的階段而已,書中提及如何讓別人發現你開發的機器人,當人類安裝完機器人後,如何讓機器人可以持續吸引人類跟它互動,而不是就被擱在一旁,因為對於機器人來說,被擱在一旁沒有人使用及互動的話,跟沒安裝過沒有兩樣,最後提到一些機器人可行的商業化模式,譬如訂閱模式,廣告服務,銷售商品賺取推薦費,品牌推廣…

省思

自己為了達成 ChatOps 所創造出來的 ChatBot 並沒有經過完整與嚴謹的實驗測試,也沒有賦予其任何的個性;但因為可以達成的結果很重要且相當方便,逼得公司同仁不得不用XD 之後的版本想要依照書中學到的作法來試試看!譬如初次登場設計,錯誤處理方式,使用模擬對話腳本的工具,甚至是將個性給添加進去!

--

--

smalltown
smalltownslowmedia

原來只是一介草 QA,但開始研究自動化維運雲端服務後,便一頭栽進 DevOps 的世界裏,熱愛鑽研各種可以提升雲端服務品質及增進團隊開發效率的開源技術