知識連接器可與已定義的意圖彼此互補。知識連接器可剖析知識文件 (例如常見問題或文章) 來找出自動化回應。如要設定知識連接器,您必須定義一或多個知識庫 (即知識文件集合)。
您可以為代理程式啟用知識庫,讓所有偵測意圖要求可以使用您的知識庫找到自動化回應。您也可以在個人的偵測意圖要求中指定一或多個知識庫。
代理程式常常會同時使用知識連接器和已定義的意圖。相較於意圖,知識連接器的回應精確度較低,也較無法控制。如果是複雜的使用者要求,您應該要定義意圖來處理;如果是簡單的要求,則應讓知識連接器來處理。
如需支援的語言清單,請參閱語言參考資料中的「知識連接器」欄。
限制
知識連結器功能僅適用於global
區域。
啟用 Beta 版功能
確認已啟用 Beta 版功能:
- 前往 Dialogflow ES 主控台。
- 選取代理程式。
- 按一下代理程式名稱旁邊的設定 settings 按鈕。
- 在「General」分頁中向下捲動,並確保「Beta Features」已設為啟用。
- 如果您變更了設定,請按一下「儲存」。
建立知識庫和文件
按照知識庫操作說明中的指示建立知識庫和文件。
知識連接器的設定
您可以為代理程式啟用或停用知識庫。 如果意圖比對要求未指定知識庫,系統會考慮使用已啟用的知識庫。如要啟用或停用知識庫,請按照下列步驟操作:
- 前往 Dialogflow ES 主控台。
- 選取代理程式。
- 按一下左側欄選單中的「知識」。
- 從清單中選取一或多個知識庫。
- 按一下「啟用」或「停用」。
如果使用者表達內容也符合意圖,您可以指定知識結果的偏好程度:
- 向下捲動至「調整知識結果偏好設定」部分。
- 調整滑桿,從較弱 (偏好意圖) 到較強 (偏好知識)。詳情請參閱下方的「偵測意圖回應」。
設定回覆
根據預設,知識庫會設定單一預設文字回覆,並填入最相符的知識答案。你可以變更這項回覆,並新增豐富的回覆訊息。每個知識庫最多可提供三個答案,您可以在設定的回覆中參考這些答案。如要新增回覆:
- 在「知識」頁面中,按一下知識庫名稱。
- 向下捲動至「Responses」(回應) 區段,然後新增所需回應:
- 定義第一個回應時,請將
$Knowledge.Question[1]
和$Knowledge.Answer[1]
用於您想提供問題和答案的位置。 $Knowledge.Question
和$Knowledge.Answer
的索引是從 1 開始,因此當您新增其他回應時,請一併增加這項索引。
- 定義第一個回應時,請將
- 編輯完成後,請按一下「儲存」。
定義回應時應考慮下列幾點:
- 如果知識連接器回應相符項目的數量為 N,而定義的回應數量超過這個值,系統只會傳回 N 個回應。
- 相較於比對已明確定義的意圖,這種做法的準確率可能較低,因此建議您在可能的情況下,向使用者傳回三個回應。
範例:
透過知識庫偵測意圖
提出偵測意圖要求時,您可以指定一或多個知識庫,用於提供可能的回應。在要求中明確提供知識庫,會覆寫已啟用和已停用知識庫的設定。
以下範例說明如何使用 Dialogflow 主控台、REST API (包括指令列) 或用戶端程式庫來偵測意圖。如要使用 API,請在 Sessions
類型上呼叫 detectIntent
方法。
網路使用者介面
您可以透過 Dialogflow 模擬工具與代理程式互動及接收知識連接器回應,方法如下:REST
在Sessions
類型上呼叫 detectIntent
方法,然後在 queryParams
欄位中指定知識庫。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 GCP 專案 ID
- KNOWLEDGE_BASE_ID:您的知識庫 ID
HTTP 方法和網址:
POST https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/agent/sessions/123456789:detectIntent
JSON 要求主體:
{ "queryInput": { "text": { "text": "How do I sign up?", "languageCode": "en-US" } }, "queryParams": { "knowledgeBaseNames": ["projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID"] } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ ... "queryResult": { "queryText": "How do I sign up?", "parameters": {}, "allRequiredParamsPresent": true, "fulfillmentText": "Sign up for Cloud Storage by turning on the Cloud Storage service in the Google Cloud Platform Console.", "intent": { "name": "projects/my-gcp-project/agent/intents/487c7242-a769-408a-a339-47b95e10dac4", "displayName": "Knowledge.KnowledgeBase.MzkzNTAyMDE3NDQxNDk3MDg4MA" }, "intentDetectionConfidence": 0.99371547, "languageCode": "en-us", "knowledgeAnswers": { "answers": [ { "answer": "Sign up for Cloud Storage by turning on the Cloud Storage service in the Google Cloud Platform Console.", "matchConfidenceLevel": "HIGH", "matchConfidence": 0.99371547 }, { "answer": "Certain types of content are not allowed on this service; please refer to the Terms of Services and Platform Policies for details. If you believe a piece of content is in violation of our policies, report it here (select See more products, then Google Cloud Storage and Cloud Bigtable).", "matchConfidenceLevel": "LOW", "matchConfidence": 0.0012244871 }, { "answer": "From the Cloud Storage documentation click \"Send feedback\" near the top right of the page. This will open a feedback form. Your comments will be reviewed by the Cloud Storage team.", "matchConfidenceLevel": "LOW", "matchConfidence": 0.0011537358 } ] } } }
Java
如要向 Dialogflow 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要向 Dialogflow 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要向 Dialogflow 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
偵測意圖回應
Sessions
類型 detectIntent
方法的回應是 DetectIntentResponse
。有多種因素會影響回應欄位的填入方式。
如果已定義的意圖和知識庫皆為可能的相符項目,系統會依各個項目的比對信心值和「知識結果偏好設定」(請參閱知識連接器的設定一節),判斷哪個項目為指定相符項目。DetectIntentResponse.queryResult
欄位會填入指定相符項目,DetectIntentResponse.alternativeQueryResults
欄位則會填入其他可能的相符項目。這兩個欄位均包含 QueryResult
訊息。
如果知識庫提供可能的相符項目:
QueryResult.knowledgeAnswers
會填入一連串可能的知識答案,依比對信心值大至小的順序排列。- 如果知識庫已定義複合式回應,
QueryResult.fulfillmentMessages
會填入複合式回應訊息。
執行偵測意圖要求時,知識查詢可能會失敗。在這種情況下,系統會選取已定義的意圖,這樣整體偵測意圖要求就不會失敗。您可以在 DetectIntentResponse.alternativeQueryResults[i].diagnosticInfo
欄位中查看知識查詢錯誤資訊。
管理知識庫
如要進一步瞭解如何管理知識庫,請參閱管理知識庫。