使用 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 建置,請考慮使用 Power Virtual Agents ,並閱讀 選擇正確的聊天機器人解決方案 。
如需詳細資訊,請參閱 Bot 建置 的未來。
必要條件
- QnA Maker 帳戶和現有的 QnA Maker 知識庫。
- Bot 基本概念 和 QnA Maker 的知識。
- C# (archived)、JavaScript (archived) 、 JAVA(archived)、 JAVA (archived) 或 Python (archived) 中的 QnA Maker (simple) 範例複本 。
關於此範例
若要在 Bot 中使用 QnA Maker,您需要 QnA Maker 入口網站中的 現有知識庫。 接著,您的 Bot 可以使用知識庫來回答使用者的問題。
針對新的 Bot 開發,請考慮使用 Power Virtual Agents 。 如果您需要為 Bot Framework SDK Bot 建立新的知識庫,請參閱下列 Azure AI 服務文章:
OnMessageActivityAsync
會針對收到的每個使用者輸入呼叫 。 呼叫時,它會從範例程式碼的 appsetting.json 檔案存取組態設定,以尋找值以連線到預先設定的 QnA Maker 知識庫。
使用者的輸入會傳送至您的知識庫,且最傳回的答案會顯示回給使用者。
取得值,以將 Bot 連線至知識庫
提示
QnA Maker 檔提供如何 建立、定型及發佈知識庫 的指示。
- 在 QnA Maker 網站中,選取您的知識庫。
- 開啟知識庫後,選取 [設定 ] 索引標籤。記錄服務名稱 顯示 的值。 使用 QnA Maker 入口網站介面時,這個值對於尋找您感興趣的知識庫很有用。 它不會用來將 Bot 應用程式連線到此知識庫。
- 向下捲動以尋找 部署詳細資料 ,並從 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 知識庫。
更新設定檔案
首先,將存取知識庫所需的資訊新增至設定檔案,包括主機名稱、端點金鑰和知識庫識別碼 (kbId) 。 這些是您從 QnA Maker 中知識庫 [設定 ] 索引標籤儲存的值。
如果您未針對生產環境部署此專案,您可以將 Bot 的應用程式識別碼和密碼欄位保留空白。
注意
若要將 QnA Maker 知識庫新增至現有的 Bot 應用程式,請務必為您的 QnA 專案新增資訊標題。 本節中的「名稱」值提供從您的應用程式存取此資訊所需的金鑰。
appsettings.json
設定 QnA Maker 實例
首先,我們會建立物件來存取 QnA Maker 知識庫。
請確定 已為您的專案安裝 Microsoft.Bot.Builder.AI.QnA NuGet 套件。
在 QnABot.cs 的 方法中 OnMessageActivityAsync
,建立 QnAMaker 實例。 類別 QnABot
也是在上述 appsettings.json 中 儲存的連接資訊名稱提取所在的位置。 如果您在設定檔中為知識庫連線資訊選擇不同的名稱,請務必更新此處的名稱,以反映您選擇的名稱。
Bots/QnABot.cs
從 Bot 呼叫 QnA Maker
當您的 Bot 需要 QnAMaker 的解答時,請從 Bot 程式碼呼叫 GetAnswersAsync
方法,以根據目前內容取得適當的答案。 如果您要存取自己的知識庫,請變更 下方找不到 的解答訊息,為您的使用者提供有用的指示。
Bots/QnABot.cs
測試聊天機器人
在本機電腦上執行範例。 如果您尚未這麼做,請安裝 Bot Framework 模擬器 。 如需進一步指示,請參閱範例的 README
(C# ( archived)、 JavaScript (archived) 、 JAVA (archived) 或 Python (archived))。
啟動模擬器、連線至 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)。