共用方式為


將自然語言理解新增至您的 Bot

適用於: SDK v4

注意

Language Understanding (LUIS) 將於 2025 年 10 月 1 日淘汰。 從 2023 年 4 月 1 日起,您將無法建立新的 LUIS 資源。 新版的語言理解現在已提供作為 Azure AI 語言的一部分。

對話式語言理解(CLU)是 Azure AI 語言的一項功能,是 LUIS 的更新版本。 如需 Bot Framework SDK 中語言理解支援的詳細資訊,請參閱 自然語言理解

瞭解使用者在交談中和上下文的意義的能力可能是困難的,但可以讓聊天機器人有更自然的對話感覺。 Language Understanding (LUIS) 是一種雲端式 API 服務,可讓您執行此動作,讓您的 Bot 能夠辨識使用者訊息的意圖、允許使用者使用更自然的語言,以及更妥善地引導對話流程。

本主題會逐步引導您將 LUIS 新增至航班預訂應用程式,以辨識用戶輸入中包含的不同意圖和實體。

注意

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

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

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

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

必要條件

關於此範例

此核心 Bot 範例顯示機場航班預訂應用程式的範例。 它會使用 LUIS 服務來辨識使用者輸入,並傳回最上層可辨識的 LUIS 意圖。

語言模型包含三個意圖: Book FlightCancelNone。 LUIS 會使用這些意圖來瞭解用戶傳送訊息給 Bot 時的意義。 語言模型也會定義 LUIS 可以從使用者的輸入擷取的實體,例如來源或目的地機場。

在每次處理使用者輸入之後,DialogBot會儲存UserStateConversationState的目前狀態。 收集所有必要的資訊之後,程式碼範例會建立示範航班預約。 在本文中,我們將涵蓋此範例的 LUIS 層面。 不過,範例的一般流程如下:

  • OnMembersAddedAsync 當新的使用者連線並顯示歡迎卡片時,就會呼叫 。
  • 每當收到使用者輸入時,會呼叫 OnMessageActivityAsync

類別圖表概述 C# 範例的結構。

模組 OnMessageActivityAsync 會透過 Run 對話框擴充方法執行適當的對話框。 然後,主要對話框會呼叫 LUIS 協助程式,以尋找評分最高的用戶意圖。 如果使用者輸入的最上層意圖是「BookFlight」,協助程式會使用 LUIS 傳回的使用者資訊來填寫表單。 之後,主要對話框會啟動 BookingDialog,這會視需要從使用者取得其他資訊,例如:

  • Origin 起源城市
  • TravelDate 預訂航班的日期
  • Destination 目的地城市

本文涵蓋如何將 LUIS 新增至 Bot。 如需使用對話框或狀態的相關信息,請參閱如何使用 對話框提示 收集使用者輸入,或 分別儲存使用者和交談數據

在 LUIS 入口網站中建立 LUIS 應用程式

  1. 登入 LUIS 入口網站 ,並視需要 建立帳戶撰寫資源
  2. LUIS交談應用程式 頁面上,選取 匯入,然後選取 匯入為 JSON
  3. 在 [ 匯入新的應用程式 ] 對話框中:
    1. 在範例的 CognitiveModels 資料夾中,選擇FlightBooking.json檔案
    2. 輸入 FlightBooking 作為應用程式的選擇性名稱,然後選取 [ 完成]。
  4. 網站可能會顯示如何建立有效的 LUIS 應用程式和升級複合實體對話方塊。 您可以關閉這些對話框並繼續。
  5. 訓練您的應用程式,然後將您的應用程式發佈至 生產 環境。 如需詳細資訊,請參閱 LUIS 文件,瞭解如何訓練發布應用程式。

為何使用實體

