共用方式為


使用 QnA Maker 回答問題

適用於: SDK v4

注意

Azure AI QnA Maker 將於 2025 年 3 月 31 日淘汰。 從 2022 年 10 月起,您將無法建立新的 QnA Maker 資源或知識庫。 較新版的問題和解答功能現在隨附於 Azure AI 語言。

自定義問題解答是 Azure AI 語言的一項功能,是 QnA Maker 服務的更新版本。 如需 Bot Framework SDK 中問答支援的詳細資訊,請參閱 自然語言理解

QnA Maker 會透過您的資料提供對話式的問題和解答層。 這可讓 Bot 將問題傳送至 QnA Maker 並收到解答,而不需要剖析並解讀問題的意圖。

在建立您自己的 QnA Maker 服務時,其中一項基本需求是在服務中填入問題和解答。 在許多案例中,問題和解答已存在於常見問題集或其他文件的內容中;但有些時候,您可能會想要以更自然的對話方式來自訂問題的解答。

本文說明如何使用 Bot 的現有 QnA Maker 知識庫。

針對新的 Bot,請考慮使用 適用於語言的 Azure 認知服務問答 功能。 如需詳細資訊,請參閱 使用問答來回答問題

注意

Bot Framework JavaScript、C# 和 Python SDK 將會繼續受到支援,不過,Java SDK 即將淘汰,最終長期支援將於 2023 年 11 月結束。

使用 Java SDK 建置的現有 Bot 將繼續運作。

針對新的 Bot 建置,請考慮使用 Microsoft Copilot Studio ,並閱讀 選擇正確的 Copilot 解決方案

如需詳細資訊,請參閱 Bot 建置的未來。

必要條件

關於此範例

若要在 Bot 中使用 QnA Maker,您需要 QnA Maker 入口網站中的現有 知識庫。 接著,您的 Bot 可以使用 知識庫 來回答用戶的問題。

針對新的 Bot 開發,請考慮使用 Copilot Studio。 如果您需要為 Bot Framework SDK Bot 建立新的 知識庫,請參閱下列 Azure AI 服務文章:

C# QnABot 邏輯流程

OnMessageActivityAsync 會針對收到的每個使用者輸入呼叫 。 呼叫時,它會從範例程式代碼的 appsetting.json 檔案存取組態設定,以尋找值以連線到您預先設定的 QnA Maker 知識庫。

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

取得值,以將 Bot 連線到 知識庫

提示

QnA Maker 檔提供如何建立、定型及發佈 知識庫 的指示。

  1. QnA Maker 網站中,選取您的 知識庫。
  2. 開啟 知識庫 后,選取 [設定] 索引標籤。記錄服務名稱顯示的值。 使用 QnA Maker 入口網站介面時,此值有助於尋找您感興趣的 知識庫。 它不會用來將 Bot 應用程式連線到此 知識庫。
  3. 向下卷動以尋找 部署詳細數據 ,並從 Postman 範例 HTTP 要求記錄下列值:
    • POST /knowledgebases/<knowledge-base-id>/generateAnswer
    • 主機: <your-host-url>
    • 授權:EndpointKey <your-endpoint-key>

您的主機 URL 會以 開頭 https:// ,並以 結尾 /qnamaker, 例如 https://<hostname>.azure.net/qnamaker。 您的 Bot 需要 知識庫 識別碼、主機 URL 和端點密鑰,才能連線到 QnA Maker 知識庫。

更新 settings 檔案

首先,將存取 知識庫 所需的資訊新增至配置檔案,包括主機名、端點密鑰和 知識庫 標識元(kbId)。 這些值是從 QnA Maker 中 知識庫 的 [設定] 索引標籤儲存的值。

如果您未針對生產環境部署此專案,您可以將 Bot 的應用程式識別碼和密碼欄位保留空白。

注意

若要將 QnA Maker 知識庫 新增至現有的 Bot 應用程式,請務必為您的 QnA 專案新增資訊標題。 本節中的「名稱」值提供從您的應用程式存取此資訊所需的金鑰。

appsettings.json

C# (封存)

設定 QnA Maker 實例

首先,我們會建立物件來存取 QnA Maker 知識庫。

請確定 已為您的專案安裝 Microsoft.Bot.Builder.AI.QnA NuGet 套件。

QnABot.cs 的 方法中 OnMessageActivityAsync ,建立 QnAMaker 實例。 類別 QnABot 也是提取連線資訊的名稱,儲存在 上述appsettings.json 的位置。 如果您在配置檔中為 知識庫 連線資訊選擇不同的名稱,請務必更新此處的名稱,以反映您選擇的名稱。

Bots/QnABot.cs

C# (封存)

從 Bot 呼叫 QnA Maker

當您的 Bot 需要 QnAMaker 的解答時,請從 Bot 程式代碼呼叫 GetAnswersAsync 方法,以根據目前內容取得適當的答案。 如果您要存取自己的 知識庫,請變更下方找不到的解答訊息,為您的使用者提供有用的指示。

Bots/QnABot.cs

C# (封存)

測試聊天機器人

在本機電腦上執行範例。 如果您尚未這麼做,請安裝 Bot Framework 模擬器。 如需進一步指示,請參閱範例的 README (C#archived)、JavaScript (archived)Java (archived) Python (archived))。

啟動模擬器、連線至 Bot,並將訊息傳送至 Bot。 您問題的回應會根據您 知識庫 的資訊而有所不同。

測試範例 Bot。

其他資訊

QnA Maker 多回合範例 (C# 多回合範例(已封存)JavaScript 多回合範例(已封存)、Java 多回合範例(已封存)Python 多回合範例(已封存)顯示如何使用 QnA Maker 對話框來支援 QnA Maker 的後續提示和主動式學習功能。

  • QnA Maker 支援後續提示,也稱為多回合提示。 如果 QnA Maker 知識庫 需要使用者的詳細資訊,QnA Maker 會傳送可用來提示使用者的內容資訊。 此資訊也可用來對 QnA Maker 服務進行任何後續呼叫。 在 4.6 版中,Bot Framework SDK 新增了此功能的支援。

    若要建構這類 知識庫,請參閱 QnA Maker 檔,瞭解如何使用後續提示來建立交談的多個回合。

  • QnA Maker 也支持主動式學習建議,允許 知識庫 隨著時間改善。 QnA Maker 對話框支持主動式學習功能的明確意見反應。

    若要在 知識庫 上啟用此功能,請參閱 QnA Maker 關於主動式學習建議的檔

下一步

QnA Maker 可以與其他 Azure AI 服務結合,讓您的 Bot 更強大。 Bot Framework Orchestrator 可讓您在 Bot 中結合 QnA 與 Language Understanding (LUIS)。