知识连接器是对所定义意图的补充,可通过解析知识文档(例如常见问题解答或文章)来找出自动响应。如需配置知识连接器,您需要定义一个或多个知识库(即知识文档集合)。
您可以为代理启用知识库,让所有检测意图请求都能使用您的知识库找到自动响应。或者,您也可以在单独的检测意图请求中指定一个或多个知识库。
代理常常会同时使用知识连接器和定义的意图。知识连接器提供的响应精确率和控制比不上意图。 您应该定义意图来处理复杂的用户请求,让知识连接器处理简单的请求。
如需了解支持的语言列表,请参阅语言参考中的知识连接器列。
限制
知识连接器功能仅适用于 global
区域。
启用测试版功能
确保已启用 Beta 版功能:
- 前往 Dialogflow ES 控制台。
- 选择一个代理。
- 点击代理名称旁边的设置 settings 按钮。
- 在常规 (General) 标签页中向下滚动,并确保已启用 Beta 版功能 (Beta Features)。
- 如果您进行了更改,请点击保存 (Save)。
创建知识库和文档
按照知识库 How-to 中的说明创建知识库和文档。
知识连接器设置
您可以为代理启用或停用知识库。 对于所有未指定知识库的意图匹配请求,系统将考虑已启用的知识库。如需启用或停用知识库,请执行以下操作:
- 前往 Dialogflow ES 控制台。
- 选择一个代理。
- 点击左侧边栏菜单中的知识 (Knowledge)。
- 从列表中选择一个或多个知识库。
- 点击启用或停用。
当最终用户表达式也与意图相匹配时,您可以指定您偏好知识结果的强度:
- 向下滚动到调整知识结果首选项部分。
- 从弱(偏向意图)到强(偏向知识)调整滑块。如需了解详情,请参阅下面的检测意图响应。
配置响应
默认情况下,知识库配置为单个默认文本响应,其中填充了最匹配的知识答案。您可以更改此响应并添加富响应消息。知识回复每个知识库最多可包含三个答案,您可以在配置的响应中引用这些答案。如需添加响应,请执行以下操作:
- 在知识 (Knowledge) 页面,点击您的知识库名称。
- 向下滚动到响应 (Responses) 部分,然后根据需要添加响应:
- 定义第一个响应时,请在您希望提供问题和答案的位置使用
$Knowledge.Question[1]
和$Knowledge.Answer[1]
。 $Knowledge.Question
和$Knowledge.Answer
的索引从 1 开始,因此在添加更多响应时,请相应增加此索引的值。
- 定义第一个响应时,请在您希望提供问题和答案的位置使用
- 修改完毕后,点击保存 (Save)。
在定义响应时,应考虑以下几点:
- 如果定义的响应数量大于知识连接器响应所匹配的数量 N,则只会返回 N 条响应。
- 由于与匹配明确定义的意图相比,准确性可能较低,我们建议尽可能向用户返回三条响应。
例如:
用知识库检测意图
在执行检测意向请求时,您可以为可能的响应指定一个或多个知识库。在请求中明确提供知识库会覆盖启用和停用知识库的设置。
下面的示例展示您如何使用 Dialogflow 控制台、REST API(包括命令行)或客户端库来检测意图。如需使用 API,请调用 Sessions
类型的 detectIntent
方法。
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 "] } }
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_ID " \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID /agent/sessions/123456789:detectIntent"
PowerShell (Windows)
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID " }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID /agent/sessions/123456789:detectIntent" | Select-Object -Expand Content
APIs Explorer(浏览器)
复制请求正文并打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行。
您应该收到类似以下内容的 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 } ] } } }
如需向 Dialogflow 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
如需向 Dialogflow 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
如需向 Dialogflow 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
检测意图响应
Sessions
类型 detectIntent
方法的响应为 DetectIntentResponse
。
有多个因素会影响响应字段的填充方式。
如果定义的意图和知识库都是潜在匹配项,则系统会根据该意图和知识库的匹配置信度以及“知识结果偏好设置”(请参阅知识连接器设置)来确定选择哪个匹配项。
所选匹配项将填充在 DetectIntentResponse.queryResult
字段,而其他潜在匹配项将填充在 DetectIntentResponse.alternativeQueryResults
字段。
这两个字段都包含 QueryResult
消息。
如果知识库提供了潜在匹配项:
QueryResult.knowledgeAnswers
会填充一系列潜在知识答案,并按匹配置信度降序排列。- 如果已为知识库定义了富响应,则
QueryResult.fulfillmentMessages
会填充富响应消息。
执行检测意图请求时,知识查询可能会失败。
这种情况下,系统将选择定义的意图,因此总体检测意图请求不会失败。
您可以在 DetectIntentResponse.alternativeQueryResults[i].diagnosticInfo
字段中找到知识查询错误信息。
管理知识库
如需详细了解如何管理知识库,请参阅管理知识库。