本文介绍通过调用UNIT预置技能,搭建自己的个性化机器人的方法。对于一个经常出差开会的人来说,一个会订票、查天气、预定会议室、回答一些常识问题的机器人助手就够用了,下面是具体搭建步骤。
一、概念介绍
1.机器人
一个机器人对应一个特定环境下多个对话场景的对话系统。通常按行业垂类划分(例如,银行大厅值班机器人、儿童机器人等)。
2.技能
某一个对话场景的对话能力,分为开发者自定义技能和UNIT平台预置技能。
自定义技能又分为「对话技能」和「问答技能」,完全由用户配置。
预置技能为UNIT平台预置的通用能力,部分预置技能目前支持添加词槽词典值来干预对话理解效果。
3.沙盒环境
沙盒环境是UNIT平台提供给您创建技能,训练技能模型,对话测试,调试优化技能模型的环境。每个技能都配有一个沙盒环境,将训练好的技能模型生效到沙盒环境后,就可以与技能进行对话了,同时可接入到您自己的业务系统中使用。一个技能可以训练出多个版本的模型,但只能选择一个放到沙盒环境中。
4.生产环境
生产环境是UNIT平台在百度云上为您提供的可定制的稳定的对话服务环境。
二.创建机器人
1.进入UNIT主页,首先创建自己的机器人,命名为小智。
https://ai.baidu.com/unit/home
2.点击“我的技能”选项卡,点击“添加预置技能”
3.选中“会议室预定”,在右侧可以输入对话,初步测试。点击“获取该技能”,即可将该技能加入到我的技能。
4.点击“我的机器人”选项卡,然后点击“添加技能”,将预置技能加入到自己的机器人。
5.可以看到机器人技能管理下已经加入了“会议室预定”技能
6.当然,如果需要,采用同样方法,可以加入其它技能,一个机器人最多只能添加5个技能。
7.至此,机器人已经搭建完成,并且具备预定机票、火车票、会议室,查询天气及智能问答功能,下面可以做综合测试,与机器人聊天了。
三.技能测试
点击机器人下方的“对话”,即可对机器人进行测试,以预定会议室为例,可以看出,技能能够根据用户输入开展多轮对话,自动询问必填槽位(会议时间)。
四.技能调用
1.首先要在控制台创建UNIT应用,获取API接口。点击“发布上线”,点击“获取API Key/Secret Key”。
2.点击“创建应用”,输入应用名:个人助理小智,此处获得的AK、SK在程序中会用到。
3.在Python3中实现UNIT API接口调用,下面直接给出代码:
# -*- coding: utf-8 -*-
import urllib.request as ul_re
import json
import urllib
import urllib.parse
#client_id 为官网获取的AK, client_secret 为官网获取的SK
client_id = '****************************'
client_secret = '*********************************'
#获取token
def get_token():
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
token_content = response.read()
if token_content:
token_info = json.loads(token_content.decode("utf-8"))
token_key = token_info['access_token']
return token_key
access_token = get_token()
url = 'https://aip.baidubce.com/rpc/2.0/unit/bot/chat?access_token=' + access_token
#print (access_token)
str = input("助理小智:请问有什么可以帮您?请说出您的需求:\n ");
#print("请说出您的需求 : ", str)
post_data = {
"bot_session": "",
"log_id": "7758521",
"request": {
"bernard_level": 0,
"client_session": "{\"client_results\":\"\", \"candidate_options\":[]}",
"query": str,
"query_info": {
"asr_candidates": [],
"source": "KEYBOARD",
"type": "TEXT"
},
"updates": "",
"user_id": "88888"
},
"bot_id": "64050",
"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()
if content:
license_plates = json.loads(content.decode("utf-8"))
strover = '助理小智:'
words_result = license_plates['result']
number = words_result['response']['action_list'][0]['say']
strover += ' {} \n '.format(number)
# print (content)
print (strover)
# return content
#else:
# return ''
4.测试结果
五.更多应用场景
UINT可广泛应用与智能客服、智能家居、机器人、车载设备等交互场景,解放人的双手,使智能设备与人的融合度更高、更自然。比如语音交互的智能音箱已经走入千家万户,越来越多的人们习惯于用口语化的指令查询和播放音乐,和智能音箱聊着天对话来获取了解天气情况、设置日程提醒、预订机票酒店等实用的生活服务。
UINT还可以应用于其他专业的系统。比如服务机器人已经凭借其标准化的专业服务走入了各行各业,为企业降低日渐高昂的人力成本。基于UNIT搭建的服务机器人可随时提供高质量服务,已成功应用于医疗健康、法律政务、酒店旅游、商业地产等场景。
六.意见建议
1. UINT优点很多,但也有需要完善的地方,比如预置技能需要单独调用,这样每次只能实现一种技能。通过沟通了解到后续会上线机器人模块,机器人下面可以添加多个技能,届时直接调用机器人即可。这样将大大提高使用效率。
2.目前机器人测试能进行对话体验,能否实现预定火车票、机票等实际操作,以及涉及个人资金安全的设计是否考虑周全,还没有看到相关文档说明。
q 394885854
楼主大大,我有问题需要请教你,我在做毕业设计,其中有一块需要用到智能问答,我看了你上一个关于小程序的帖子,不知道哪里的代码需要改掉,可以给我一个你的联系方式吗,万分感谢
添加追问语句,建议看看文档
请教,循环提问题怎么实现。
5个技能不够用哈
又是机器人,太酷了
放在移动设备上才能用起来
后续接入微信小程序