摘要:使用华为云EI智能机器人技术,从0到1开发一款开源知识问答机器人。
前言
最近有幸参与了开源社开源问答机器人的知识库编写,碰巧看到华为云也有类似的智能机器人,抱着试一试的心态,我开始了EI智能机器人的体验之旅。尽管实际操作很简单,但从知识库的迁移、问答机器人挂载到微信公众号,我还是经历了不少坎坷。
首先是问答知识库,由于我们之前协作的开源知识库基于微软的机器人模板,当我将它迁移到华为云EI智能机器人时,需要做的第一件事就是调整问答模板的格式,并且将问答对准备地填充。然后因为是试用,中途我觉得知识库结构有点凌乱,想进行删除操作,但只能小批量的删除,于是想到“删库跑路”,果断把实例给删了,结果不能再试用了。看到500多的购买费用,我望而却步。最后,为了能够完整地体验,终于横下心又重新注册并实名制了一个华为云账号,好在一个人最多能认证3个账号且新认证的还能继续体验试用。
整个体验过程还算满意,我觉得用来学习一下新的知识还是非常有意义的。
如果您也想为开源知识库贡献力量,欢迎访问小源的github仓库:https://github.com/kaiyuanshe..., 或者添加开源社机器人-小源的微型chatbot-yuan进行体验。本次实践仅对小源进行简单的复现,欢迎和我一起交流学习心得!
准备
要想体验华为云EI智能机器人,有两个必要条件和一个前提:
- 必须注册华为云账号;
- 必须进行实名认证;
- 前提是没有试用过EI智能机器人。(千万记住试用的实例别删,删除等于试用结束!!!)
我们首先在华为云服务列表中找EI企业智能-对话机器人服务,点击右上角购买问答机器人按钮进行购买。
购买完成后等待实例创建完毕,即可体验问答机器人服务。
点击机器人管理可以进入到机器人的维护页面,包括一些运营数据及分析、知识库的管理、技能的管理等。
此外,我们还要准备一个知识库,适用于华为云EI机器人的模板可在知识库管理页面中下载,开源知识库的元数据可以访问开源知识库编写, 地址:https://shimo.im/sheets/BIK6I... 。目前我们采用的是石墨文档协作,欢迎您的参与!
知识库导入
知识库的导入其实包括很多细节,原来的开源知识库基于微软机器人的模板,我们需要转换才能使用。当然,最开始我是想用脚本的,尝试了一下发现人工迁移更加快捷,花了点功夫迁移了知识库。期间遇到一些小小的问题,比如第一次导入知识库时,平台进入死循环一直调用接口,幸亏我及时修改导入的文件,才没有“*名单”。另外,我在导入过程中发现每次最多只能上传500条,导致我又将我修改好的知识库重新分割成两份。
下边第一张图是微软机器人知识库的简要模板,第二张图是华为云EI机器人的知识库简要模板。经过对比其实改动并不大,于是我又顺便学了下Execl。
导入完毕之后,服务端会返回本次导入的结果,尽管有些报错,这次我就忽略当作没看见,毕竟只是体验,当然,您感兴趣的话可以根据记录修改数据进行重新导入。
应用授权
目前华为云EI机器人支持直接授权到公众号,将对话功能一步到位直接绑定到微信公众号。本次操作已绑定到我的这个账号上,操作的话也非常简便,在高级设置=应用授权页面,点击授权微信公众号拉取授权的弹框,用微信扫码就可授权到相应的公众号。
几秒钟的功夫,就完成授权。去到我的公众号上简单验证一下:
进阶玩法
- 兜底
兜底是对话机器人最常用到的设置,也就是当机器人无法回答问题时会抛出我们预设好的答案。在华为云EI对话机器人中默认设置的兜底回复是“我不知道该怎么回复您”,如图我们新增了两条,对应地测试一下,只要保存了就是实时生效,这点很不错,当然也要格外注意别写错别字。
- 角色形象设置
EI对话机器人默认的名字是云宝,云宝是华为云的吉祥物。而我们开源知识库里定义的角色名叫小源,所以会有些冲突,尝试修改为小源,但似乎并没有生效,我在风中凌乱……
- 技能
我们可以给机器人加10个技能,技能可以是自定义的,也可使用预置的技能如AI作诗、查天气等,还可以使用其他开发者共享的技能。当前我给华为云版的小源添加了预置技能,感受一下“藏头”诗和查天气:
自定义技能中我们可以意图对话、多轮对话、训练机器人等等。这里就不多描述,但是需要强调的是自定义技能真的很好玩,要想实现LICENSE选择器的功能,就需要用到对话流程管理。
另外还有词典、知识共享等功能期待大家探索。
结语
不得不感叹:灵感也许稍纵即逝!从初步的想法到落笔成文,我却是争分夺秒。
昨天偶然听说华为云EI有场关于对话机器人的分享,结合我之前在小源项目的经历,没想到还真实现了华为云版的开源知识问答机器人。以前每次课常常听到零一老师的洗脑式口号:“学AI就到huaweicloud.ai”,经过这次实践,也恰恰再次验证了这句口号。我是Copy攻城狮,连我都学会了Copy问答机器人,原来AI也可以如此简单!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。