原来AI也可以如此简单!教你从0到1开发开源知识问答机器人
摘要:使用华为云EI智能机器人技术,从0到1开发一款开源知识问答机器人。
前言
最近有幸参与了开源社开源问答机器人的知识库编写,碰巧看到华为云也有类似的智能机器人,抱着试一试的心态,我开始了EI智能机器人的体验之旅。尽管实际操作很简单,但从知识库的迁移、问答机器人挂载到微信公众号,我还是经历了不少坎坷。
首先是问答知识库,由于我们之前协作的开源知识库基于微软的机器人模板,当我将它迁移到华为云EI智能机器人时,需要做的第一件事就是调整问答模板的格式,并且将问答对准备地填充。然后因为是试用,中途我觉得知识库结构有点凌乱,想进行删除操作,但只能小批量的删除,于是想到“删库跑路”,果断把实例给删了,结果不能再试用了。看到500多的购买费用,我望而却步。最后,为了能够完整地体验,终于横下心又重新注册并实名制了一个华为云账号,好在一个人最多能认证3个账号且新认证的还能继续体验试用。
整个体验过程还算满意,我觉得用来学习一下新的知识还是非常有意义的。
如果您也想为开源知识库贡献力量,欢迎访问小源的github仓库:https://github.com/kaiyuanshe/xiaoyuan, 或者添加开源社机器人-小源的微型chatbot-yuan进行体验。本次实践仅对小源进行简单的复现,欢迎和我一起交流学习心得!

准备
要想体验华为云EI智能机器人,有两个必要条件和一个前提:
- 必须注册华为云账号;
- 必须进行实名认证;
- 前提是没有试用过EI智能机器人。(千万记住试用的实例别删,删除等于试用结束!!!)
我们首先在华为云服务列表中找EI企业智能-对话机器人服务,点击右上角购买问答机器人按钮进行购买。

购买完成后等待实例创建完毕,即可体验问答机器人服务。

点击机器人管理可以进入到机器人的维护页面,包括一些运营数据及分析、知识库的管理、技能的管理等。

此外,我们还要准备一个知识库,适用于华为云EI机器人的模板可在知识库管理页面中下载,开源知识库的元数据可以访问开源知识库编写, 地址:https://shimo.im/sheets/BIK6IttNfRo0WVFD/gOEGJ 。目前我们采用的是石墨文档协作,欢迎您的参与!
知识库导入
知识库的导入其实包括很多细节,原来的开源知识库基于微软机器人的模板,我们需要转换才能使用。当然,最开始我是想用脚本的,尝试了一下发现人工迁移更加快捷,花了点功夫迁移了知识库。期间遇到一些小小的问题,比如第一次导入知识库时,平台进入死循环一直调用接口,幸亏我及时修改导入的文件,才没有“***名单”。另外,我在导入过程中发现每次最多只能上传500条,导致我又将我修改好的知识库重新分割成两份。

下边第一张图是微软机器人知识库的简要模板,第二张图是华为云EI机器人的知识库简要模板。经过对比其实改动并不大,于是我又顺便学了下Execl。


导入完毕之后,服务端会返回本次导入的结果,尽管有些报错,这次我就忽略当作没看见,毕竟只是体验,当然,您感兴趣的话可以根据记录修改数据进行重新导入。

应用授权
目前华为云EI机器人支持直接授权到公众号,将对话功能一步到位直接绑定到微信公众号。本次操作已绑定到我的这个账号上,操作的话也非常简便,在高级设置=应用授权页面,点击授权微信公众号拉取授权的弹框,用微信扫码就可授权到相应的公众号。


几秒钟的功夫,就完成授权。去到我的公众号上简单验证一下:

进阶玩法
- 兜底
兜底是对话机器人最常用到的设置,也就是当机器人无法回答问题时会抛出我们预设好的答案。在华为云EI对话机器人中默认设置的兜底回复是“我不知道该怎么回复您”,如图我们新增了两条,对应地测试一下,只要保存了就是实时生效,这点很不错,当然也要格外注意别写错别字。

- 角色形象设置
EI对话机器人默认的名字是云宝,云宝是华为云的吉祥物。而我们开源知识库里定义的角色名叫小源,所以会有些冲突,尝试修改为小源,但似乎并没有生效,我在风中凌乱……

- 技能
我们可以给机器人加10个技能,技能可以是自定义的,也可使用预置的技能如AI作诗、查天气等,还可以使用其他开发者共享的技能。当前我给华为云版的小源添加了预置技能,感受一下“藏头”诗和查天气:

自定义技能中我们可以意图对话、多轮对话、训练机器人等等。这里就不多描述,但是需要强调的是自定义技能真的很好玩,要想实现LICENSE选择器的功能,就需要用到对话流程管理。

另外还有词典、知识共享等功能期待大家探索。

