將多個類別新增至您的常見問題集機器人
在本教學課程中,您會了解如何:
- 建立專案,並利用中繼資料來將問題答案配對標記為不同的類別
- 針對每個領域建立個別的專案
- 針對每個領域建立個別的語言資源
建置常見問題集機器人時,您可能會遇到需要在多個領域中處理查詢的使用案例。 假設 Microsoft 的行銷小組想要建置客戶支援 Bot,以回答有關多個 Surface 產品的常見使用者查詢。 為了簡單起見,我們將使用兩個常見問題集 URL (Surface 手寫筆和 Surface Earbuds) 來建立專案。
使用領域特定的中繼資料建立專案
內容作者可以使用文件來擷取問題答案配對,或將自訂的問題答案配對新增至專案。 若要將這些問題和答案分組到特定的領域或類別,您可以新增中繼資料。
針對 Surface 產品上的 Bot,您可以採取下列步驟來建立 Bot,以回答針對這兩種產品類型的查詢:
當您新增了下列每一個 URL 之後,即可透過選取 [新增來源]>[URL]> 和 [全部新增],新增下列常見問題集 URL 作為來源:
在此專案中,我們提供了有關兩個產品的問題答案配對,而我們想要區分它們,以便在指定產品的問題和答案之間搜尋回應。 為達此目的,我們可以針對問題答案配對更新中繼資料欄位。
如您在下列範例中所見,我們新增了一個中繼資料,其中的 product 為機碼,而 surface_pen 或 surface_earbuds 為值 (如果適用)。 您可以擴充此範例,以擷取多個產品的相關資料,並針對每個產品新增不同的值。
現在,為了限制系統搜尋特定產品的回應,您必須在自訂問題解答 REST API 中傳遞該產品作為篩選條件。
您可以從 [部署專案] 窗格中擷取 REST API 預測 URL:
在 API 呼叫的 JSON 主體中,我們已針對中繼資料 product 傳遞 surface_pen 作為值。 因此,系統將只會在具有相同中繼資料的 QnA 配對中尋找回應。
{ "question": "What is the price?", "top": 3 }, "answerSpanRequest": { "enable": true, "confidenceScoreThreshold": 0.3, "topAnswersWithSpan": 1 }, "filters": { "metadataFilter": { "metadata": [ { "key": "product", "value": "surface_pen" } ] } }
您可以透過下列方式,根據使用者輸入來取得中繼資料值:
透過 Bot 用戶端,明確地將領域當作使用者的輸入。 例如,如下所示,您可以在起始交談時,將產品類別當作使用者的輸入。
根據 Bot 內容,隱含地識別領域。 例如,如果前一個問題與特定的 Surface 產品相關,用戶端就可以將其儲存為內容。 如果使用者未在下一個查詢中指定產品,您就能將 Bot 內容當作中繼資料傳遞給產生解答 API。
從使用者查詢中擷取實體,以識別要用於中繼資料篩選條件的領域。 您可以使用其他 Azure AI 服務 (例如 具名實體辨識 (NER) 和交談語言理解) 來擷取實體。
我們的專案可以有多大?
您最多可以將 50000 個問題答案配對新增至單一專案。 如果您的資料超過 50,000 個問題答案配對,您就應該考慮分割專案。
針對每個領域建立個別的專案
您也可以為每個領域建立個別的專案,並個別維護專案。 所有 API 都需要使用者傳遞專案名稱,以對專案進行任何更新,或擷取使用者問題的答案。
當服務收到使用者問題時,您必須在顯示的 REST API 端點中傳遞 projectName
,以便從相關專案中擷取回應。 您可以在 [部署專案] 頁面的 [取得預測 URL] 底下找到 URL:
https://southcentralus.api.cognitive.microsoft.com/language/:query-knowledgebases?projectName=Test-Project-English&api-version=2021-10-01&deploymentName=production
針對每個領域建立個別的語言資源
假設 Microsoft 的行銷小組想要建立客戶支援 Bot,以回答有關 Surface 和 Xbox 產品的使用者查詢。 他們打算指派不同的小組來存取有關 Surface 和 Xbox 的專案。 在此情況下,建議您建立兩個自訂問題解答資源 - 一個用於 Surface,另一個用於 Xbox。 但是,您可以為存取相同資源的使用者定義不同的角色。