wukong-robot--unit机器人

wukong-robot--unit机器人

前言

刚开始使用这个开源项目的时候,发现这个都有一些自动回复的内容,区分不了什么是UNIT和聊天机器人,后面就上网自己建立了一个UNIT百度的机器人,知道了一些大概。

UNIT机器人

创建过程

这里因为百度提供的服务比较多,第一个界面是专门用来维护UNIT机器人,后面的界面是专门用来维护应用开发的,其中UNIT机器人属于智能对话UNIT。

接口API调用

获取token

获取的URL:http://openapi.baidu.com/oauth/2.0/token
URL = 'http://openapi.baidu.com/oauth/2.0/token'
    params = {'grant_type': 'client_credentials',
              'client_id': api_key,
              'client_secret': secret_key}
    r = requests.get(URL, params=params)
    try:
        r.raise_for_status()
        token = r.json()['access_token']
        return token
    except requests.exceptions.HTTPError:
        return ''

API使用

url = 'https://aip.baidubce.com/rpc/2.0/unit/service/chat?access_token=' + access_token
    request={
        "query":query,
        "user_id": str(get_mac())[:32],
    }
    body={
        "log_id": str(uuid.uuid1()),
        "version":"2.0",
        "service_id": service_id,
        "session_id": str(uuid.uuid1()),
        "request":request
    }
        try:
        headers = {'Content-Type': 'application/json'}
        request = requests.post(url, json=body, headers=headers)
        print(request.text)
        return json.loads(request.text)
    except Exception:
        return None

HTTP方法:

POST

请求URL:

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header如下:

参数
Content-Type application/json

请求参数说明

参数 类型 是否必需 说明
version string 必需 =2.0,当前api版本对应协议版本号为2.0,固定值
service_id string 可选 机器人ID,service_id 与skill_ids不能同时缺失,至少一个有值。
skill_ids list 可选 技能ID列表。我们允许开发者指定调起哪些技能。这个列表是有序的——排在越前面的技能,优先级越高。技能优先级体现在response的排序上。具体排序规则参见【应答参数说明】 service_id和skill_ids可以组合使用,详见【请求参数详细说明】
log_id string 必需 开发者需要在客户端生成的唯一id,用来定位请求,响应中会返回该字段。对话中每轮请求都需要一个log_id
session 或 session_id string(json) 或 string 必需 session保存机器人的历史会话信息,由机器人创建,客户端从上轮应答中取出并直接传递,不需要了解其内容。如果为空,则表示清空session(开发者判断用户意图已经切换且下一轮会话不需要继承上一轮会话中的词槽信息时可以把session置空,从而进行新一轮的会话)。 session字段内容较多,开发者可以通过传送session_id的方式节约传输流量。具体操作方式见【请求参数详细说明】 以下为session内部格式,仅供参考了解
+service_id string 必需 机器人ID,标明该session由哪个机器人产生。
+session_id string 必需 session本身的ID,客户端可以使用session_id代替session,节约传输流量。
+skill_sessions kvdict of strings 必需 这里存储与当前对话相关的所有技能的session。key为技能ID,value为技能的session(同【UNIT对话API文档】中的bot_session)。
+interactions list 必需 历史交互序列,即历史 request/response_list 序列,序列的每一个元素称作一次交互(interaction),随交互进行而交替插入,格式与上述不断增长直到发生清空操作。
+interactions[].interaction_id string 必需 第 i 次交互的唯一标识。
+interactions[].timestamp string 必需 interaction生成的时间(以interaction_id的生成时间为准)。格式:YYYY-MM-DD HH:MM:SS.fff (24小时制,精确到毫秒)
+interactions[].request object 必需 第 i 次交互的 request,结构参考【请求参数说明】中的request
+interactions[].response_list list 必需 第 i 次交互的 response列表,结构参考【应答参数说明】中的response_list
dialog_state object 可选 机器人对话状态。
+skill_states kvdict of objects 可选 技能的对话状态key为技能ID,value为技能的对话状态数据。具体数据格式后续发布。
+contexts json object 可选 希望在多技能对话过程中贯穿的全局性上下文. 这里预留了一个key用于控制各技能的session记忆。详见【请求参数详细说明】
request object 必需 本轮请求体。
+user_id string 必需 与技能对话的用户id(如果客户端是用户未登录状态情况下对话的,也需要尽量通过其他标识(比如设备id)来唯一区分用户),方便今后在平台的日志分析模块定位分析问题、从用户维度统计分析相关对话情况。详情见【请求参数详细说明】
+query string 必需 本轮请求query(用户说的话),详情见【请求参数详细说明】
+query_info object 可选 本轮请求query的附加信息
++type string enum 可选 请求信息类型,取值范围:"TEXT","EVENT"。详情见【请求参数详细说明】
++source string enum 可选 请求信息来源,可选值:"ASR","KEYBOARD"。ASR为语音输入,KEYBOARD为键盘文本输入。针对ASR输入,UNIT平台内置了纠错机制,会尝试解决语音输入中的一些常见错误
++asr_candidates list 可选 请求信息来源若为ASR,该字段为ASR候选信息。(如果调用百度语音的API会有该信息,UNIT会参考该候选信息做综合判断处理。)
++asr_candidates[].text string 可选 语音输入候选文本
++asr_candidates[].confidence float 可选 语音输入候选置信度
+client_session string(json) 可选 用于在多轮中实现多选一的对话效果,具体内容见【请求参数详细说明】
+hyper_params kvdict of object 可选 key为技能id或机器人id(现在只实现技能id),value为控制相关技能/机器人内部行为的的超参数
+hyper_params{}.bernard_level int 可选 技能自动发现不置信意图/词槽,并据此主动发起澄清确认的频率。取值范围:0(关闭)、1(低频)、2(高频)。取值越高代表技能对不置信意图/词槽的敏感度就越高,默认值=1
+hyper_params{}.slu_level int 可选 参数已废弃
+hyper_params{}.slu_threshold double 可选 参数已废弃
+hyper_params{}.slu_tags list 可选 用于限定slu的解析范围,只在打上了指定tag的意图、或问答对的范围内执行slu
+hyper_params{}.dynamic_slots kvdict of list 可选 针对特定词槽启用『动态词典』机制,key为词槽名(如user_xxx),value为针对该词槽启用的动态词典id(可以同时启用多个动态词典)。

常用的关键内容:query和user_id

响应参数说明

参数 类型 说明
error_code int 错误码,为0时表示成功
error_msg string 错误信息,errno!= 0 时存在
result object 返回数据对象,当errno为0时有效
+version string =2.0,当前api版本对应协议版本号为2.0,固定值
+service_id string 机器人ID,同请求参数
+log_id string 日志唯一ID(用户与机器人的一问一答为一次interaction,其中用户每说一次对应有一个log_id)
+session 或 session_id string 或string(json) 本轮对话后更新的session信息,具体为哪个字段,与请求数据有关,详情见【请求参数详细说明】
+dialog_state object 对话状态数据,外提以方便session托管。
+interaction_id string 为本轮请求+应答之组合,生成的id
+timestamp string interaction生成的时间(以interaction_id的生成时间为准)。格式:YYYY-MM-DD HH:MM:SS.fff (24小时制,精确到毫秒)
+response_list list 本轮应答列表。由于请求接口支持请求多个技能,因此这里可能有多个应答。应答列表是有序的,其第一个元素是最为推荐采用的一个应答。决定应答列表顺序的规则详见【响应参数详细说明】
+response_list[].status int 状态码,0为正常
+response_list[].msg string 错误信息,非零时有效
+response_list[].origin string 应答来自哪个技能(skill_id)或机器人(service_id),注意有些应答可能是机器人给出的(不来自任何一个技能)。
+response_list[].action_list list 动作列表
+response_list[].action_list[].confidence float 动作置信度
+response_list[].action_list[].action_id string 动作ID
+response_list[].action_list[].say string 应答话术
+response_list[].action_list[].custom_reply string(json) 用户自定义应答,如果action_type为event,对应事件定义在此处。详见【响应参数详细说明】
+response_list[].action_list[].type string enum 动作类型,具体有以下几种: clarify(澄清) satisfy(满足) guide(引导到对话意图) faqguide(引导到问答意图) understood(理解达成,注:内部使用) failure(理解失败) chat(聊天话术) event(触发事件,在答复型对话回应 中选择了"执行函数",将返回event类型的action)
+response_list[].action_list[].refine_detail object optional 澄清与引导(type=clarify/guide/faqguide)时有效,表达澄清或引导的详细信息。
+response_list[].action_list[].refine_detail.interact string enum 交互形式。具体有以下几种: select(给出选项供选择) ask(提问) selectandask(给出选项并且追加提问)
+response_list[].action_list[].refine_detail.option_list list 选项列表。
+response_list[].action_list[].refine_detail.option_list[].option string 选项文字
+response_list[].action_list[].refine_detail.option_list[].info kvdict 选项细节信息。详见【响应参数详细说明】
+response_list[].action_list[].refine_detail.clarify_reason string enum optional 动作类型为clarify时有值,表明起因
+response_list[].schema object 解析的schema,解析意图、词槽结果都从这里面获取
+response_list[].schema.confidence double schema的总体置信度
+response_list[].schema.intent string 意图
+response_list[].schema.intent_confidence double 意图置信度
+response_list[].schema.slots list 词槽列表
+response_list[].schema.slots[].confidence double 词槽置信度
+response_list[].schema.slots[].begin int 起始位置
+response_list[].schema.slots[].length int 长度
+response_list[].schema.slots[].original_word string 词槽值
+response_list[].schema.slots[].normalized_word string 归一化词槽值
+response_list[].schema.slots[].word_type string 词槽值细化类型[保留字段]
+response_list[].schema.slots[].name string 词槽名称
+response_list[].schema.slots[].session_offset int 词槽是在第几轮对话中引入的
+response_list[].schema.slots[].merge_method string 词槽引入的方式
+response_list[].schema.slots[].sub_slots list 子词槽list,内部结构同正常词槽。
+response_list[].qu_res object optional SLU解析结果,之所以是optional,是因为response不一定是由某个技能产生,因此不一定有SLU结果
+response_list[].qu_res.timestamp int query结果时间戳
+response_list[].qu_res.status int query结果状态
+response_list[].qu_res.raw_query string 原始query
+response_list[].qu_res.candidates list 意图候选项
+response_list[].qu_res.candidates[].confidence double 解析结果整体的(综合意图和词槽)置信度,如果返回结果中无该字段,请重新训练后尝试。
+response_list[].qu_res.candidates[].intent string 候选项意图名称
+response_list[].qu_res.candidates[].intent_confidence double 候选项意图置信度
+response_list[].qu_res.candidates[].intent_need_clarify bool 意图是否需要澄清
+response_list[].qu_res.candidates[].slots list 词槽列表
+response_list[].qu_res.candidates[].slots[].confidence double 词槽置信度
+response_list[].qu_res.candidates[].slots[].begin int 起始位置,注意:单位为字符
+response_list[].qu_res.candidates[].slots[].length int 长度,注意:单位为字符
+response_list[].qu_res.candidates[].slots[].original_word string 词槽原始值
+response_list[].qu_res.candidates[].slots[].normalized_word string(json) 词槽归一化值
+response_list[].qu_res.candidates[].slots[].word_type string 细粒度词槽类型(预留字段)
+response_list[].qu_res.candidates[].slots[].name string 词槽名
+response_list[].qu_res.candidates[].slots[].need_clarify bool 词槽是否需要澄清
+response_list[].qu_res.candidates[].slots[].father_idx int 父词槽index,非子词槽,取值-1
+response_list[].qu_res.candidates[].from_who string 来自哪个qu策略(smart-qu对应对话模板,ml-qu对应对话样本学习)
+response_list[].qu_res.candidates[].match_info string query匹配信息
+response_list[].qu_res.candidates[].extra_info kvdict 候选项附加信息
+response_list[].qu_res.qu_res_chosen string(json) 最终qu结果,内部格式同result.response.qu_res.candidates[]
+response_list[].qu_res.lexical_analysis list query的词法分析结果
+response_list[].qu_res.lexical_analysis[].term string 词汇(含命名实体)
+response_list[].qu_res.lexical_analysis[].weight double 重要性权重
+response_list[].qu_res.lexical_analysis[].type string 词性或专名类别
+response_list[].qu_res.lexical_analysis[].etypes list 命名实体兼属的所有专名类别
+response_list[].qu_res.lexical_analysis[].basic_word list 构成词汇的基本词
+response_list[].qu_res.sentiment_analysis object query的情感分析结果
+response_list[].qu_res.sentiment_analysis.label string enum 情感标签,取值范围:"0"、"1"、"2",分别代表:负向情感、无情感、正向情感
+response_list[].qu_res.sentiment_analysis.pval double 置信度,取值范围0-1

关注的内容:

语意

response_list[].schema.intent

词槽

response_list[].qu_res.candidates[].slots

响应内容,文本内容

+response_list[].action_list[].say

备注

uuid 是同一个地方生成的码是独一,不会重复的

posted @ 2021-05-30 21:21  年少当拼搏  阅读(591)  评论(0)    收藏  举报