案例研究 - 情境判斷客服
建立情境判斷客服
AI 的協助能夠提高服務的效率,但是還是很難避免客戶濫用 AI 的服務。為了能夠讓 AI Bot 有效的了解客戶提出的問題,並能將客戶的問題限縮在範例中飯店業的服務範圍內,接下來的範例會逐步建立一個情境判斷的客服,並確認客戶所提問的問題情境有落在服務的範圍內,這會是一個很有用的情境判斷設計技巧。
接下來的步驟會依序建立下方列出的 Processors,讓AI協助我們判斷客戶的問題:
- Step 1:建立新的Bot
- Step 2:Update Context
- Step 3:Push Message
- Step 4:Listen Message
- Step 5:LLM & Push Message
- Step 6:Router & Push Message
- Step 7:預覽 Bot
Step 1:建立新的 Bot
選擇 Project
進到該 Project 的 Collections 頁面
,點擊右上方「Create New」
選擇 Bot 類型建立,輸入名稱與描述建立後,可以在 Bot 分頁看到剛剛新建的 Bot。
點擊進入 workflow sets 頁面
,可以看到 Asgard 已經預設幫您建好了初始的 workflow。
點擊該 workflow 進入 workflow 工作區,此處 Asgard 已經預設幫您建好了初始的工作流程起點。
Step 2:Update Context
新增一個 Update Context 的 Processor 來幫助我們識別歷史對話訊息的起始。
- 屬性點擊
「+」
新增一個空白的變數 - 命名為 historyStart
- Type 請選
Literal
並設定初始值為0
- 儲存設定
Step 3:Push Message
新增一個訊息來歡迎用戶,可以單純的使用文字訊息,或是搭配Message Template的 quickReplies 來節省用戶打字的時間,將常見的問題列為選項讓用戶方便選取。
- Message 選擇
Literal
的類型並輸入文字訊息例如「Welcome...」 - Template 選擇
Expression
的類型,並輸入底下範例 - Optional: 可以將
Processor
的Description
改成容易識別的描述幫助工作流程的編排易讀性,例如改成「顯示歡迎詞」 - 儲存設定
{
"quickReplies": [
{
"text": "我要如何升級我的會員資格?",
},
{
"text": "我的點數可以做什麼?"
},
{
"text": "兌換券在哪裡兌換?"
}
]
}
Step 4:Listen Message
新增一個 Listen Message
用以存放用戶輸入的訊息。
Step 5:LLM & Push Message
LLM 呼叫LLM來判斷用戶輸入的問題。
- Completion Model 選擇已經設定好的大型語言模型,或是可以點擊
「Add」
以新增Completion Model
設定。 - Prompt 選擇
Template(Advance)
並輸入以下範例請求AI:
你是情境判斷助手,負責判斷使用者目前是不是想詢問一些關於飯店的客服問題,例如住宿、飯店APP操作、點數兌換、會員資格等問題皆屬於客服問題的範圍。
* 這是你跟使用者的對話紀錄:
```
{{{history historyStart -1}}}
```
history為 Asgard 內建函數,historyStart 為 Step 2:Update Context 時在 Update Context 裡所新增的變數,-1
是指算到上一個對話為止,因此這裡是在告訴 LLM 用戶的歷史對話紀錄是從 historyStart 到上一個對話,也就是 Step 4:Listen Message 的 Listen Message
用戶輸入的問題。
- Output Schema 規範 AI 輸出結構化資料的格式,新增一個布林值的欄位
「isCustomerSupport」
來判斷是否為客服問題,並加上description
方便識別,範例中「true 表示使用者正在詢問關於客服的問題」,反之亦然。
{
"type": "object",
"properties": {
"isCustomerSupport": {
"type": "boolean",
"description": "true 表示使用者正在詢問關於客服的問題"
}
},
"required": [
"isCustomerSupport"
]
}
詳細JSON Schema寫法,請參考JSON Schema
- MaxTokens 設定消耗 Token 上限,此處選擇
Literal
類型並填入4096
。Token 上限請依據選用的模型支援的範圍去設定,此處僅為範例。 - 儲存設定
Push Message ,LLM 調用外部 AI model,通常會有調用成功與失敗兩種情況,當 Success 成立,就接到下一步的 Router 處理,當 Fail 時,可以加上 Push Message 來提示用戶。
當LLM Completion調用條件結果為FALUITRE:
- Message 選擇
Literal
的類型並輸入文字訊息例如「系統忙碌中...」 - Optional: 可以將
Processor
的Description
改成容易識別的描述幫助工作流程的編排易讀性,例如改成「表示流量控管中」 - 儲存設定
Step 6:Router & Push Message
Router 新增一個Router依據If, Else等條件來決定工作流程執行的路徑。
- 新增Case 1 條件名稱可以自訂,此處改成「是客服」來幫助識別。選擇Expression並輸入以下範例:
isCustomerSupport
isCustomerSupport 是我們在 LLM Processor
設定時,請求 AI 協助判斷的一個 object,假如為 TRUE
代表 AI 判斷為客服情境,假如為 FALSE
則不是客服情境。
Push Message 從 Router
出來的兩個條件 TRUE
跟 FALSE
,請分別加上 Push Message
來協助判斷目前為止的工作流程編排是正確的。
當Router條件結果為TRUE:
- Message 選擇
Literal
的類型並輸入文字訊息例如「是客服...」 - Optional: 可以將
Processor
的Description
改成容易識別的描述幫助工作流程的編排易讀性,例如改成「是客服情境」 - 儲存設定
當Router條件結果為ELSE:
- Message 選擇
Literal
的類型並輸入文字訊息例如「非客服」 - 儲存設定
- Optional: 可以將
Processor
的Description
改成容易識別的描述幫助工作流程的編排易讀性,例如改成「非客服情境」
Step 7:預覽 Bot
點擊 Preview
來預覽剛剛編排好的工作流程,若執行成功應可順利看到以下飯店 QA 的 Bot。接著就可以測試 AI 是否能正常判斷用戶的問題為客服問題或非客服問題。
測試
測試一:是客服情境
點擊 quickReplies
的問題比如「我的點數可以做什麼?」,由於此處設定的都是在客服的範圍內,因此 AI 應該要能判斷為是客服情境。
測試二:非客服情境
任意輸入其他與客服不相關的問題,比如「天氣如何?」AI 應能正常判斷為非客服情境。