对于今天的主题,聊天机器人,事实上是一个十分偶然,临时起意的想法。从技术上而言,并没有大家想象的那么高大上,只是单纯的通过API与目前现有的聊天机器人实现交互。用一种很不幸的说法来讲,拿来主义罢了。

不过,我想通过这篇帖子,来聊一聊这段心路历程,为什么要写这么一个功能。

工程师有三痛。相信不同的工程师,不同的工作属性,痛点也不尽相同。对于我而言,Top3分别是:

1. 白天开会,下班干活

2. Resource永远不够

3. 有一种Deadline叫尽快

而前不久,我一度在妄想,既然没有headcount去招人,那为什么不尝试自己造一个工程师。于是,我将这个个人项目取名为VE计划 (虚拟工程师项目Virtual Engineer Project)。目前针对虚拟工程师项目,个人的需求主要包括五点:

1. 工具的管理及调用

2. 项目相关的账号自动登录

3. 交付文档的自动生成

4. 自动仿真

5. 工作日志的管理及追踪

虚拟工程师项目,当前暂定一年的时间去完成,并在这个过程中拓展功能。在未来的一年中,将会不定期分享这个项目的进展与成果。

回归到这篇帖子的主题上来。既然项目的主体定位为一个工程师,我并不希望最终的结果只是一个冰冷的执行器

我希望这个工程师还能够具备基本的聊天功能

不过聊天功能并不是虚拟工程师的核心功能,算是锦上添花的一项功能,加之时间上的限制。因此我第一选择是通过现有聊天机器人的API进行数据交互,目前看来,效果还是不错的,至少已经达到了我最初的期许。

在完成聊天功能之后,我又根据目前的痛点,尝试性的加入了几项基本的功能。

关注公众号较久的朋友应该比较了解,我平时比较喜欢写工具。算上大大小小的工具,已经将近70个有余。但是每当要用到的时候,总是要花一些时间去翻文件夹,去运行工具。曾经我为此专门写了一个工具管理的工具。

这个工具中,只有集成了几个平常比较常用的工具。不过,每一次开发了一个新工具之后,都要重新对这个管理工具进行设计,包括嵌入按钮,添加事件,修改尺寸等等。如果真的要把70多个工具都集成到管理工具中,相信这个工具应该是奇丑无比。

不过有了这个虚拟工程师之后,只需要一句是个人都能懂的命令,就能开启工具,就拿曲线工具来说。

除此之外,还可以通过一句简单的命令打开常见的网页

可能这个不是一个优秀的例子,因为用我媳妇的话来说,不明白这个功能的意义在哪,因为直接打开浏览器,输入百度也很方便。

不过这个例子仅仅只是一个起点,在此之后,还会有无数个需要账户登录的网页或者是软件,可以通过一个简单的命令实现自动登录。

类似的高效功能还有许多有待集成进去。不过今天这方面的畅想到此为止。

接下来还是回到这篇帖子的主题上来,MATLAB版的聊天机器人是如何实现的。

我使用的是图灵机器人的API,在注册成功之后,每个账户能够免费生成5个机器人,每个机器人每天有1000句的限额,不过相信5000句已经足够一天的使用了,毕竟虚拟工程师的功能并不是每天与你闲聊的。

图灵机器人官网上有API的使用说明,有兴趣的朋友可以在公众号后台回复“图灵API”,获取相关信息。

当然,在使用图灵机器人的过程中,有可能会发现,聊天并不是十分智能,主要体现在两个方面,一个是聊天没有关联性,另一个聊天只是单向性,机器人是不会主动向你提问的。

这段时间,我也看了很多帖子,了解过当下聊天机器人的发展情况。知乎上有一篇帖子讲的蛮好的,帖子的题目叫做“八一八聊天机器人”,虽然帖子写在一年之前,但是分析很客观。其中有一句话挺深刻的,“问答系统实用化根本不可能,聊天机器人的定位应该是自动化”。有兴趣的朋友,可以在公众号后台回复“818”来查看这个帖子。

MATLAB调用这个API的方式很简单,使用的urlread函数。对这个函数不了解的朋友,可以在MATLAB命令窗口输入doc urlread来查看这个函数的用法。其中,parameter部分,需要包含:机器人所对应的key值,以及你想发送的消息。

截止目前,已经完成了最基本的聊天功能。不过在工具的制作过程中,还有一个细节十分有趣,就是通过回车键发送消息的功能。

最开始的时候,正如你们所见,也是设计的send按钮。但是每次聊天打完字之后,再用鼠标去点击发送的按钮,实在是太蠢了,同样也跟平时比如QQ聊天的使用习惯相悖。于是,我花了一些时间在这件事上。

后来解决的方式是,在edit空间定义中,加入KeyPressFcn,去识别return的按钮。当识别有回车动作时,调用send按钮事件。这个细节非常有趣,建议有兴趣的朋友一定要去尝试一下。

以上就是当前虚拟机器人项目的第一次分享帖子。对聊天机器人功能感兴趣的朋友,可以在公众号后台回复“HaoChat”,获取工具下载链接,来感受一下聊天的过程。

最后祝大家,周末愉快!

微信名:打浦桥程序员

打浦桥程序员

汽车行业的工程师

更喜欢用MATLAB看世界

更多联系方式

❶ 知乎:打浦桥程序员

❷ 知乎专栏:MATLAB如何