结语
不得不感叹:灵感也许稍纵即逝!从初步的想法到落笔成文,我却是争分夺秒。
昨天偶然听说华为云EI有场关于对话机器人的分享,结合我之前在小源项目的经历,没想到还真实现了华为云版的开源知识问答机器人。以前每次课常常听到零一老师的洗脑式口号:“学AI就到huaweicloud.ai”,经过这次实践,也恰恰再次验证了这句口号。我是Copy攻城狮,连我都学会了Copy问答机器人,原来AI也可以如此简单!
原来AI也可以如此简单!教你从0到1开发开源知识问答机器人的更多相关文章
- 带你从0到1开发AI图像分类应用
摘要:通过一个垃圾分类应用的开发示例,介绍AI Gallery在AI应用开发流程中的作用. 本文分享自华为云社区<AI Gallery:从0到1开发AI图像分类应用>,作者: yd_269 ...
- 简单理解 OAuth 2.0 及资料收集,IdentityServer4 部分源码解析
简单理解 OAuth 2.0 及资料收集,IdentityServer4 部分源码解析 虽然经常用 OAuth 2.0,但是原理却不曾了解,印象里觉得很简单,请求跳来跳去,今天看完相关介绍,就来捋一捋 ...
- Swift2.0语言教程之Swift2.0语言中的标准函数
Swift2.0语言教程之Swift2.0语言中的标准函数 Swift2.0中的标准函数 函数除了可以根据参数列表的有无分为无参函数和有参函数,还可以从定义角度分为用户自定义函数和标准函数两种.以上的 ...
- 手把手教你用Vue2+webpack+node开发一个H5 app
手把手教你用Vue2+webpack+node开发一个H5 app 前一篇vue2 + webpack + node 开发一个小demo说到了用vue的一些基本用法,这一篇就讲一个复杂一点的更完整的 ...
- 利用百度AI快速开发出一款“问答机器人”并接入小程序
先看实现效果: 利用百度UNIT预置的智能问答技能和微信小程序,实现语音问答机器人.这里主要介绍小程序功能开发实现过程,分享主要功能实现的子程序模块,都是干货! 想了解UNIT预置技能调用,请参看我之 ...
- 3D开发基础知识和简单示例
引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...
- 简单告诉你-"border:0"与"border:none"的区别
"border:0"与"border:none"的差异主要体现在性能差异和兼容差异.1.性能差异"border:0"表示把border定义为 ...
- 从0构建webpack开发环境(一) 一个简单webpack.config.js
本文基于webpack4.X,使用的包管理工具是yarn 概念相关就不搬运了,直接开始 首先项目初始化 mkdir webpack-demo && cd webpack-demo ya ...
- 没错,用三方 Github 做授权登录就是这么简单!(OAuth2.0实战)
本文收录在个人博客:www.chengxy-nds.top,技术资源共享. 上一篇<OAuth2.0 的四种授权方式>文末说过,后续要来一波OAuth2.0实战,耽误了几天今儿终于补上了. ...
- JVM虚拟机知识问答总结(简单复习,快速回忆!)
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
随机推荐
- Leetcode.402单调栈
给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小.请你以字符串形式返回这个最小的数字. 示例 1 : 输入:num = "143221 ...
- MicroSIP-3.21.3+pjproject-2.13.1+ opus-1.3.1+VS2019
本文记录了我通过VS2019编译MicroSIP-3.21.3开源项目的过程. Microsip:MicroSIP source code pjproject:Download PJSIP - Ope ...
- PXE批量网络装机
PXE高效批量网络装机 系统装机的三种引导方式 1.硬盘 2.光驱(u盘) 3.网络启动 pxe 系统安装过程 加载boot loader Boot Loader 是在操作系统内核运行之前运行的一段小 ...
- mysql 实用语句
-- 查询内存大小 SELECT TABLE_NAME, concat( TRUNCATE (data_length / 1024 / 1024, 2), ' MB' ) AS data_size, ...
- Windows上的多jdk版本管理工具
前言 Java在Windows上因为版本太多导致难以管理,这个项目可以很好的解决这点 项目地址 GitHub - ystyle/jvms: JDK Version Manager (JVMS) for ...
- 微信支付:wxpay.unifiedOrder(data)返回appid 与 openId 不配
原因:小程序和APP.公众号等支付方式夸端口调用支付,后台配置多个appId时 A程序中的openid 在B程序中支付.即使用A程序的openid和B程序的appIdy去调用wxpay.unified ...
- Java Stream中的API你都用过了吗?
公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 在本教程中,您将通过大量示例来学习 Java 8 Stream API. Java 在 Java 8 中提供了一个新的附加 ...
- Spring配置文件的魔法炼金术:如何制造容器化时代的完美配方
前言 基于现代服务的云原生十二要素理论,我们在采用容器化部署时,要保证同一个镜像可以满足不同环境的部署要求,而不是不同环境打包不同的镜像.本文档主要介绍一种基于spring框架的满足不同环境配置的编译 ...
- 谷歌浏览器和火狐浏览器如何查看HTTP协议?
按F12
- 从零开始的 dbt 入门教程 (dbt-core 基础篇)
最近一直在处理数据分析和数据建模的事情,所以接触了 dbt 等数据分析的工具,国内目前对于 dbt 比较详细的资料不多,所以打算写四道五篇 dbt 相关的文章,本文属于 dbt 系列的第一篇,本篇主要 ...