对话接口使用讲解及常见问题处理
半醉半醒半疯Z 发布于2020-10 浏览:4654 回复:3
0
收藏
最后编辑于2022-04

相关文档

技能对话API文档:https://ai.baidu.com/ai-doc/UNIT/Zk38h1vl4
技能多轮对话传参格式:https://ai.baidu.com/forum/topic/show/870054
机器人对话API文档:https://ai.baidu.com/ai-doc/UNIT/qk38gggxg
机器人多轮对话传参格式:https://ai.baidu.com/forum/topic/show/941936
postman进行接口调用方法:https://ai.baidu.com/forum/topic/show/944007

参数介绍

未区分两种接口的请求和返回参数,理解时注意区分。

log_id:自定义的字符串,最好每条请求的log_id都不一样。

user_id:自定义的字符串,开发者为用户分配的唯一id,用来区分不同的用户。

asr_candidates:如果是调用的百度语音的接口,语音识别结果可能有多个候选,按照格式传入之后,UNIT会参考该候选信息做综合判断处理。但需要说明的是,UNIT识别的是文本,最好直接传入确切的文本数据作为query。

SYS_REMEMBERED_SKILLS:传入机器人下需要进行多轮对话的技能id。

response_list:机器人返回参数,返回机器人下每个技能的解析结果,与技能对话接口的返回一致。

action_list:动作信息,返回了答复信息和当前处于什么状态,比如clarify是在进行词槽澄清,satisfy是给出了答复结果。

schema:语句的识别结果。对话意图可从这里获取意图、词槽信息;问答技能可获取问答对ID、答案信息。

candidates:识别结果候选结果,当query识别到多个结果时就有多个候选。

qu_res_chosen:最终识别结果,一般为多个候选的第一个。

lexical_analysis:query的分词结果,对话技能下可查看分词结果识别到了哪个系统词典和词槽。

 

常见接口调用报错原因

错误码文档:https://ai.baidu.com/ai-doc/UNIT/Zk38h1vl4#%E9%94%99%E8%AF%AF%E4%BF%A1%E6%81%AF

报错:无权访问数据
原因:1、创建的百度云应用未包含unit接口。2、unit对应的百度账号需要与创建应用获取token的百度账号不一致(检查百度云平台和UNIT平台右上角圆圈内的用户名首字符是否一致)。

报错:token相关
原因:一般都是token过期了,重新获取即可。

报错:The request content type is illegal
原因:请求数据不是utf-8编码,或者运行环境的编码问题

报错:未找到相应技能
原因:1、使用了生产环境URL。2、接口调用的URL与请求参数不对应。3、技能模型不是运行中。4、创建的百度云应用未包含unit接口。5、unit对应的百度账号需要与创建应用获取token的百度账号不一致(检查百度云平台和UNIT平台右上角圆圈内的用户名首字符是否一致)。

报错:Parameter[skill_id] invalid or missing
原因:此类报错一般是把对话接口URL用成了技能的,所以报错技能id缺失。

报错:技能请求失败,请检查机器人内的技能是否都处在可用状态
原因:某个技能达到了对话次数限制,可切换为有对话次数的研发环境部署模型再对话。

报错:Parameter[skill_ids中存在非法id] invalid or missing
原因:1、skill_ids中传入的技能id有技能模型处于模型部署中或已停用。2、使用了生产环境URL

报错:Please check the interface and query encoding !
原因:query包含异常内容,比如换行、tab、表情、特殊字符等,query需要是正常的汉字、字母、数字和常见符号。


对话接口常见问题

1、技能和机器人对话接口有什么区别?
答:技能对话接口只能一次调用一个技能,机器人对话接口可同时调用多个技能。根据实际情况选择需要的接口。

2、对话接口调用传参格式是怎样的?
答:按照示例代码格式传入即可,其他参数可以不了解。json格式请求参数参考上面的文档链接。

3、接口调用达到对话次数怎么办?
答:将达到对话次数的技能模型切换到其他有对话次数的研发环境部署。

4、接口怎么与其他系统对接?
答:UNIT理论上可以接入任何平台,只要对方可以进行对话接口调用即可。在其他系统中调用UNIT对话接口,将UNIT的输出按照需要的格式展示即可。

5、请求参数太多,看不懂怎么办?
答:很多参数不需要理解怎么使用,直接使用示例代码,只修改必须的参数内容接口,比如技能id、机器人id、query、logid和user_id等几个即可。

6、返回数据太多,怎么获取想要的?
答:一般只需要获取action_list下的say和schema下的意图词槽信息,如有特殊需要,根据返回参数获取所需。

7、怎么调用多个技能?
答:创建技能分发机器人,添加需要一次性调用的技能,然后调用该机器人即可。

8、报错qps超限怎么办?
答:研发环境qps为1,表示每秒内最多一个请求,控制请求次数即可。生产环境以购买的qps为准。

9、接口调用与平台对话,回复不一致怎么解决?
答:1、检查对话反问频率(bernard_level)是否一致。2、检查query是否完全一致。3、检查输入的query是否是同等条件下,比如同样的首轮对话或者完全一致的多轮对话。4、检查交互学习日志是否存在相关记录,需要调大时间范围。

10、怎么实现语音对话?
答:UNIT的输入和输出都是文本,无法直接识别语音。如果有需要,可以调用语音识别和语音合成的接口与UNIT对接。

收藏
点赞
0
个赞
共3条回复 最后由189******97回复于2022-04
#4189******97回复于2022-04

9m 文档对于无基础的人来说 就像给源码不加注释 看不懂哇 也不会融入自己的代码.....

1
#3wangwei8638回复于2021-01

如何调用机器人呢

0
#2半醉半醒半疯Z回复于2020-10

欢迎大家讨论

0
TOP
切换版块