知识连接器是对所定义意图的补充,可通过解析知识文档(例如常见问题解答或文章)来找出自动响应。如需配置知识连接器,您需要定义一个或多个知识库(即知识文档集合)。
您可以为代理启用知识库,让所有检测意图请求都能使用您的知识库找到自动响应。或者,您也可以在单独的检测意图请求中指定一个或多个知识库。
代理常常会同时使用知识连接器和定义的意图。知识连接器提供的响应精确率和控制比不上意图。 您应该定义意图来处理复杂的用户请求,让知识连接器处理简单的请求。
如需了解支持的语言列表,请参阅语言参考中的知识连接器列。
限制
知识连接器功能仅适用于 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
方法。
网页界面
您可以通过 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
字段中找到知识查询错误信息。
管理知识库
如需详细了解如何管理知识库,请参阅管理知识库。