闲聊API接口2.0
更新时间:2021-08-04
2.0版本已停止日常维护,建议使用3.0版本。
前言
多轮闲聊的对话API和UNIT平台技能对话API、机器人对话API保持一致,字段、调用方式等均相同。
建议先了解UNIT平台技能对话API接口2.0、机器人对话API接口2.0。
点击查看直接调用两种对话接口的传参格式文档;
在通用对话API的基础上,做了闲聊对话的定制化处理:
- 需要在SYS_CHAT_HIST参数中进行对话信息维护。
对话信息维护
技能
- 开发者自己维护对话历史或需要修改对话历史,将实际对话的一问一答设置在session内SYS_CHAT_HIST,最多传递7轮。
-
SYS_CHAT_HIST中传入的最后一个问句需要与query一致。比如:
- 第一轮,query是“你好”,SYS_CHAT_HIST传入“你好”;
- 机器人回复“你也好啊”
- 第二轮,query是“今天天气怎样”,SYS_CHAT_HIST传入的是“你好”“你也好啊”“今天天气怎样”这三条数据。
- 格式:
"bot_session": "{\"dialog_state\":{\"contexts\":{\"SYS_CHAT_HIST\":[\"问句1\",\"回复1\",\"问句2\",\"回复2\",\"问句3\"],\"SYS_PRESUMED_HIST\":[]}}},
- 示例:
"bot_session": "{\"dialog_state\":{\"contexts\":{\"SYS_CHAT_HIST\":[\"你好\",\"你也好啊\",\"今天天气怎样\",\"今天阴天\",\"国庆可以去哪玩?\"], \"SYS_PRESUMED_HIST\":[]}}},
- 开发者也可以不维护对话历史,使用系统预测的历史,每轮对话传递session_id或者session即可。需要注意,当系统拿到多个答复时,会默认选择第一条,如果开发者在多个结果中选择了其他内容进行对话回复,可能因此导致预测不准确,影响对话效果;示例:
"bot_session": "{\"session_id\":\"session-1597140459420-569536918-8013-3\"}"
-
完整的示例代码:
{ "bot_id": "1726", "bot_session": "{\"dialog_state\":{\"contexts\":{\"SYS_CHAT_HIST\":[\"你好\",\"你也好啊\",\"今天天气怎样\",\"今天阴天\",\"国庆可以去哪玩?\"],\"SYS_PRESUMED_HIST\":[]}}}", "log_id": "unit_logid1", "request": { "bernard_level": 1, "client_session": "{\"client_results\":\"\", \"candidate_options\":[]}", "query": "国庆可以去哪玩?", "query_info": { "asr_candidates": [], "source": "KEYBOARD", "type": "TEXT" }, "updates": "", "user_id": "1111" }, "version": "2.0" }
机器人
- 传递session_id,目的是维护机器人下非闲聊的其他技能的多轮信息。
- 如果自己维护对话历史,将实际对话的一问一答设置在dialog_state.context.SYS_CHAT_HIST,最多传递7轮。
- SYS_CHAT_HIST中传入的最后一个问句需要与query一致。比如:第一轮,query是“你好”,SYS_CHAT_HIST传入“你好”;第二轮,query是“今天天气怎样”,SYS_CHAT_HIST传入的是“你好”“你也好啊”“今天天气怎样”这三条数据。
-
格式:
"dialog_state": { "contexts": { "SYS_REMEMBERED_SKILLS": [], "SYS_PRESUMED_HIST": [], "SYS_CHAT_HIST": [ "问句1", "回复1", "问句2", "回复2", "问句3" ] } }
-
示例:
"dialog_state": { "contexts": { "SYS_REMEMBERED_SKILLS": [], "SYS_PRESUMED_HIST": [], "SYS_CHAT_HIST": [ "你好", "你也好啊", "今天天气怎样", "今天阴天", "国庆可以去哪玩?" ] } }
- 开发者也可以不维护对话历史,使用系统预测的历史;需要开发者每次访问对话API时,将上一轮reponse里面的dialog_state.context.SYS_PRESUMED_HIST设置到request.dialog_state. context.SYS_PRESUMED_HIST中。需要注意,当系统拿到多个答复时,会默认选择第一条,如果开发者在多个结果中选择了其他内容进行对话回复,可能因此导致预测不准确,影响对话效果;
-
完整的示例代码:
{ "log_id":"unit_logid1", "version":"2.0", "service_id":"S10000", "session_id":"", "request":{ "query":"国庆可以去哪玩?", "user_id":"88888" }, "dialog_state":{ "contexts":{ "SYS_REMEMBERED_SKILLS":[], "SYS_PRESUMED_HIST": [], "SYS_CHAT_HIST": [ "你好","你也好啊", "今天天气怎样","今天阴天", "国庆可以去哪玩?" ] } } }