UNIT2.0 调用示例(Python3)
林夕画晴 发布于2018-07-11 18:07 浏览:729 回复:6
1
收藏

官网给出的调用示例是Python2的代码,Py3直接使用会报错,经过自己的摸索,使用Py3改写成功了,分享给大家(*^▽^*)

官网Python2源代码链接:https://ai.baidu.com/docs#/UNIT-v2-API/top

# -*- coding: utf-8 -*-
import urllib.request as ul_re
import json
url = 'https://aip.baidubce.com/rpc/2.0/unit/bot/chat?access_token=' + 【你的access_token】
post_data  = {
	"bot_session": "",
	"log_id": "7758521",
	"request": {
		"bernard_level": 0,
		"client_session": "{\"client_results\":\"\", \"candidate_options\":[]}",
		"query": "【你的输入语句】",
		"query_info": {
			"asr_candidates": [],
			"source": "KEYBOARD",
			"type": "TEXT"
		},
		"updates": "",
		"user_id": "88888"
	},
	"bot_id": 【你的BOTID】,
	"version": "2.0"
}
encoded_data = json.dumps(post_data).encode('utf-8')
headers = {'Content-Type': 'application/json'}

request = ul_re.Request(url, data=encoded_data, headers=headers)
response = ul_re.urlopen(request)
content = response.read()
result = str(content,'utf-8')
print(result)
收藏
点赞
1
个赞
共6条回复 最后由ws1993109回复于2018-12-02 21:24
#7ws1993109回复于2018-12-02 21:24:02

非常感谢

0
#6love卵疼回复于2018-11-03 14:24:48

可以使用引导意图,还有返回json中,type 如果是clarify之类的 才能正确确定是多轮对话。在返回剩余类型时,本地存储的SessionID置空。

0
#5伊茨米可回复于2018-10-22 11:40:17
#4 飞旋乒乓小童鞋回复
多轮对话的,我也有这个烦恼: 第一轮对话,说完后,会产生session_id,这个session_id再丢给第二轮对话里的bot_session,因为第一轮用户给出的问题,是不固定的,也就是说,产生出来的session_id是不固定的,这样的话,如果第二轮调用这个session_id的话,就会出问题。 我以为,第一轮过后,session_id是个固定值,后来打印出来后,才知道不是固定的,我用第一轮产生的session_id传给第二轮后,对答出现了问题,第二轮对话,unit给出的回答,没有实现多轮。 期待懂的小伙伴们能够讲一下。  
展开

session id是系统定义的,与用户对话内容无关。没有实现多轮的具体表现是?

 

0
#4飞旋乒乓小童鞋回复于2018-10-21 13:26:48
#3 love卵疼回复
你好,有没有多轮对话的demo ,返回的json还是太恶心了

多轮对话的,我也有这个烦恼:

第一轮对话,说完后,会产生session_id,这个session_id再丢给第二轮对话里的bot_session,因为第一轮用户给出的问题,是不固定的,也就是说,产生出来的session_id是不固定的,这样的话,如果第二轮调用这个session_id的话,就会出问题。
我以为,第一轮过后,session_id是个固定值,后来打印出来后,才知道不是固定的,我用第一轮产生的session_id传给第二轮后,对答出现了问题,第二轮对话,unit给出的回答,没有实现多轮。
期待懂的小伙伴们能够讲一下。

 

0
#3love卵疼回复于2018-10-09 19:39:35

你好,有没有多轮对话的demo ,返回的json还是太恶心了

0
#2伊茨米可回复于2018-07-12 10:15:11

感谢感谢~

官网的文档也会尽快更新

0
TOP
切换版块