意圖會針對一回合的對話來分類使用者的意圖。
意圖包含下列資料:
| 字詞 | 定義 |
|---|---|
| 顯示名稱 | 顯示在控制台的意圖名稱。 |
| 標籤 | 有助於分類意圖的標籤,例如:主要意圖。 |
| 訓練詞組 <0 | 訓練詞組是指使用者可能會輸入或說出的字詞範例,亦稱為使用者輸入內容。如果使用者輸入內容與其中一個詞組相近,Dialogflow CX 就會將其視為與意圖相符。您無須定義所有可能的範例,因為 Dialogflow CX 內建的機器學習技術會依據其他類似的詞組擴充清單。 |
| 參數 | 您定義的訓練詞組會使用參數,從使用者輸入內容的特定部分擷取值。 |
| DTMF 模式 | 請參閱「電話整合的 DTMF」。 |
意圖比對
當使用者輸入內容 (文字、語音或電話按鍵) 時,Dialogflow CX 會將輸入內容與意圖訓練詞組進行比較,找出最相符的項目。這項程序稱為意圖比對。 意圖比對只能在範圍內,針對與意圖路徑 (具有意圖需求的狀態處理常式) 相關聯的意圖進行。
系統會根據 DTMF 模式比對按鍵輸入內容。不過,在搜尋與文字相符的意圖時,Dialogflow CX 會根據意圖偵測可信度 (也稱為可信度分數),為可能的相符項目評分。 這些值介於 0.0 (完全不確定) 到 1.0 (完全確定) 之間。
意圖評分完成後,可能會出現以下兩種結果:
訓練詞組
訓練詞組是指使用者可能會輸入或說出的字詞範例 (亦稱為使用者輸入內容)。您必須針對每個意圖建立許多訓練詞組。如果使用者輸入內容與其中一個詞組相近,Dialogflow CX 就會將其視為與意圖相符。
舉例來說,「我想吃披薩」這個訓練詞組可訓練代理程式辨識類似該詞組的使用者輸入內容,例如「買披薩」或「訂披薩」。
您無須定義所有可能的範例,因為 Dialogflow CX 內建的機器學習技術會依據其他類似的詞組擴充清單。您至少應建立 10 到 20 個訓練詞組 (視意圖的複雜程度而定),讓代理程式可辨識各種使用者輸入內容。舉例來說,如果希望意圖可以辨識使用者關於自己最喜歡顏色的輸入內容,那麼可以定義下列訓練詞組:
- 「I like red」(我喜歡紅色)
- 「My favorite color is yellow」(我最喜歡的顏色是黃色)
- 「black」(黑色)
- 「Blue is my favorite」(我最愛藍色)
- ...
自動生成及自動翻譯訓練詞組
您可以選擇使用 AI 生成功能自動生成訓練詞組,而不必手動輸入。如何使用這項功能:
- 前往「管理」分頁,然後點選「意圖」。選擇現有意圖,或點選「+ 建立」建立新意圖。
- 請務必在「說明」欄位中輸入意圖用途,例如「使用者詢問訂單狀態時,系統會觸發這項意圖」。AI 生成器會使用這個欄位,生成更準確的訓練詞組。
- 按一下「__ newly AI-generated phrases」單選按鈕。預設值為 3。一次產生超過 15 個訓練詞組可能會導致錯誤。
- 按一下「+ 新增」。AI 會生成指定數量的訓練詞組,並填入表格。請務必檢查所有生成的訓練詞組是否正確。
如要瞭解如何使用這項功能,自動生成及翻譯非預設語言的資料,請參閱多語言代理程式說明文件。
為訓練詞組加註
您可以為訓練詞組的部分內容「加註」,並設定相關聯的參數,藉此控制擷取使用者資料的方式。
舉例來說,假設有一個「東京明天的天氣預報為何?」的訓練詞組。您應使用 date 參數為「明天」加註,並使用 location 參數為「東京」加註。當您為訓練詞組的部分內容加註時,Dialogflow CX 會辨識這些部分只是使用者會在執行階段提供的實際值範例。
針對「What is the forecast on Friday for Sydney?」(雪梨星期五的天氣預報為何?) 這類的使用者輸入內容,Dialogflow CX 會從「Friday」(星期五) 擷取 date 參數,並從「Sydney」(雪梨) 擷取 location 參數。
您必須為所有要擷取為參數的訓練詞組部分加註,否則 Dialogflow 不會擷取值。
使用主控台建構代理程式時,如果您新增的訓練詞組包含可對應到現有實體類型的部分,系統就會自動為您建立大多數的註解。這些部分會在主控台中醒目顯示,您可以視需要編輯註解和參數。
如要使用主控台手動為訓練詞組加註:
- 選取要為訓練詞組加註的部分。
- 從清單中選取所需的實體類型。
- 系統會在下方的參數表中為您建立參數。
使用 API 建構代理程式時,您必須手動為訓練詞組部分加註。請參閱 Intent 類型使用的 TrainingPhrase 類型。
選取意圖參照的通訊協定和版本:
| 通訊協定 | V3 | V3beta1 |
|---|---|---|
| REST | 意圖資源 | 意圖資源 |
| RPC | 意圖介面 | 意圖介面 |
| C++ | IntentsClient | 不適用 |
| C# | IntentsClient | 不適用 |
| Go | IntentsClient | 不適用 |
| Java | IntentsClient | IntentsClient |
| Node.js | IntentsClient | IntentsClient |
| PHP | 不適用 | 不適用 |
| Python | IntentsClient | IntentsClient |
| Ruby | 不適用 | 不適用 |
訓練詞組建立的隱含實體
大多數自訂實體都是透過建立實體類型和新增實體項目來明確定義。不過,自訂實體也可能包含隱含值。當您為訓練詞組的文字加註時,如果加註的文字不是所選實體類型定義的值,就會發生這種情況。加註的文字會成為隱含新增實體項目的實體參照值。如果實體類型是地圖實體,文字也會成為實體項目的同義字。
預設歡迎意圖
建立代理程式時,系統會為您建立預設歡迎意圖。對於部分語言,意圖會包含「你好」等訓練詞組,用來比對使用者一開始輸入的內容。您可以視需要編輯這個意圖。
使用 API 時,您可以透過下列意圖 ID 參照這個意圖:
00000000-0000-0000-0000-000000000000
如果代理程式發起對話,您可以使用 API 觸發這項意圖。呼叫 detectIntent 或 streamingDetectIntent 方法時,請在 QueryInput.intent.intent 欄位中使用 projects/<PROJECT_ID>/locations/<LOCATION_ID>/agents/<AGENT_ID>/intents/00000000-0000-0000-0000-000000000000 值。
預設負面意圖
建立代理程式時,系統會為您建立預設負面意圖。您可以新增訓練詞組到這個意圖中做為排除範例。有時,使用者輸入內容可能與標準意圖中的訓練詞組有點類似,但您不希望這類輸入內容與任何標準意圖配對。
舉例來說,自動預訂代理程式可能會有「I'd like to book a room」(我想訂房) 這樣的訓練詞組。如果使用者想要購買有關房間的書籍,可能會說「I'd like to buy a book about rooms」(我想買有關房間的書)。為確保使用者輸入內容不會與您的意圖配對,您可以將該詞組新增為負例。
此外,您應新增超出代理程式範圍的可能詞組,這樣就不會比對到任何意圖。不過,請避免新增大量這類詞組。舉例來說,如果您定義 10,000 個預設負面意圖詞組,就會對正常意圖比對造成負面影響。
您應定期檢查這些片語,因為部分片語可能原本不在代理程式的範圍內,但後來新增至意圖。
預設負面意圖會影響所有意圖比對作業。您新增至預設負面意圖的詞組可能有利於比對某個意圖,但會對比對另一個意圖造成負面影響。舉例來說,您可能會在預設負面意圖中新增「國際電話」,避免比對到國際旅遊意圖。不過,這樣一來,系統也會避免比對到國際電話意圖。
使用 API 時,您可以透過下列意圖 ID 參照這個意圖:
00000000-0000-0000-0000-000000000001
取消意圖
在對話期間,終端使用者可能想取消目前的對話主題。舉例來說,運作頁面可能會要求提供新預約的日期,但使用者已決定不建立新預約。使用者可能會說「取消」或「我不想預約新時間」。如要處理這種情況,您可以為代理程式建立一或多個取消意圖。您可以視需要為這些取消意圖命名,但一般會在名稱中加入「cancel」。您應在對話中的相關時間點,將這些取消意圖與範圍內的意圖路徑建立關聯。這些意圖路徑應轉換至適當的頁面,以處理取消作業。
取消意圖的訓練詞組應能處理一般和主題特定的取消嘗試。例如:
- 取消
- 停止
- 我改變心意了
- 不用了
- 返回
- 返回
- 我不想預約新時間
- 取消新預約
- 刪除新預約
建立意圖
如何建立意圖:
控制台
- 開啟 Dialogflow CX 控制台。
- 選擇專案。
- 選取代理程式。
- 選取「管理」分頁標籤。
- 點選 [Intents] (意圖)。
- 點選「+建立」。
- 輸入意圖資料。
- 按一下 [儲存]。
API
請參閱 Intent 類型的 create 方法。
選取意圖參照的通訊協定和版本:
| 通訊協定 | V3 | V3beta1 |
|---|---|---|
| REST | 意圖資源 | 意圖資源 |
| RPC | 意圖介面 | 意圖介面 |
| C++ | IntentsClient | 不適用 |
| C# | IntentsClient | 不適用 |
| Go | IntentsClient | 不適用 |
| Java | IntentsClient | IntentsClient |
| Node.js | IntentsClient | IntentsClient |
| PHP | 不適用 | 不適用 |
| Python | IntentsClient | IntentsClient |
| Ruby | 不適用 | 不適用 |
刪除意圖
如何刪除意圖:
控制台
- 開啟 Dialogflow CX 控制台。
- 選擇專案。
- 選取代理程式。
- 選取「管理」分頁標籤。
- 點選 [Intents] (意圖)。
- 將指標懸停在要刪除的意圖上。
- 按一下刪除 delete 按鈕。
API
請參閱 Intent 類型的 delete 方法。
選取意圖參照的通訊協定和版本:
| 通訊協定 | V3 | V3beta1 |
|---|---|---|
| REST | 意圖資源 | 意圖資源 |
| RPC | 意圖介面 | 意圖介面 |
| C++ | IntentsClient | 不適用 |
| C# | IntentsClient | 不適用 |
| Go | IntentsClient | 不適用 |
| Java | IntentsClient | IntentsClient |
| Node.js | IntentsClient | IntentsClient |
| PHP | 不適用 | 不適用 |
| Python | IntentsClient | IntentsClient |
| Ruby | 不適用 | 不適用 |
存取意圖資料
意圖資料的存取方法如下:
控制台
- 開啟 Dialogflow CX 控制台。
- 選擇專案。
- 選取代理程式。
- 選取「管理」分頁標籤。
- 點選 [Intents] (意圖)。
- 按一下要存取的意圖。
- 查看或更新意圖資料。
- 按一下「儲存」即可儲存變更。
API
請參閱 Intent 類型的 get 和 patch/update 方法。
選取意圖參照的通訊協定和版本:
| 通訊協定 | V3 | V3beta1 |
|---|---|---|
| REST | 意圖資源 | 意圖資源 |
| RPC | 意圖介面 | 意圖介面 |
| C++ | IntentsClient | 不適用 |
| C# | IntentsClient | 不適用 |
| Go | IntentsClient | 不適用 |
| Java | IntentsClient | IntentsClient |
| Node.js | IntentsClient | IntentsClient |
| PHP | 不適用 | 不適用 |
| Python | IntentsClient | IntentsClient |
| Ruby | 不適用 | 不適用 |
意圖建議
Dialogflow 會在對話期間自動分析無相符項目,並建議新意圖,或為現有意圖提供額外的訓練詞組。接受這些建議有助於避免日後發生無相符項目。
使用建議時,您可以調整「叢集大小」。叢集大小值越小,表示意圖越多,每個意圖的訓練詞組越少。叢集大小值越大,表示意圖越少,但每個意圖的訓練詞組越多。
如要接受意圖建議,請按照下列步驟操作:
控制台
- 開啟 Dialogflow CX 控制台。
- 選擇專案。
- 選取代理程式。
- 選取「管理」分頁標籤。
- 點選 [Intents] (意圖)。
- 按一下「建議」分頁標籤。
- 視需要調整「叢集大小」。
- 選取建議。
- 選取所需的訓練詞組。
- 針對目標意圖,將訓練詞組新增至現有或新的意圖。
- 按一下「儲存」或「建立新項目」即可儲存變更。接受意圖建議後,該意圖仍會保留在建議清單中。
分割意圖
您可以使用控制台將一個意圖分割為兩個意圖。您可以在介面中從來源意圖選取訓練詞組,然後移至新的意圖:
控制台
- 開啟 Dialogflow CX 控制台。
- 選擇專案。
- 選取代理程式。
- 選取「管理」分頁標籤。
- 點選 [Intents] (意圖)。
- 選取要拆分的意圖。
- 按一下「分割」。
- 從來源意圖選取意圖。
- 按一下「向右移動」。
- 提供目標意圖的其他詳細資料。
- 按一下「分割」。
比較及合併意圖
您可以使用控制台比較或合併兩個意圖,步驟如下:
控制台
- 開啟 Dialogflow CX 控制台。
- 選擇專案。
- 選取代理程式。
- 選取「管理」分頁標籤。
- 點選 [Intents] (意圖)。
- 選取要比較或合併的兩個意圖。
- 按一下 [Compare] (比較) 。
- 訓練片語會並排顯示,方便您比較。
- 如要合併這兩個意圖,請按一下「合併」。
匯出及匯入意圖
您可以匯出及匯入意圖,以便在不同代理程式之間共用。
匯出格式選項之一是 CSV,其中包含下列資料欄:
- 意圖顯示名稱
- 語言
- 詞組
每個項目都包含顯示名稱、語言和第一個訓練詞組,或是先前宣告意圖的訓練詞組。Dialogflow 會在匯出的訓練詞組中編碼註解,以便在匯入時還原註解。這種編碼的格式如下:
(annotated part)[entity, parameter]
例如:
Intent Display Name,Language,Phrase
Shirt Selection,en,I want a (green)[@sys.color, color] shirt
,,I would like a (yellow)[@sys.color, color] shirt
Store Hours,en,When are you open?
,,What are your hours?
匯入意圖時,如果現有代理程式中的意圖顯示名稱與匯入的意圖相符,可能會發生合併衝突。如要控管意圖顯示名稱相符時的合併行為,請選取下列其中一個選項:
- 取代現有意圖:匯入的意圖會覆寫現有代理程式中名稱相同的意圖。匯入時覆寫現有意圖也會覆寫現有實體。
- 重新命名並匯入為新意圖:匯入的意圖會重新命名,顯示名稱會加上「_1」。
- 與現有意圖合併:匯入意圖的訓練詞組會新增至現有意圖。如果訓練詞組相同,系統不會重複新增。
- 保留原始意圖:現有意圖維持不變,系統會忽略衝突的意圖,並匯入不衝突的意圖。
如要匯出意圖,請按照下列步驟操作:
控制台
- 開啟 Dialogflow CX 控制台。
- 選擇專案。
- 選取代理程式。
- 選取「管理」分頁標籤。
- 點選 [Intents] (意圖)。
- 選取要匯出的每個意圖。
- 按一下「匯出所選意圖」。
- 選取所需格式和目的地。
- 按一下「提交」。
如要匯入意圖,請按照下列步驟操作:
控制台
- 開啟 Dialogflow CX 控制台。
- 選擇專案。
- 選取代理程式。
- 選取「管理」分頁標籤。
- 點選 [Intents] (意圖)。
- 按一下「匯入」。
- 選取來源。
- 如有任何衝突,系統會顯示對話方塊,讓您選取合併行為。
- 按一下「提交」。
匯出及匯入訓練詞組
您可以匯出及匯入現有意圖的訓練詞組。
匯入檔案格式為 CSV,不含欄標題,且只有一欄。 例如:
"I want a pony"
"I need a pony"
"I must have a pony"
匯入訓練短語時,您可以選擇下列其中一種匯入模式:
- 匯入為新的訓練詞組:檔案中的詞組會新增至現有詞組清單。
- 取代現有訓練詞組:系統會刪除現有訓練詞組,並新增檔案中的訓練詞組。
根據預設,匯入的訓練詞組會自動加註。如要停用這項行為,請選取「略過自動註解」。
如要匯出意圖的訓練詞組,請按照下列步驟操作:
控制台
- 開啟 Dialogflow CX 控制台。
- 選擇專案。
- 選取代理程式。
- 選取「管理」分頁標籤。
- 點選 [Intents] (意圖)。
- 選取一個意圖。
- 前往「訓練詞組」部分。
- 選取要匯出的訓練詞組。
- 按一下 [匯出]。
如要匯入意圖的訓練詞組,請按照下列步驟操作:
控制台
- 開啟 Dialogflow CX 控制台。
- 選擇專案。
- 選取代理程式。
- 選取「管理」分頁標籤。
- 點選 [Intents] (意圖)。
- 選取一個意圖。
- 前往「訓練詞組」部分。
- 視需要選取「略過自動註解」。
- 按一下訓練片語清單上方的「匯入」按鈕。
- 選取檔案和匯入模式。
- 按一下「提交」。
主要和補充意圖
設計代理程式時,有時可將意圖視為主要意圖或補充意圖。
主要意圖會指出使用者與代理互動的主要目的。補充意圖會識別與主要意圖相關的使用者後續問題。這些後續問題可能會提供使用者需求的其他背景資訊,也可能是後續問題,有助於使用者釐清或深入瞭解某件事。
主要意圖通常是系統在對話中比對到的第一個意圖,而後續使用者問題則會比對到補充意圖。例如:
| 對話 | 說明 |
|---|---|
| 使用者:啟用新手機 服務專員:好的,我很樂意協助你。請提供要啟用的電話號碼末 4 碼。 |
比對出頭部意圖。 |
| 使用者:1234 服務專員:你現在可以啟用手機嗎? |
已設定參數。 |
| 使用者:所有訊息都會轉移到新手機嗎? 服務專員: ... |
比對出補充意圖。 |