Amazon Lex 是 AWS 的一項服務,可以利用語音、文字在應用程式建立對話式介面。Amazon Lex 採用與 Alexa 相同的技術支援,具備自然語言了解 (NLU) 和自動語音辨識 (ASR) 的功能,能學習理解使用者輸入的意思,並呼叫相對應的功能以滿足使用者需求,打造進行逼真、互動式交談的交談環境。
本篇文章將透過實際建立一個 Amazon Lex 聊天機器人,帶大家認識 Amazon Lex!
Amazon Lex 聊天機器人的 5 大元素
在開始建立聊天機器人以前,先向大家介紹 AWS 如何定義 Lex 聊天機器人介面的元素,分別是以下 5 項:
- 意圖 (Intent):使用者想要執行的操作
- 範例表達 (Utterance):能夠觸發操作的使用者輸入
- 提示 (Prompt):由聊天機器人發出、目的在於請求完成操作所需資料的訊息
- 位置 (Slot):完成操作所需的輸入資料
- 履行 (Fulfillment):根據使用者請求完成的操作
以本篇文章想要建立的訂飲料聊天機器人而言,上面提到 5 個建立 Lex 聊天機器人的元素分別可以對應到:
- 意圖:使用者想要訂飲料
- 範例表達:使用者在互動介面輸入「我想要訂飲料」
- 提示:聊天機器人詢問使用者「你想要喝什麼」
- 位置:使用者輸入飲料名稱
- 履行:聊天機器人回覆飲料訂購完成,並結束對話
是不是很容易理解呢?但是!在筆者寫文章的當下
Amazon Lex 只支援 10 種語言,其中不包括中文,所以待會兒的實作會以中文操作介面進行,以英語作為主要的輸入語言。
[建立] Amazon Lex Bot
Step 1: 預備動作
- 在 AWS 主控台搜尋「Lex」
- 點擊〔開始使用 Amazon Lex〕
- 點擊〔Get Started〕
- 點擊〔建立機器人〕
Step 2: 機器人設定
- 選擇〔建立空白的機器人〕
- 輸入機器人名稱,例如 orderDrinks
- 選擇〔使用基本的 Amazon Lex 許可建立角色〕
- COPPA 的部分選擇〔沒有〕
- 設定閒置工作階段逾時為 5 分鐘
- 頁面拉至最下面,點擊〔下一個〕
Step 3: 新增語言
建立機器人後,系統會跳轉到新增意圖的地方
Step 4: 修改意圖 (Intent)
- 將意圖名稱改為可以辨識的名稱,例如 OrderDrinks
- 新增表達範例 (Utterance),例如 drinks, please
- 點擊右下方橘色的〔儲存意圖〕
Amazon Lex 內建日期、時間、地點等位置類型,如果有需要特殊的類型,例如飲料類型,我們也可以自己另外在 Lex 的控制台中建立。
Step 5: 新增位置類型
- 點擊左側清單中的〔位置類型〕
- 點擊右上方的〔新增位置類型〕>〔新增空白位置類型〕
- 輸入位置名稱,例如 drinkTypes
- 點擊〔新增〕
- 在位置類型值的地方新增飲料種類,例如 milk
- 點擊〔儲存位置類型〕
Step 6: 完成尚未編輯完的意圖
- 回到方才 OrderDrinks 的編輯頁面
- 頁面下拉到位置,點擊〔新增位置〕
- 輸入位置名稱,例如 drinkTypes
- 位置類型選擇方才建置的〔drinkTypes〕
- 輸入提示,例如 What kind of drinks do you want?
- 點擊〔新增〕
上圖中 {drinkTypes} 代表的是在聊天機器人詢問「What kind of drinks do you want?」後,使用者輸入的飲料名稱。
Step 7: 建置與測試
點擊測試後,網頁右方會跳出簡易的聊天視窗,我們可以在此測試聊天機器人。
由於 Lex 內建自然語言了解的功能,所以就算使用者的輸入和我們預設的內容稍有不同,Lex 能協助判斷內容並給出適當回應。
結語
這篇文章透過 Amazon Lex 建立了一個簡單的聊天機器人,文章當中只使用到幾個 Lex 最基本的功能,若是讀者們有興趣,可以再接續研究如何讓聊天機器人詢問使用者冰塊甜度、如何處理使用者答非所問的情況,或是更進一步了解如何搭配 Lambda 和其他 AWS 服務將聊天機器人部署在現實生活中的場合。
延伸閱讀
參考資料