使用問答來回答問題

適用于: SDK v4

適用于語言的 Azure 認知服務問答 功能提供雲端式自然語言處理(NLP),可讓您建立資料的自然對話層。 其可用來從資訊的自訂知識庫為任何輸入尋找最適當的答案。

本文說明如何在 Bot 中使用問題解答功能。

必要條件

  • 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶
  • Language Studio 中的 語言資源,已啟用自訂問題解答功能。
  • C# JavaScript 中的 自訂問題解答 範例複本。

關於此範例

若要在 Bot 中使用問題解答,您需要現有的知識庫。 接著,您的 Bot 可以使用知識庫來回答使用者的問題。

如果您需要為 Bot Framework SDK Bot 建立新的知識庫,請參閱自訂問題解答範例的讀我檔案。

C# question answering bot logic flow.

OnMessageActivityAsync 會針對收到的每個使用者輸入呼叫 。 呼叫時,它會從範例程式碼的 appsetting.json 檔案存取組態設定,並聯機到您的知識庫。

使用者的輸入會傳送至您的知識庫,且最傳回的答案會顯示回給使用者。

取得您的知識庫連線設定

  1. Language Studio 中,開啟您的語言資源。

  2. 將下列資訊複製到 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 對話方塊支援主動式學習功能的明確意見反應。