LUIS 實體可讓 Bot 瞭解超出標準意圖的事件。 這可讓您從使用者收集其他資訊,讓 Bot 可以提出問題並更聰明地回應。 除了三個 LUIS 意圖「Book Flight」、「Cancel」和「None」的定義之外,FlightBooking.json 檔案也包含一組實體,例如「From.Airport」和「To.Airport」。 這些實體可讓 LUIS 在要求新的旅行預約時,偵測並傳回使用者原始輸入內含的其他資訊。

取得值以連線到 LUIS 應用程式

發佈 LUIS 應用程式之後,您可以從 Bot 存取它。 您必須記錄數個值,才能從您的機器人內部存取 LUIS 應用程式。 您可以使用 LUIS 入口網站來擷取該資訊。

從 LUIS.ai 入口網站擷取應用程式資訊

配置檔案(appsettings.json.envconfig.py)作為匯集所有服務參考的位置。 您擷取的資訊將會在下一節中新增至此檔案。

  1. luis.ai 選取已發佈的 LUIS 應用程式。

  2. 開啟已發佈的 LUIS 應用程式後,選取 [ 管理] 索引標籤。

  3. 選取左側的 設定 索引標籤,並將 應用程式 ID 顯示的值記錄為 <YOUR_APP_ID>。

    [管理] 頁面的螢幕快照,其中顯示您的應用程式識別符。

  4. 選取 Azure 資源,然後 預測資源。 將 位置 的值記錄為 <YOUR_REGION>,並將 主鍵 記錄為 <YOUR_AUTHORING_KEY>。

    [管理] 頁面的螢幕快照,其中顯示您的位置和主鍵。

    或者,您可以針對撰寫資源使用區域和主鍵。

更新設定檔案

將存取 LUIS 應用程式所需的資訊,包括應用程式識別碼、撰寫密鑰和區域新增至 appsettings.json 檔案。 在上一個步驟中,您已從已發佈的 LUIS 應用程式擷取這些值。 API 主機名稱的格式 <your region>.api.cognitive.microsoft.com應為 。

appsetting.json

警告

您要尋找的範例看起來已經移動! 放心,我們正在努力解決這個問題。

設定機器人以使用 LUIS 應用程式

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

若要連線到 LUIS 服務,Bot 會提取您新增至appsetting.json檔案的資訊。 類別 FlightBookingRecognizer 包含應用程式設定的程式碼,從 appsetting.json 檔案中取得,並藉由呼叫 RecognizeAsync 方法來查詢 LUIS 服務。

FlightBookingRecognizer.cs

警告

您要尋找的範例看起來已經移動! 放心,我們正在努力解決這個問題。

FlightBookingEx.cs包含擷取 FromToTravelDate 的邏輯;它會擴充從 呼叫 FlightBooking.csFlightBookingRecognizer.RecognizeAsync<FlightBooking>時用來儲存 LUIS 結果的部分類別MainDialog.cs

CognitiveModels\FlightBookingEx.cs

警告

您要尋找的範例看起來已經移動! 放心,我們正在努力解決這個問題。

LUIS 現在已為您的 Bot 設定並連線。

測試聊天機器人

下載並安裝最新的 Bot Framework 模擬器

  1. 在本機電腦上執行範例。 如果您需要指示,請參閱 README C# 範例、JS 範例Python 範例的檔案。

  2. 在模擬器中,輸入訊息,例如「前往巴黎」或「從巴黎前往柏林」。 使用在文件 FlightBooking.json 中找到的任何語句來訓練「預訂航班」意圖。

如果 LUIS 傳回的主要意圖解析為「預訂航班」,您的機器人會詢問更多問題,直到其儲存足夠的資訊來建立旅行預約為止。 屆時,會將此預訂資訊傳回給您的使用者。

此時,程式機器人的邏輯將會重設,您可以繼續建立更多預約。

其他資訊

如需 LUIS 的詳細資訊,請參閱 LUIS 檔:

提示

SDK 的不同部分會定義不同的 實體 類別或元素。 如需訊息實體,請參閱 實體和活動類型