很多SAP顾问朋友们对于人工智能/机器学习这个话题非常感兴趣,也在不断思考如何将这种新技术和SAP传统产品相结合。Jerry之前的微信公众号文章C4C和微信集成系列教程曾经介绍了Partner如何利用SAP Cloud for Customer内置的社交媒体集成框架,做一些简单的开发将微信集成到C4C中去。该系列教程里其中一篇文章,介绍了如何将图灵机器人集成到某个微信公众号的消息服务器上去,让该微信公众号可以“智能地”同其关注粉丝聊天。
这个图灵机器人的图灵服务通过Restful API的方式暴露出来,所有和机器学习相关的细节都被www.tuling123.com封装成黑盒子,应用开发人员只管消费。这是第三方的人工智能解决方案。
我们的目的同本文开头截图展示的一致:开发一个在微信里使用的聊天机器人,不同之处在于这次我们使用SAP Recast.AI作为人工智能解决方案。
绝大多数SAP顾问朋友们关注的是如何利用人工智能基于SAP传统产品做创新,给客户带来价值,而不是花大量时间精力去学习机器学习底层需要的那些艰深的数学知识。Recast.AI也完美地将不需要应用开发人员了解的机器学习底层细节进行了封装,我们将要做的这个聊天机器人甚至不需要太多的编码。
我们在Recast.AI网站上在线创建聊天机器人。一般网站首次登陆都需要先创建用户,而Recast.AI除了常规用户注册方式外,还贴心地提供了使用Github账号直接登录的选择,对于每天混Github的程序员来说,这太方便了。点击按钮允许Recast.AI访问您Github账号的公有信息后,能看到这个欢迎界面:
点"START WITH A TEMPLATE"基于现成的模板创建一个机器人:
创建成功后,来到如下的机器人明细页面,一共包含5个标签。本文只会用到Train, Build和Connect这三个标签。
Train标签下没有任何内容,只有一个提示:You have no intents.什么是intent呢?在Android开发里也有intent的概念,intent是一个将要执行的动作的抽象描述。Android框架根据此intent的描述,负责找到将要执行动作对应的组件,再把包含了附加参数的intent传递给决定出的负责组件。而在Recast.AI里的intent同样是一个抽象概念。通俗地解释,intent是一系列句子的集合,这些句子虽然从文字上来说表达方式各异,然而传递的是同一个意思。
比如下列三句话其实是在同一个问题:
你是一个程序员么?
你每天的工作是编写代码么?
你每天使用集成开发环境或者命令行进行单步调试么?
我们可以把这三个句子归为同一个intent,姑且命名为"程序员"。假设当用户又发送了一个新的文本到您的聊天机器人去:“你是靠编写代码维生么?” Recast.AI封装好的算法会解析这个文本,将其和"程序员"intent里的语句进行比较,如果判断出来这个新的文本和intent中的某一句表达的意思非常接近,那么我们就能说这个新文本的intention(意图)是"程序员"。此时,就可以让机器人回复预先准备好的回答,比如“是的,我是程序员,我很喜欢写代码”。
上面的描述实际上已经涵盖了本文聊天机器人创建完毕后,需要执行哪些后续步骤。
回到我创建的聊天机器人,目前没有分配任何intent。我们再多喂几个句子给这个intent:
Are you coding with Java or ABAP or JavaScript or C# or C++ or Python or Ruby?
Are you using Integrated Development Environment or Command Line to debug?
is Programming your daily work?
什么时候可以结束训练呢?首先给intent喂的句子越多,那么它分析新的语句的意图(intention)是否和程序员相关的准确度就越高。现在我们可以对这个intent进行测试。点击Train标签页右上角的Test链接,会看到下图的测试窗口。现在我给这个intent发送一条文本:
Are you working with Java every day?
这里我定义的Actions就是简单地推送一些文本(SEND MESSAGE)给用户。
准备一些文本,机器人会从中间随机地选取一条推送给用户。
Yes, and I am learning Scala in my spare time.
Yes, I have been programming for 20 years.
Yes, I am a programmer, I love programming!
比如您可以把这个网页作为HTML5应用部署到SAP云平台上,得到一个URL,然后把这个URL绑定到微信公众号的某个自定义菜单上。当用户点击了这个微信菜单后,就会在微信里打开聊天机器人的会话窗口。
具体步骤在我的博客里有介绍: