资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

闲聊对话API文档

前言

多轮闲聊的对话API和UNIT平台技能对话API、机器人对话API保持一致,字段、调用方式等均相同。

建议先了解UNIT平台技能对话API机器人对话API文档

点击查看直接调用两种对话接口的传参格式文档;

在通用对话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": "UNITTEST_WWWWW",
      "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":"UNITTEST_10000",
      "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": [
    		            "你好","你也好啊",
    		            "今天天气怎样","今天阴天",
    		            "国庆可以去哪玩?"
              ]
          }
      }
    }