- Dialogflow 教程
- Dialogflow - 首頁
- Dialogflow - 概述
- Dialogflow - 入門
- Dialogflow - 元件
- Dialogflow - 建立第一個 Agent
- Dialogflow - 建立引數
- Dialogflow - 建立自定義實體
- Dialogflow - 上下文
- Dialogflow - 建立自定義意圖
- Dialogflow - 訓練
- Dialogflow - 意圖匹配
- Dialogflow - 整合
- Dialogflow - 構建聊天機器人
- Dialogflow - 知識庫
- Dialogflow 有用資源
- Dialogflow - 有用資源
- Dialogflow - 討論
Dialogflow - 元件
Dialogflow 是 Google 提供的一項技術,用於構建聊天機器人或虛擬助手。它使更容易理解他人的話語並做出正確的回應。組合這些元件可以建立智慧聊天機器人,能夠與使用者進行自然對話。
Dialogflow 的元件
Agent
意圖 (Intents)
實體 (Entities)
喚醒詞 (Invocation)
Fulfillment 請求
響應 (Response)
上下文 (Context)
使用者說 (User says)
訓練短語 (Training Phrases)
現在讓我們詳細討論一下下面部分的每個要點:
Agent
Dialogflow Agent 是虛擬代理,可以同時處理與終端使用者的許多對話。它是一個自然語言解釋模組,可以識別口語中的差異。Dialogflow 將對話期間終端使用者的文字或音訊轉換為您的服務和應用程式可以理解的結構化資料。您可以設計和構建 Dialogflow Agent 來處理系統所需的多種對話型別。
Dialogflow Agent 類似於現實世界的呼叫中心座席。它們都接收關於如何處理常見爭議案例的指令,這些指令不需要深入。
Agent 也充當資料的頂級容器和設定。
要檢視哪些語言、機器學習和其他偏好會影響您的 Agent 的行為,請檢視 Agent 設定。
嘗試在整個對話過程中對終端使用者的意圖進行分類。
使用實體識別並從使用者說的話中提取特定資訊。
能夠讀取書面內容(如常見問題解答)並識別預設的回覆。
可以整合在硬體或服務上執行的程式,這些程式直接處理終端使用者的互動(例如 Google 助理)。
使用整合連線您的服務時,請使用 Fulfillment。
預構建 Agent
Dialogflow 提供了一組稱為預構建 Agent 的 Agent,用於常見的用例。您可以使用這些 Agent 開始關於送貨、酒店預訂、路線指引和其他事物的對話。
預構建 Agent 為某些用例提供了意圖和實體,但您仍然需要提供意圖回覆。反應通常取決於您的特定情況或需要滿足的需求。
Agent 的侷限性
以下限制適用:
只有適用於全球地區的預構建 Agent。
預構建 Agent 支援所有 Dialogflow 語言的一個子集。瀏覽預構建 Agent 時,只顯示支援活動 Agent 預設語言的預構建 Agent。
匯入預構建 Agent
以下是將預構建 Agent 匯入到您的專案中的方法:
轉到 Dialogflow ES 控制檯。
從左側的側邊欄選單中選擇“預構建 Agent”。
將滑鼠游標指向現有 Agent。
點選“檢視詳情”。
選擇“匯入”。
從活動 GCP 專案中選擇,或啟動一個全新的專案。
選擇“從模板建立 Agent”。
多語言 Agent
Dialogflow 支援多種語言。建立 Agent 時選擇的語言將成為預設語言,您可以新增更多語言。語言分為兩類:
根語言:根語言是沒有位置規範的語言,例如英語 (en)。
特定地區語言:特定地區語言包括美式英語 (en-US),它將某個地區識別為特定的國家或地區。
意圖 (Intents)
意圖對對話單輪中終端使用者的意圖進行分類。您為每個 Agent 描述許多意圖,所有意圖的集合可以管理整個對話。Dialogflow 將 Agent 的最佳意圖與終端使用者的書面或口語語言(也稱為終端使用者表達)進行匹配。匹配意圖也稱為意圖分類。
建立一個可以識別和響應使用者關於天氣查詢的天氣 Agent 是一個典型的用例。如果問題是關於天氣預報,您很可能會指定一個目標。Dialogflow 會將預報意圖與終端使用者的表達(例如“天氣預報怎麼樣?”)進行匹配。您還可以指定是否要從終端使用者表達中提取特定資訊,例如預期的天氣預報的位置或時間。此提取的資料對於您的系統向終端使用者提供天氣查詢是必需的。
基本意圖包括以下專案:
訓練短語:終端使用者可以使用訓練短語作為代表性術語。如果這些句子中的任何一個聽起來像終端使用者會使用的表達,那麼 Dialogflow 會匹配意圖。不需要識別所有可能的情況,因為 Dialogflow 的內建機器學習會擴充套件以適應列表中更相關的短語。
操作:我們可以向 Agent 提供操作。當我們匹配意圖時,Dialogflow 會向系統提供操作。這些操作可用於啟動不同的預定義系統操作。
引數:如果您想在執行時匹配意圖,則 Dialogflow 會將終端使用者表達作為引數接受。實體型別或一種精確描述如何檢索資料並將其分配給每個引數的型別。設定與終端使用者的原始輸入不同。“引數”一詞描述的是用於提供響應或執行邏輯的有組織的資料。
響應:您可以向用戶提供音訊、視覺或文字響應。這些具有響應終端使用者查詢、從他們那裡獲取更多資料和結束對話的能力。
下圖顯示了意圖匹配的基本流程,以及它如何響應終端使用者。
操作 (Actions)
操作欄位是一個簡單的實用程式功能,可以改進服務的邏輯。構建 Agent 時,您可以輸入您認為有用的任何文字。
在執行時匹配意圖時,Dialogflow 會將操作值提供給您的 Fulfillment webhook 請求或 API 互動響應。它可以用於在您的服務中啟動某些邏輯。
引數 (Parameters)
當意圖匹配時,Dialogflow 會將從終端使用者表達中收集的值作為引數返回。與每個引數相關的實體型別指定了提取資料的確切方式。引數是有組織的資料,與非結構化的終端使用者輸入相比,可以輕鬆地用於執行邏輯或生成回覆。
透過標記訓練短語的特定部分並設定關聯的引數,您可以在建立 Agent 時管理資料收集過程。
響應 (Responses)
當意圖匹配時,可以透過意圖中的整合響應處理程式給出響應。此功能僅允許靜態響應,但您可以使用引數引用使這些響應更具動態性。這對於呈現終端使用者提供的資料很有幫助。例如,要回答查詢,可以說:“好的,我為您預訂了 10 月 20 日的房間”。
預設意圖
建立 Agent 時,會自動設定兩個意圖:
預設問候意圖:一旦終端使用者開始與您的代表對話,就會匹配。
預設回退意圖:當您的 Agent 無法將終端使用者的輸入與其他意圖匹配時,它將匹配預設回退意圖。
實體 (Entities)
實體定義為 Agent 用於回答使用者問題的知識庫。有許多不同型別的系統實體,例如天氣、位置、日期等等。
實體幫助 Dialogflow 理解使用者陳述的特定部分。例如,嘗試句子“新德里的天氣怎麼樣?”“新德里”就是一個實體(一個位置)。
實體選項
許多實體引數可以改變資料提取和實體匹配的行為。這些引數是為系統實體預先配置的,因此您無法更改它們。但是您可以修改它們以適合您自己的自定義實體。根據您選擇的設定,您可以建立多種型別的實體
對映實體:對於每個參考值,對映實體都提供從同義詞到參考值的對映。每個對映實體項都包含同義詞列表和單個參考值。
列表實體:列表實體提供單個值實體項的列表。它們具有參考值和同義詞。
複合實體:複合實體是一種特定型別的列表實體。雖然還可以包含更多實體型別,但列表實體的實體條目通常包含簡單的單詞或句子。對可以在另一種實體型別中找到的一種實體型別的引用稱為別名。當列表物件具有對其他實體型別的同義詞時,它稱為複合實體。
正則表示式實體:您可以提供正則表示式以使用正則表示式實體進行匹配。
此外,還有兩個選項可以修改實體匹配的行為,但不會指定實體型別
自動擴充套件
模糊匹配
Fulfillment 請求
當匹配意圖時,您的 Agent 的預設響應是靜態的。如果您使用的是其中一個整合選項,則可以使用 Fulfillment 提供更動態的答案。當為 Fulfillment 啟用意圖時,Dialogflow 會呼叫您在響應意圖時指定的 serviço。例如,如果終端使用者想預訂週五的理髮,您的服務可以在您的資料庫中查詢資訊,並透過週五的可用性回覆他們。
為了允許執行操作,每個意圖都設定了一個選項。當某個意圖需要動態響應或系統執行某種操作時,應允許意圖執行操作。如果匹配的意圖未啟用執行操作,Dialogflow 將使用您為該意圖提供的靜態響應。
當啟用執行操作的意圖匹配時,Dialogflow 會透過傳送包含匹配意圖詳細資訊的請求來通知您的 Webhook 服務。您的系統能夠執行任何必要的任務,並向 Dialogflow 提供有關下一步操作的指令。只有在啟用執行操作時您的 Webhook 服務失敗的情況下,才會使用您為該意圖提供的靜態響應。執行操作流程圖如下所示。
以下是使用者與 Dialogflow 智慧體互動時的流程:
終端使用者說出或輸入語句。
Dialogflow 提取引數並將終端使用者的表達評估為一個意圖。
您的 Webhook 服務從 Dialogflow 接收 Webhook 請求訊息。此訊息包含有關操作、引數、為意圖定義的響應和匹配意圖的詳細資訊。
必要時,您的服務將執行命令,例如資料庫查詢或外部 API 呼叫。
Dialogflow 從您的服務接收 Webhook 響應訊息。此訊息中提供了要傳遞給終端使用者的回覆。
終端使用者從 Dialogflow 接收響應。
終端使用者可以看到或聽到答案。
上下文 (Context)
Dialogflow 的上下文功能很像聊天機器人的記憶。它幫助機器人記住使用者在對話期間先前做出的評論。這提高了聊天機器人的理解能力,並使其能夠根據之前的語句給出精確的答案。
例如,如果使用者說:“我想預訂航班”,聊天機器人會跟蹤它。當用戶稍後說:“飛往新德里”時,機器人就會明白他們指的是安排前往新德里的旅行。
有一些設定可以實現更自然的對話。下圖顯示了銀行代理如何使用上下文。
這是一個關於 Dialogflow 如何在對話中使用上下文的示例:
Dialogflow 努力將使用者用來詢問其支票賬戶資訊的詞語與正確的意圖匹配。如果兩者匹配,系統將進入“支票”上下文。
然後,代理直接詢問使用者他們想知道其支票賬戶的哪些資訊。如果使用者說類似“我的餘額”之類的話,Dialogflow 提供的“支票”上下文仍然處於活動狀態,並將使用者的響應與“支票餘額”意圖匹配。
同樣,如果使用者在“儲蓄”上下文處於活動狀態時詢問其儲蓄賬戶,則可以使用“SavingsBalance”意圖。
系統確認所需資料庫後,代理將回復支票賬戶餘額。