【对话API】在多轮中实现多选一
TroubleMaker源 发布于2019-06 浏览:7251 回复:15
3
收藏
最后编辑于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\":[]}"

 

 

 

 

收藏
点赞
3
个赞
共15条回复 最后由forever_huizi回复于2022-03
#16forever_huizi回复于2022-03
#11 TroubleMaker源回复
https://ai.baidu.com/forum/topic/show/944007 可以看看这个
展开

这个是多轮的连续对话,和多选一关系不大

0
#15丸子需要樱桃06回复于2022-03

请问有实现的代码吗   小白自己怎么都实现不了   跪求TAT

0
#14152******19回复于2020-09

做选择的时候:
输入 1 ,是可以正常匹配到。 

输入 第一个
返回的是  "say": "您是要 [1]:'xxxx' 还是 [2]:'发起澄清' ?"

这是什么原因?

 

0
#13cee的春天回复于2019-11
#12 rose20135188回复
心情很糟糕,事情做了还要被埋怨。NND钱没得,还得受不完的气。

写出了我的心声

0
#12rose20135188回复于2019-09

心情很糟糕,事情做了还要被埋怨。NND钱没得,还得受不完的气。

2
#11TroubleMaker源回复于2019-08
#10 188******00回复
能发一下多轮对话的百度介绍文档吗

https://ai.baidu.com/forum/topic/show/944007 可以看看这个

0
#10188******00回复于2019-08

能发一下多轮对话的百度介绍文档吗

0
#9知道认证团回复于2019-07

很不错,学习搜藏

0
#8rose20135188回复于2019-07

多选一方案很好。

0
#7用户已被禁言回复于2019-07
#6 liguanghui2588回复
是学习功能吧

学习,记忆

0
#6liguanghui2588回复于2019-07
#3 用户已被禁言回复
度秘熟悉一个人后,就可以自动匹配最佳答案

是学习功能吧

0
#5188******00回复于2019-07

学习学习

0
#4rose20135188回复于2019-07

谢谢楼主分享,向楼主学习。

0
#3用户已被禁言回复于2019-07

度秘熟悉一个人后,就可以自动匹配最佳答案

0
#2134******14回复于2019-06

很详细,谢谢你的分享

0
TOP
切换版块