如何获取所有匹配意图?而非仅返回得分最高的单个结果
获取所有匹配Intent的方法
当然可以拿到所有匹配的Intent结果啦!从你给出的返回JSON格式来看,你应该用的是Dialogflow,下面给你两种实现方式,不管是控制台测试还是代码集成都能搞定:
1. 控制台开启Intent排名(测试用)
- 打开你的Dialogflow Agent后台,点左侧的「Settings」(设置)
- 切换到「ML Settings」(机器学习设置)标签
- 在「Confidence Threshold」(置信度阈值)下方找到「Enable intent ranking」选项,勾选上
- 保存后再去测试模拟器发请求,返回结果里就会多一个
intentRanking数组,里面就是所有匹配的Intent和它们的得分
2. API请求配置(开发集成用)
如果是通过API调用(比如Dialogflow v2 API),只要在请求里加个参数就能开启这个功能。示例请求体如下:
{ "queryInput": { "text": { "text": "my test", "languageCode": "en-US" } }, "queryParams": { "enableIntentRanking": true } }
调用成功后,返回的结果里会新增 intentRanking 字段,结构大概是这样:
"intentRanking": [ { "intent": "projects/your-agent-id/agent/intents/intent-id-1", "confidence": 0.92 }, { "intent": "projects/your-agent-id/agent/intents/intent-id-2", "confidence": 0.75 } ]
小提醒
- 只有那些置信度高于你设置的「置信度阈值」的Intent才会被放进这个排名数组里
- 如果用的是Dialogflow v1 API,对应的参数是
enable_intent_ranking: true,位置一样在请求参数里
这样调整后,你就能拿到所有符合条件的匹配Intent结果了!
内容的提问来源于stack exchange,提问作者comalex3
相关产品推荐
相关产品推荐

