很多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綁定到微信公衆号的某個自定義菜單上。當使用者點選了這個微信菜單後,就會在微信裡打開聊天機器人的會話視窗。
具體步驟在我的部落格裡有介紹: