讓客服 AI 更聰明
用戶描述不清楚問題?Asgard 的設計小技巧讓您可以引導用戶問對問題,讓客服 AI 更聰明。
1.Retrieve Knowledge 將歷史對話紀錄用於檢索知識庫
2.Router 是否有相似問題
3.LLM Completion&Push Message 有相似問題的流程引導及追問
4. Push Message 應用 quickReplies
5.Update Context 產生固定的追問問題與選項
6.預覽 Bot

1.Retrieve Knowledge 將歷史對話紀錄用於檢索知識庫
先將原本 Else 接續的 Push Message 刪除,並新增 Retrieve Knowledge 以便將歷史對話紀錄用於檢索知識庫。
- Knowledge Base 選擇第一步時建立並匯入好檔案的知識庫,或是可以點擊「Add」以新增知識庫設定,注意知識庫內記得匯入檔案。
 - Text Query 用於檢索的關鍵字句,此處使用 Asgard 內建的函數 history。
 
(() => {
  // return the result of the expression
  return history (historyStart, -1);
})()

- Similarity Threshold 填入 0~1 之間的數字,1 代表最相似,以此遞減。範例使用 0.1 這個數值,因為用戶的問題相關性可能不高,因此選用 0.1 這個數值。
 - Result Field 儲存結果的變數陣列,範例使用 relatedFaqs 來儲存。
 - Filter Tag 可以過濾增強的 Tag。
 - Sample K 預設 20。
 

2.Router 是否有相似問題
加上 Router 來判斷是否有 Retrieve Knowledge 的結果。
- 假如失敗沒有結果,提示沒有結果並將用戶導向固定追問的流程。
 - 假如有相似問題,加上 LLM Completion 來處理。
 
Router 新增一個 Router 依據 If, Else 等條件來決定工作流程執行的路徑。
- 新增 Case 1 條件名稱可以自訂,此處改成「有相似問題」來幫助識別。選擇 Expression 並輸入以下範例:
 
(() => {
  // return the result of the expression
  return relatedFaqs.nodes.length > 0;
})()

3.LLM Completion&Push Message 有相似問題的流程引導及追問
LLM 呼叫 LLM 來判斷用戶輸入的問題。此處為了讓 AI 能夠處理更複雜的情境,需要設計 AI 的角色、任務等讓 AI 能夠以期望的方式來回應用戶,此處的 Prompt 為參考範例,定義了 AI 的角色與要執行的工作。
- Completion Model 選擇已經設定好的大型語言模型,或是可以點擊「Add」以新增 Completion Model 設定。
 - Prompt 選擇 Template並輸入以下範例請求 AI:
 
你在一間叫 做『Asgard酒店』的連鎖飯店集團擔任服務台客服助手,負責與客戶對話並引導客戶來發問有關於Asgard酒店的相關問題。
由於客戶的提問還很發散且不符合任何既有的問題情境,因此你要開始試圖回應客戶,並釐清客戶客戶究竟想要問什麼問題。
由於你只能引導客戶來提問『Asgard酒店FAQ知識庫』裡的問題,因此如果客戶的提問跟FAQ知識庫裡的問題完全不相關時,此時務必要透過禮貌的回應將話題拉回到詢問客戶有哪方面的問題需要解決,不要回答跟飯店服務無關的事情,也不要讓客戶有機會繼續問一些跟飯店服務無關的事。
* 這是你跟客戶的對話紀錄:
```
{{{history historyStart -1}}}
```
* 這是『Asgard 酒店 FAQ 知識庫』:
```
{{{toJson relatedFaqs}}}
```
history為 Asgard 內建函數,historyStart 為先前在 Update Context 裡所新增的變數,-1 是指算到上一個對話為止,因此這裡是在告訴 LLM 用戶的歷史對話紀錄是從 historyStart 到上一個對話,也就是上一步的 Listen Message 用戶輸入的問題。toJson是 Asgard 內建函數,由於 relatedFaqs 是陣列,此處使用 toJson 將 relatedFaqs 轉成 JSON。

- Output Schema
 
multipleChoiceAnswers 根據『Asgard 酒店 FAQ 知識庫』中的 FAQ 問題,提供 1 ~ 3 個答案
multipleChoiceQuestion 提供 1~3 個問題
{
    "type": "object",
    "required": [
        "hasMatched"
    ],
    "properties": {
        "multipleChoiceAnswers": {
            "type": "array",
            "description": "請根據『Asgard酒店FAQ知識庫』中的FAQ問題,提供1 ~ 3 個答案,讓客戶能夠更快速的來回答multipleChoiceQuestion。客戶將來會透過選擇其中一個選項,來讓你更了解他的請求是否正在詢問一些跟飯店相關的問題。例如: 飯店住宿可以累積點數嗎?、如果我住宿時到餐廳用餐,可以累積點數嗎?、我可以更改個人資料嗎?。請注意由於你只懂得『Asgard酒店FAQ知識庫』裡的知識,因此請不要產生與『Asgard酒店FAQ知識庫』內容無關的選項。",
            "items": {
                "type": "string"
            }
        },
        "multipleChoiceQuestion": {
            "type": "string",
            "description": "請用活潑的語氣回應客戶,回應的最後,請問出一句選擇題來引導客戶,以便能夠釐清客戶在使用飯店服務時究竟遇到了什麼問題,你會預期當客戶回答了此一單選題之後,你能更加確定客戶碰到的的問題是什麼。"
        }
    }
}
Note: 詳細 JSON Schema 寫法,請參考JSON Schema
- MaxTokens 設定消耗 Token 上限,此處選擇 Literal 類型並填入 
4096。Token 上限請依據選用的模型支援的範圍去設定,此處僅為範例。 - 儲存設定
 

4. Push Message 應用 quickReplies
將 LLM 生成的內容使用 Push Message 的 Message Template 印出來。
- Message 選擇 Expression 的類型,並輸入底下範例
 
(() => {
  // return the result of the expression
  return multipleChoiceQuestion;
})()
- Optional: 可以將 Processor 的 Description 改成容易識別的描述幫助工作流程的編排易讀性,例如改成「追問」
 - Template 選擇 Expression 的類型,並輸入底下範例:
 
Note: quickReplies 為物件,每個物件內都有一個 text 的欄位,因此需要將 multipleChoiceAnswers 使用 map 轉成物件與對應欄位。
(() => {
  // return the result of the expression
  return {
    type: "TEXT",
    text: multipleChoiceQuestion,
    quickReplies: multipleChoiceAnswers.map(a => ({ text: a }))
  };
})()
- 儲存設定
 

將 Push Message 的 Success 連接到聆聽問題的 Listen Message 即可。

5.Update Context 產生固定的追問問題與選項來處理 Else 條件
若無相似的問題,可以藉由產生固定的追問問題與選項來處理。
multipleChoiceQuestion
- 屬性點擊「+」新增一個空白的變數
 - 命名為 multipleChoiceQuestion
 - Type 請選 Literal 並輸入以下範例。
 
很抱歉,無法回答此問題,如果有關於飯店的相關問題再請不吝指教
multipleChoiceAnswers
- 屬性點擊「+」新增一個空白的變數
 - 命名為 multipleChoiceAnswers
 - Type 請選 Expression 並輸入以下範例。
 - Optional: 可以將 Processor 的 Description 改成容易識別的描述幫助工作流程的編排易讀性,例如改成「產生固定的追問問題與選項」
 
(() => {
  // return the result of the expression
  return [
    "我可以更改個人資料嗎?",
    "兌換券在哪邊兌換?",
    "餐廳的消費全部都能累積點數嗎?"
  ];
})()
- 儲存設定
 

將 Update Context 連接到產生追問的 Push Message 即可。
6.預覽 Bot
點擊 Preview 來預覽,測試用戶輸入與飯店服務不相關的問題時,客服 AI 可以順著用戶的問題回覆,並生成相關追問選項讓用戶可以點擊相似問題並繼續使用。
