摘要:使用华为云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开发开源知识问答机器人的更多相关文章

  1. 带你从0到1开发AI图像分类应用

    摘要:通过一个垃圾分类应用的开发示例,介绍AI Gallery在AI应用开发流程中的作用. 本文分享自华为云社区<AI Gallery:从0到1开发AI图像分类应用>,作者: yd_269 ...

  2. 简单理解 OAuth 2.0 及资料收集,IdentityServer4 部分源码解析

    简单理解 OAuth 2.0 及资料收集,IdentityServer4 部分源码解析 虽然经常用 OAuth 2.0,但是原理却不曾了解,印象里觉得很简单,请求跳来跳去,今天看完相关介绍,就来捋一捋 ...

  3. Swift2.0语言教程之Swift2.0语言中的标准函数

    Swift2.0语言教程之Swift2.0语言中的标准函数 Swift2.0中的标准函数 函数除了可以根据参数列表的有无分为无参函数和有参函数,还可以从定义角度分为用户自定义函数和标准函数两种.以上的 ...

  4. 手把手教你用Vue2+webpack+node开发一个H5 app

    手把手教你用Vue2+webpack+node开发一个H5 app ​前一篇vue2 + webpack + node 开发一个小demo说到了用vue的一些基本用法,这一篇就讲一个复杂一点的更完整的 ...

  5. 利用百度AI快速开发出一款“问答机器人”并接入小程序

    先看实现效果: 利用百度UNIT预置的智能问答技能和微信小程序,实现语音问答机器人.这里主要介绍小程序功能开发实现过程,分享主要功能实现的子程序模块,都是干货! 想了解UNIT预置技能调用,请参看我之 ...

  6. 3D开发基础知识和简单示例

    引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...

  7. 简单告诉你-"border:0"与"border:none"的区别

    "border:0"与"border:none"的差异主要体现在性能差异和兼容差异.1.性能差异"border:0"表示把border定义为 ...

  8. 从0构建webpack开发环境(一) 一个简单webpack.config.js

    本文基于webpack4.X,使用的包管理工具是yarn 概念相关就不搬运了,直接开始 首先项目初始化 mkdir webpack-demo && cd webpack-demo ya ...

  9. 没错,用三方 Github 做授权登录就是这么简单!(OAuth2.0实战)

    本文收录在个人博客:www.chengxy-nds.top,技术资源共享. 上一篇<OAuth2.0 的四种授权方式>文末说过,后续要来一波OAuth2.0实战,耽误了几天今儿终于补上了. ...

  10. JVM虚拟机知识问答总结(简单复习,快速回忆!)

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

随机推荐

  1. Lab3 存储过程与触发器

    实验三 存储过程与触发器  实验目的: 学习SQL语言进行编程的基本方法与技术,能够编写存储过程.触发器解决数据库需要处理的复杂问题.  实验内容: 1. 设计一个存储过程或者自定义函数,练习存储 ...

  2. linux知识点 ROM,RAM,SRAM,DRAM,Flash

    参考视频:https://www.bilibili.com/video/BV13L4y1b7So?spm_id_from=333.337.search-card.all.click SRAM,DRAM ...

  3. Linux 回收站

    聊一聊执行 rm -rf 数据恢复以及建立 Linux 回收站 误删除 rm -rf 如果在Linux 平台下,执行 rm -rf 误删除文件,我们可以做哪些数据恢复的工作以及我们该如何应对不小心删除 ...

  4. UVA1104 Chips Challenge(费用流)

    神仙费用流题,理解了一下午,故写此篇题解以作纪念. 题意 有一个 \(N\times N\) 的棋盘,有些格子不能放棋子,有些格子必须放棋子,剩下的格子随意.要求放好棋子之后满足: 第 \(i\) 行 ...

  5. 把 map 中的 key 由驼峰命名转为下划线

    import cn.hutool.core.util.StrUtil; /** * 把 map 中的 key 由驼峰命名转为下划线 */public HashMap<String, Object ...

  6. [Python急救站课程]同切圆的绘制

    绘制同切圆 import turtle # 引用turtle 库 turtle.pensize(2) # 设置画笔宽度为2 像素 turtle.circle(10) # 绘制半径为10 像素的圆 tu ...

  7. JavaScript 简介与引用

    作者:WangMin 格言:努力做好自己喜欢的每一件事 我们通常写好的HTML网页是处于一个静态的效果,在用户体验这一方面就不是很好,给人一种死板的感觉.这里我们就可以用到JavaScript来为网页 ...

  8. node 实现上传 和 下载 文件接口 简易版

    var express = require('express');var fs = require('fs');var path = require('path');var multipart = r ...

  9. 浏览器事件循环Event Loop

    引言: 事件循环不是浏览器独有的,从字面上看,"循环"可以简单地认为就是重复,比如for循环,就是重复地执行for循环体中的语句,所以事件循环,可以理解为重复地处理事件,那么下一个 ...

  10. ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级

    ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级 1.ChatGLM3简介 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型.Chat ...