關於bot framework (1) - 緣起

微軟在2016年的Build釋出了bot framework,但如果我跟你說,我曾經參與一個團隊,在約莫兩三年前,有一段時間我們主要的工作就是開發自動化訊息對談的Chat Bot,並且試著將相關的語意分析(像是我們後面會提到的LUIS)應用在商業環境中…我猜想你應該也不會覺得有何奇怪,畢竟,Siri早就已經出現很久,而Chat Bot也並非真的是一個很艱深的技術。

但真正有趣的是,2016年,像是大家聯合起來了一樣,FB、Microsoft、Google幾個大廠都針對bot有一些發表,而IM(像是line)也開始迫不及待的紛紛開放對外串接的API,讓我不免開始覺得,是不是大家後面有一些什麼沒有說的計畫?

過去我們在開發bot的時候,最困難的其實是語意分析,這個部份有不少論文在討論,也有open source的資源可以使用。語意分析讓程式可以拆解一段用戶輸入的對話,把對話中的主要文字分段,然後確認名詞、動詞…等詞性,並且分析語句的態度,是問句? 或是祈使句? 或是其他…

這個機制的目的是讓程式可以知道用戶說話(打字)的意思。目前這個機制在整個微軟提供的bot framework解決方案中,是屬於LUIS的功能。

而MS提供的這整個bot framework,則是一個範圍很廣的開發框架(其實嚴格說起來不只是框架了,以LUIS來說,它其實是一個獨立的Web服務),這整套框架和服務,讓Developer可以用比較簡便的方式,建立一個能與終端用戶(end-user)對話的虛擬人物,範疇包括取得用戶輸入的語句訊息、判斷用戶的語意、決定機器人要說的訊息、呈現程式判斷後要輸出的訊息,以及整個開發的程式碼骨架…等等。

使用bot framework的好處在於,開發人員不需要再自行建立自己的對話介面,bot framework提供了一個asp.net的專案範本(其實本質上是一個asp.net WebApi專案),讓你可以輕鬆的開始撰寫訊息對談引擎。

該範本可以從這裡取得,可以參考這邊的使用方式說明:
http://docs.botframework.com/connector/getstarted/#overview

除了訊息對談引擎之外,這個對談機器人(Chat bot)當然還需要一個與用戶對談的操作介面,bot framework選擇的方式,是透過bot connector,讓你可以將前述asp.net專案範本所撰寫出來的對談引擎,串接到各式各樣的終端用戶介面,目前預設支援的包含底下(右邊channels):

簡單的說,你可以透過bot framework中的asp.net專案範本,撰寫出上圖左上角的bot web service,該web service負責處理對談訊息內容的接收與送出,而bot framework架構中的bot connector,負責將你的訊息串接到前端的各種UI。因此,你的bot可以和用戶以Skype、Facebook、Slack…或是其他各式各樣的IM(我想未來會陸續支援)來直接對談。甚至也可以透過Web、簡訊、email內容作為對談的操作介面。

因此,你無須花費心思在處理對談前端UI的開發或串接,這部分bot framework透過connector幫你處理掉了。你可以專注在終端用戶的訊息敲進來之後,你要怎麼判斷用戶的意思(這部分可以透過LUIS來開發),並且把對應的訊息送出去即可。

但真實用戶與bot對談可能會是天南地北的,現階段要透過LUIS來理解所有用戶輸入的訊息,基本上是不可能的,人工智慧尚未發展到可以理解所有人所有訊息的情況(所以你有時候跟Siri對談,還是會覺得在鬼打牆),因此,就商業上來說,使用chat bot搭配LUIS語意分析來達成所有的需求(例如線上客服、購物、填寫請假單…etc),在目前似乎稍微不切實際,畢竟用戶如果突然天馬行空的說一些什麼,bot根本不可能聽懂。

因此,在bot framework中,有另一個機制稱為FormFlow,它和LUIS企圖判斷用戶的語意的做法稍微不同,它縮限用戶可以輸入的文字,聚焦在特定的範圍內,讓用戶只能透過選擇或輸入特定關鍵字的方式與bot對談,藉此達成一些基本的需求,像是前面提到的,填寫單據、基本的troubleshooting、購物…等,就可以在bot上方便的實現。

所以,整個bot framework我們可以切成幾塊來看,分別是:

  1. 開發對談引擎的asp.net WebAPI框架範本
  2. 幫助你串接各種對談UI的Bot Connector
  3. 可以識別用戶語意的LUIS
  4. 提供簡易對談機制的FormFlow

當然,Bot Builder(就是這整個framework)中還有一些特定的功能與SDK,我們如果後面討論到的時候會順便跟大家介紹,後面,我們就來看看怎麼使用上面這些資源,來建立對談機器人。

留言

這個網誌中的熱門文章

使用 Airtable 在小型需求上取代傳統資料庫

使用Semantic Kernel 建立自然語言請假系統

精彩(且驚人)的Semantic Kernel入門範例

在 LINE Bot 開發中使用Semantic Kernel建立自然語言請假系統

專業的價值...