將多個類別新增至您的常見問題集機器人
在本教學課程中,您會了解如何:
- 建立專案,並利用中繼資料來將問題答案配對標記為不同的類別
- 針對每個領域建立個別的專案
- 針對每個領域建立個別的語言資源
建置常見問題集機器人時,您可能會遇到需要在多個領域中處理查詢的使用案例。 假設 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。 但是,您可以為存取相同資源的使用者定義不同的角色。