讓客服 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 這個數值。
- Max Results 最多回覆幾筆,可以根據資料量與筆數來判斷,範例使用 10 表示最多回覆 10 筆。
- 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(Advance)並輸入以下範例請求 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 上限請依據選用的模型支援的範圍去設定,此處僅為範例。 - 儲存設定