更新时间:2024-07-02 GMT+08:00
分享

单轮问答(即将下线)

功能介绍

问答服务的输入为用户提问,输出是与输入最匹配的Top N(默认为top5)个知识点,知识点按得分从高到低排序。该接口即将下线,请优先使用开启会话处理会话关闭会话接口。

返回知识点如果含有答案字段(answer),则表示返回匹配成功结果,如果没有答案字段,则表示推荐结果。

URI

POST https://{endpoint}/v1/{project_id}/qabots/{qabot_id}/requests

表1 路径参数

参数

是否必选

参数类型

描述

endpoint

String

终端节点,即调用API的请求地址。

不同服务不同区域的endpoint不同,您可以从终端节点中获取。

例如,CBS服务在“华北-北京四”区域的“endpoint”“cbs-ext.cn-north-4.myhuaweicloud.com”

project_id

String

项目ID,用于资源隔离。请参见获取项目ID

qabot_id

String

qabot编号,UUID格式,如:303a0a00-c88a-43e3-aa2f-d5b8b9832b02。

进入问答机器人的Console界面,在“机器人名称/ID”列显示对应的qabot_id。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。

用于获取操作API的权限。获取Token接口响应消息头中X-Subject-Token的值即为Token。

Content-Type

String

消息体的类型(格式),参数值为“application/json”。

表3 请求Body参数

参数

是否必选

参数类型

说明

session_id

String

会话ID,由任意字符串组成,由用户自定义产生,用来区分不同的会话。

具体获取方式请参见开启会话章节。

user_id

String

用户ID,用来区分唯一用户信息。

question

String

用户问题。

extends

Extends object

扩展参数项。

threshold_enable

Boolean

true:启动内部阈值,返回经过阈值处理之后的答案。

false:不启用内部阈值,返回原答案。

chat_enable

Boolean

默认true

true:使用内部闲聊语料进行兜底。

false:不使用闲聊兜底。

operate_type

Integer

调用接口时候传入,用以标记的问答的行为,默认为0,最终会展示在问答日志里。

  • 0 用户输入
  • 1 单击热点问题
  • 3 单击推荐问题
  • 4 单击问题提示
表4 Extends

参数

是否必选

参数类型

描述

domains

Array of strings

领域列表,多个领域用分号隔开。如果设置了领域且领域不为空,就从这些领域中匹配答案,否则就从该用户的全部知识库匹配答案。

当前最多支持10个领域。

top

Integer

返回答案数量,默认为5,取值范围1~10。

响应消息

状态码: 200
表5 响应Body参数

参数

参数类型

描述

request_id

String

请求ID。

调用失败时无此字段。

question

String

问题。

调用失败时无此字段。

answers

Array of Answers objects

最相似的问题集。调用失败时无此字段。

extends

Extends object

扩展参数项。调用失败时无此字段。

表6 Answers

参数

参数类型

描述

qa_pair_id

String

问答对ID。

st_question

String

标准问题。

ex_questions

Array of ExQuestions objects

扩展问。

answer

String

答案。

score

Float

相似度得分,精确到小数点后3位。

domain

String

问题类别。

表7 ExQuestions

参数

参数类型

描述

content

String

扩展问题。

表8 Extends

参数

是否必选

参数类型

描述

domains

Array of strings

领域列表,多个领域用分号隔开。如果设置了领域且领域不为空,就从这些领域中匹配答案,否则就从该用户的全部知识库匹配答案。

当前最多支持10个领域。

top

Integer

返回答案数量,默认为5,取值范围1~10。

状态码: 400

表9 响应Body参数

参数

参数类型

描述

error_code

String

调用失败时的错误码。 调用成功时无此字段。

error_msg

String

调用失败时的错误信息。 调用成功时无此字段。

请求示例

输入问题“桌面云无法登录”,返回最匹配的top5个知识点
POST https://{endpoint}/v1/1604d8170cd84440a81281e5a3a04f8b/qabots/303a0a00-c88a-43e3-aa2f-d5b8b9832b02/requests

Request Header:
    Content-Type: application/json
    X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...

Request Body:
{
    "user_id": "z00123456",
    "session_id": "xxxxxxxxxxxxxxxxxx",
    "operate_type":3,      
    "question": "桌面云无法登录",
    "extends":{
	"domains":["桌面云"],
	"top":5
    },
    "threshold_enable":false,
    "chat_enable":true
}

响应示例

状态码:200

成功响应示例

  • 关闭内置阈值处理(设置threshold_enable = false),按top个数返回结果数量。
    { 
        "request_id": "303a0a00-c88a",
        "question": "桌面云打不开",
        "answers": [
            {
                "qa_pair_id":"123",
                "st_question":"桌面云打开不了",
                "answer":"用户账号不对",
                "score":0.952,
                "domain":"桌面云"
         },
         {
                "qa_pair_id":"123",
                "st_question":"桌面云打开不了了",
                "answer":"用户账号不对",        
                "score":0.901,
                "domain":"桌面云"
            },
            {
                "qa_pair_id":"123",
                "st_question":"桌面云是啥",
                "answer":"桌面云是可以远程办公的系统",      
                "score":0.352,
                "domain":"桌面云"
            },
         {
                "qa_pair_id":"123",
                "st_question":"电脑桌面打不开",
                "answer":"请检查下显示器是否开启",    
                "score":0.352,
                "domain":"桌面云"
            },
        ]
    }
  • 开启内部阈值处理
    表10 内部阈值处理

    处理条件

    结果

    备注

    分值>0.85

    返回分值与最高分差距在0.05范围内所有命中语料。

    如果QaPairanswers对象的answer不为空,则为命中语料,如果answer为空,则为推荐语料。

    0.70<分值<0.85

    如果存在这个区间的语料,返回最高分值处于这个区间的命中语料。如果不存在这个区间的语料,则返回推荐语料。

    0.55<分值<0.70

    返回推荐语料。

    分值<0.55

    不返回语料。

    • 示例1
      { 
          "request_id": "303a0a00-c88a",
          "question": "桌面云打不开",
          "answers": [
              {
                  "qa_pair_id":"123",
                  "st_question":"桌面云打开不了",
                  "ex_questions": [
                      {
                          "content": "桌面云"
                      }
                  ],
                  "answer":"用户账号不对",
                  "top_score_question":"桌面云打开不了",
                  "score":0.952,
                  "domain":"桌面云"
              },
            {
                  "qa_pair_id":"123",
                  "st_question":"桌面云打开",
                  "ex_questions": [
                      {
                          "content": "桌面"
                      }
                  ],
                  "answer":"打开桌面云",
                  "top_score_question":"桌面云打开",
                  "score":0.912,
                  "domain":"桌面云"
              }
          ]
      }
    • 示例2
      { 
          "request_id": "303a0a00-c88a",
          "question": "桌面云打不开",
          "answers": [
              {
                  "qa_pair_id":"123",
                  "st_question":"桌面云打开不了",
                  "top_score_question":"桌面云打开不了",
                  "answer":"用户账号不对",
                  "score":0.752,
                  "domain":"桌面云"
              }
          {
                  "qa_pair_id":"123",
                  "st_question":"桌面云打开不了了",     
                  "score":0.70,
                  "domain":"桌面云"
              },
              {
                  "qa_pair_id":"123",
                  "st_question":"桌面云是啥",    
                  "score":0.54,
                  "domain":"桌面云"
              }
          ]
      }
    • 示例3
      { 
          "request_id": "303a0a00-c88a",
          "question": "桌面云打不开",
          "answers": [
          {
                  "qa_pair_id":"123",
                  "st_question":"桌面云打开不了了",     
                  "score":0.291,
                  "domain":"桌面云"
              },
              {
                  "qa_pair_id":"123",
                  "st_question":"桌面云是啥",    
                  "score":0.252,
                  "domain":"桌面云"
              }
          ]
      }
  • 闲聊兜底或无答案回复
    { 
        "request_id": "303a0a00-c88a",
        "question": "你好",
        "answers": [
        {
                "answer":"您好,请问有什么可以帮您的吗?"
    
            }
        ]
    }

状态码:400

失败响应示例

{
  "error_code": "CBS.0022",
  "error_msg": "session_id can not be null"
}

状态码

状态码请参见状态码

错误码

错误码请参见错误码

相关文档