最后编辑于2022-03
1、功能介绍
从多个结果中选择一个,是多轮交互中的一种常见形式,即根据用户输入,得到多个满足条件的候选资源,无法判断到底哪个是用户真正想要的,于是再进行一轮交互,让用户进行二次选择,从而得到唯一的结果,下图所示。
整个过程的交互流程如下图
第一轮交互,用户输入query,UNIT返回意图槽位及对应的action等,开发者根据“user_to:百度”进行数据查找,得到多个与『百度』相关的候选结果列表,并展示给用户。
第二轮交互,用户看到开发者展示的候选列表后,进行选择,开发者将用户输入的选择话术及候选结果列表一并发送给UNIT, UNIT将解析用户的选择结果,并将其加入到理解结果中,返回给开发者。
如果记忆开关(见接口参数说明)是开启状态,那么UNIT会记住该用户的偏好。下次该用户再说『我要去百度』(仅限同一user_id输入的相同query)时,直接将目的地解析为上次选择的结果,即百度大厦,如下图所示:
整个过程的交互流程如下图:
2、使用说明
为了实现多结果选择,开发者需要在对话API传入 本轮用户的输入+上一轮的候选列表。request.client_session字段可以存放上一轮的候选列表信息,它必须包含两个key,它们是client_results和candidate_options(值可以分别设为空串和空list),开发者需要在request.client_session.candidate_options[]加入自己的候选列表,格式如下:
{
"client_results":"",
"candidate_options":[
{
"attributes":{
"name":"百度大厦",
"addr":"上地十街",
"distance":"2.3km"
},
"slot_updates":{
"user_to":"百度大厦"
},
"remember":true
},
{
"attributes":{
"name":"百度科技园",
"addr":"西北旺10号",
"distance":"164m"
},
"slot_updates":{
"user_to":"百度科技园"
},
"remember":true
}
]
}
- candidate_options[i]. attributes表示第i个候选项的属性信息,用以同用户的选择话术进行匹配(其中的属性名由开发者自行设定,可以复用底层知识库中的属性名,也可以另起名字);这里传入的属性信息,最好同C端向用户展示的信息一致,如图2中每个候选项向用户展示了名称、地址、距离等属性,每个属性都可能被用户用来进行选择,所以最好都传入。
- candidate_options[i]. slot_updates表示第i个候选项对应的词槽信息,即假如用户选中该选项后,什么样的词槽将会被添加进对话状态中。如图2中用户选择了百度大厦后,UNIT结果中出现了『user_to:百度大厦』这个词槽。该字段由开发者自行根据候选项对应的词槽及属性确定
- candidate_options[i]. remember记忆开关,为true时,选择该选项将会被UNIT记住用户的偏好。False时,选择遗忘,下次该用户输入相同query,仍会解析为原结果。
- client_session 字段的类型是string,传入K-V结构的数据需要先转化成json字符串,然后把json字符串转成string类型,例如:"client_session":"{\"client_results\":\"\", \"candidate_options\":[]}"
请登录后评论
TOP
切换版块
这个是多轮的连续对话,和多选一关系不大
请问有实现的代码吗 小白自己怎么都实现不了 跪求TAT
做选择的时候:
输入 1 ,是可以正常匹配到。
输入 第一个
返回的是 "say": "您是要 [1]:'xxxx' 还是 [2]:'发起澄清' ?"
这是什么原因?
写出了我的心声
心情很糟糕,事情做了还要被埋怨。NND钱没得,还得受不完的气。
https://ai.baidu.com/forum/topic/show/944007 可以看看这个
能发一下多轮对话的百度介绍文档吗
很不错,学习搜藏
多选一方案很好。
学习,记忆
是学习功能吧
学习学习
谢谢楼主分享,向楼主学习。
度秘熟悉一个人后,就可以自动匹配最佳答案
很详细,谢谢你的分享