最近在研究Rasa Core的开源代码。Rasa Core是一个对话管理系统的训练和部署工具,承接Rasa NLU的实体和意图识别,成为一个任务导向型的构建聊天机器人的完整技术方案。

看到Rasa的工程师已经基本开发出一个很完整的对话引擎系统。数据定义、模型管理、对话序列的Keras序列训练等等都已经完成,只欠一个NLG的自然语言生成部分还是个空壳子。非常棒的是有一个Interactive Learning的命令行工具,用户可以方便地交互生成对话引擎训练所需要的stories.md文件,而不需要再进去手打训练数据了;当然定义了bot所有知觉和反馈的domain.md文件还需要自己手写。

如此棒棒哒的交互生成训练数据的工具,值得多看几眼!仔细翻了翻文档和代码,几个模块已经用服务设计分隔得非常好,各种交互API都已经写好了,只是为何还是命令行形式而不写成网页前端供小白用户直接使用?自己尝试在中文上使用这个交互工具,Terminal的命令行一如既往展示了一堆unicode码而不是中文本身。

还是用网页做交互好啊!耿直如我跑去他们开源仓库的issues里跟了个帖子

I’m just imaging that with all this excellent work Rasa has done in the backend, a nice front-end UI would attract much more users to use it for building bots for the full pipeline painlessly without any coding :)

然后就没有回音了…

几天后自己又一次闲逛到Rasa的官网,看到了他们用来赚钱的收费版Rasa Platform,这才恍然大悟:

根据官网,Rasa Platform需要交钱的增值服务,包括了整个生产环境的容器化(容器打包好像几行docker命令就行吧),集成模型训练与测试(开源代码里也有吧),模型分析(这个改改源代码算法部分就可以给出更多测试结果),模型持续集成(这个有不少其它开源工具可以帮忙),和一些比如Customer Success Program, One on One Support之类的常见咨询服务。

然后就是最关键的一个:

User Interface

虽然没有钱买来试用,但可以想象一下,因为这个用户界面,用户就不再需要有任何特别的编程甚至部署能力了。

意图和实体识别?导入文件选一选配置,点击个run就训练了。事实上有热心网友也已经针对Rasa NLU做了第三方的前端,只是还没有集成Rasa Core的部分。Rasa官方好像对此还暂时保持沉默…

对话引擎?把自己想象成用户跟现有的bot开始在网页对话框里对话,bot反应一出错,intent错了(问天气你以为我问最近的餐馆),或者intent没错你action错了(问天气你给我说谢谢),立刻点点鼠标打脸纠正;不知不觉中打得脸足够多了,就生成了一个越来越完美的stories.md,bot就训练得更好了。

这商业模式是妙啊!不敢揣测别人,对我自己来讲,我很愿意去帮你改进个算法或者加个新的处理模块,但seriously让我写一个完整的前端?我一定怂了。Rasa就是这样把一个开源工具做出名,然后通过产品化和针对小白用户的前端建立起了技术和工作量的门槛来自己盈利。而另一边这种2B(to business)的软件和技术支持服务,如果做的真的足够好能解决问题创造价值,大企业埋单是真的毫不手软。

想起另一个著名的开源自然语言处理工具包,spaCy,也是相同的套路。spaCy的团队一共貌似只有两个人:一个算法大神,把spaCy架构写得极于方便调用,算法部分用cython写得运行飞快,甚至新版本为了神经网络模型跑得更快速还要写了自己的深度学习工具包Thinc;另一个前端大神,把网页设计得时尚靓丽,文档描述清楚例子翔实,最关键是开发了基于spaCy的收费标注软件Prodigy,成了公司盈利的大部分来源。应该是卖得太好,以至于连consulting的活也不用接了:

Are you available for consulting projects?

We still believe that the best way to do AI is in-house — one-size-fits-all solutions still don’t work, and we don’t see that changing. However, we no longer have availability to take on consulting projects ourselves.

这个Prodigy有多牛,我就不多说了,因为自己曾经苦于中文NLP没有标注数据,和一帮胖友们想合作也搞一个开源版本的同样基于active learning文本标注工具,才意识到虽然算法乃至架构部分都能想通,但一个含有优美的用户交互前端的工程是有多么难…

所以真的是出名靠开源,赚钱靠前端。开源代码和各种神乎其技的算法都赚够了吆喝,真要真金白银卖得出去,还是要靠一点一滴的产品化,以及大量体力活的前端设计。内地有这么多专注自然语言处理的2B创业公司,你们怎么看?