使用問答來回答問題
適用于: SDK v4
適用于語言的 Azure 認知服務問答 功能提供雲端式自然語言處理(NLP),可讓您建立資料的自然對話層。 其可用來從資訊的自訂知識庫為任何輸入尋找最適當的答案。
本文說明如何在 Bot 中使用問題解答功能。
必要條件
- 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
- Language Studio 中的 語言資源,已啟用自訂問題解答功能。
- C# 或 JavaScript 中的 自訂問題解答 範例複本。
關於此範例
若要在 Bot 中使用問題解答,您需要現有的知識庫。 接著,您的 Bot 可以使用知識庫來回答使用者的問題。
如果您需要為 Bot Framework SDK Bot 建立新的知識庫,請參閱自訂問題解答範例的讀我檔案。
OnMessageActivityAsync
會針對收到的每個使用者輸入呼叫 。 呼叫時,它會從範例程式碼的 appsetting.json 檔案存取組態設定,並聯機到您的知識庫。
使用者的輸入會傳送至您的知識庫,且最傳回的答案會顯示回給使用者。
取得您的知識庫連線設定
在 Language Studio 中,開啟您的語言資源。
將下列資訊複製到 Bot 的組態檔:
- 語言端點的主機名稱。
- ,
Ocp-Apim-Subscription-Key
這是您的端點金鑰。 - 專案名稱,可作為您的知識庫識別碼。
您的主機名稱是 和 /language
之間 https://
端點 URL 的一部分,例如 https://<hostname>/language
。 您的 Bot 需要專案名稱、主機 URL 和端點金鑰,才能連線到您的知識庫。
提示
如果您未針對生產環境部署此專案,您可以將 Bot 的應用程式識別碼和密碼欄位保留空白。
設定並呼叫知識庫用戶端
建立您的知識庫用戶端,然後使用用戶端從知識庫擷取答案。
請確定 已為您的專案安裝 Microsoft.Bot.Builder.AI.QnA NuGet 套件。
在 QnABot.cs 的 方法中 OnMessageActivityAsync
,建立知識庫用戶端。 使用回合內容來查詢知識庫。
Bots/CustomQABot.cs
using var httpClient = _httpClientFactory.CreateClient();
var customQuestionAnswering = CreateCustomQuestionAnsweringClient(httpClient);
// Call Custom Question Answering service to get a response.
_logger.LogInformation("Calling Custom Question Answering");
var options = new QnAMakerOptions { Top = 1, EnablePreciseAnswer = _enablePreciseAnswer };
var response = await customQuestionAnswering.GetAnswersAsync(turnContext, options);
測試聊天機器人
在本機電腦上執行範例。 如果您尚未這麼做,請安裝 Bot Framework 模擬器 。 如需進一步指示,請參閱範例的 README
( C# 或 JavaScript )。
啟動模擬器、連線至 Bot,並將訊息傳送至 Bot。 您問題的回應會根據您知識庫的資訊而有所不同。
其他資訊
自訂 問題解答,所有功能 範例 ( C# 或 JavaScript ) 會示範如何使用 QnA Maker 對話方塊 來支援知識庫的後續提示和主動式學習功能。
- 問答支援後續提示,也稱為多回合提示。 如果知識庫需要使用者的詳細資訊,服務會傳送可用來提示使用者的內容資訊。 這項資訊也可用來對服務進行任何後續呼叫。
- 問答也支援主動式學習建議,讓知識庫隨著時間改善。 QnA Maker 對話方塊支援主動式學習功能的明確意見反應。