如何處理對話

對話會使用在使用者輸入中所識別的目的,以及應用程式的環境定義來與使用者互動,最後提供有用的回應。

對話會比對目的 (使用者說他們想要執行的動作) 與回應 (機器人回應)。 回應可能是對問題 (例如 What are your store hours? ) 的回答,或執行指令 (例如下訂單)。 目的和實體資訊可能足以識別正確的回應,或是對話可能要求使用者提供更多要正確地回應所需的輸入。 例如,如果使用者詢問 Where can I get some food?,您可能會想要釐清他們是要在餐廳還是雜貨店吃晚餐還是外帶,依此類推。 您可以在文字回應中要求更多詳細資料,並建立一個以上的子節點來處理新的輸入。

在 watsonx Assistant 中,對話會以圖形方式呈現為樹狀結構。 建立一個分支來處理您要交談處理的每一個目的。 分支由多個節點組成。

對話節點

每一個對話節點至少都包含一個條件及一個回應。

![Shows user input going to a box that contains the statement If: CONDITION, Then: RESPONSE](images/node1-empty.png

  • 條件:指定在要觸發的對話中,必須存在於此節點之使用者輸入中的資訊。 此資訊通常是特定目的。 它也可能是實體類型、實體值或環境定義變數值。 如需相關資訊,請參閱 條件
  • 回應:助理用於回應使用者的話語。 也可以將回應配置成顯示一個影像或選項清單,或配置成觸發程式化的動作。 如需相關資訊,請參閱 回應

您可以將節點視為具有 if/then 建構:如果此條件為 true,則傳回此回應。

例如,如果助理的自然語言處理功能判定使用者輸入包含 #cupcake-menu 目的,則會觸發下一個節點。 由於觸發節點,助理會回應適當的回答。

顯示使用者詢問 cupcake 虛擬硬體樣板的相關資訊。 If 條件是 #cupcake-menu,Then 回應是 cupcake 虛擬硬體樣板的清單。
簡式條件及回應

具有一個條件及回應的單一節點,可以處理簡單的使用者要求。 但是,使用者通常會有更複雜的問題,或需要協助來完成更複雜的作業。 您可以新增子節點,要求使用者提供助理所需的任何其他資訊。

顯示對話中的第一個節點會詢問使用者想要的杯子蛋糕類型 (無麩質或一般),並有兩個子節點根據使用者的回答提供不同的回應。
Node 與子節點

對話流程

建立的對話由助理從樹狀結構中的第一個節點到最後一個節點進行處理。

向下箭頭指向 3 個節點,以顯示對話流程從第一個節點到最後一個
Node 流程

在樹狀結構中向下流動時,如果助理發現符合的條件,則會觸發該節點。 然後,會沿著已觸發的節點移動,以根據任何子節點條件來檢查使用者輸入。 當它檢查子節點時,會再次從第一個子節點移至最後一個子節點。

助理將繼續在對話樹狀結構中從第一個節點向最後一個節點推進,然後沿每個觸發的節點從第一個子節點向最後一個子節點推進,再沿每個觸發的子節點推進,直至到達所在分支中的最後一個節點。

顯示從第一個根節點指向最後一個的箭頭 1、從沿著觸發節點長度指向的箭頭 2,以及從觸發節點第一個子節點指向最後一個子節點的箭頭 3。
Node 流程

在開始建置對話時,您必須決定要包含的分支,以及放置它們的位置。 分支的順序十分重要,因為會從第一個往最後一個來評估節點。 會使用條件符合輸入的第一個根節點,而位於樹狀結構中較後面位置的任何節點都不會被觸發。

如果助理到達分支尾端,或是從所評估的這組現行子節點中找不到評估為 true 的條件,則會跳回到樹狀結構的基礎。 助理會從第一個到最後一個處理根節點。 如果沒有任何條件評估為 true,則會傳回樹狀結構中最後一個節點的回應(一般會有一個必定評估為 true 的特殊 anything_else 條件)。

您可以利用下列方式,來中斷第一個到最後一個的標準流程。

  • 藉由自訂在處理節點之後會發生的情況。 例如,您可以將節點配置為在處理之後直接跳至另一個節點,即使另一個節點位在樹狀結構中較前面的位置。 如需相關資訊,請參閱 定義下一步

  • 藉由配置條件式回應來跳至其他節點。 如需相關資訊,請參閱 條件式回應

  • 藉由配置對話節點的離題設定值。 離題也可能會影響使用者在執行時期如何在節點之間移動。 如果您啟用脫離大部分節點的功能,並配置返回,則使用者可以更輕鬆地從某個節點跳至另一個節點,然後再跳回來。 如需相關資訊,請參閱 離題

範例對話

此圖顯示以圖形使用者介面對話編輯器建置的對話樹狀結構模型。

具有範例內容的範例對話樹狀結構
對話樹狀結構

此圖中的對話樹狀結構包含兩個根對話節點。 一般對話樹狀結構可能有好多節點,但這個描述讓您一瞥節點子集可能的外觀。

  • 第一個根節點會以目的值為條件。 它有兩個子節點,各以實體值為條件。 第二個子節點定義兩個回應。 如果環境定義變數的值符合條件中指定的值,則會將第一個回應傳回給使用者。 否則,會傳回第二個回應。

    這個標準類型的節點有助於擷取特定主題的相關問題,然後在根回應中,詢問子節點所處理的後續問題。 例如,它可能會辨識關於折扣的使用者問題,並詢問有關該使用者是否為公司具有特殊折扣安排的任何協會成員的後續問題。 子節點會根據使用者如何回答有關協會成員資格的問題來提供不同的回應。

  • 第二個根節點是含空位的節點。 它也會以目的值為條件。 它會定義一組空位,您想要從使用者收集的每段資訊都有一個空位。 每個空位都會詢問一個問題,以從使用者獲得答案。 它會在使用者對提示的回覆中尋找特定的實體值,該值隨後會儲存在空位環境定義變數中。

    這種類型的節點有助於收集您代表使用者執行交易時可能需要的詳細資料。 例如,如果使用者的目的是預訂航班,則空位可以收集起點和目的地位置資訊、旅行日期等等。