很多SAP顾问朋友们对于人工智能/机器学习这个话题非常感兴趣,也在不断思考如何将这种新技术和SAP传统产品相结合。Jerry之前的微信公众号文章C4C和微信集成系列教程曾经介绍了Partner如何利用SAP Cloud for Customer内置的社交媒体集成框架,做一些简单的开发将微信集成到C4C中去。该系列教程里其中一篇文章,介绍了如何将图灵机器人集成到某个微信公众号的消息服务器上去,让该微信公众号可以“智能地”同其关注粉丝聊天。
这个图灵机器人的图灵服务通过Restful API的方式暴露出来,所有和机器学习相关的细节都被www.tuling123.com封装成黑盒子,应用开发人员只管消费。这是第三方的人工智能解决方案。
2018年1月,SAP收购了一家法国的人工智能提供商,Recast.AI, 从此SAP也有了自己的人工智能解决方案。
现在,访问https://recast.ai, 能看到一行醒目的提示:Recast.AI is now part of SAP。那么Recast.AI提供了怎样的功能呢?最好的入门办法,莫过于自己动手做一个Hello World例子出来。跟着Jerry一块做一个吧。
我们的目的同本文开头截图展示的一致:开发一个在微信里使用的聊天机器人,不同之处在于这次我们使用SAP Recast.AI作为人工智能解决方案。
绝大多数SAP顾问朋友们关注的是如何利用人工智能基于SAP传统产品做创新,给客户带来价值,而不是花大量时间精力去学习机器学习底层需要的那些艰深的数学知识。Recast.AI也完美地将不需要应用开发人员了解的机器学习底层细节进行了封装,我们将要做的这个聊天机器人甚至不需要太多的编码。
我们在Recast.AI网站上在线创建聊天机器人。一般网站首次登陆都需要先创建用户,而Recast.AI除了常规用户注册方式外,还贴心地提供了使用Github账号直接登录的选择,对于每天混Github的程序员来说,这太方便了。
点击按钮允许Recast.AI访问您Github账号的公有信息后,能看到这个欢迎界面:
点"START WITH A TEMPLATE"基于现成的模板创建一个机器人:
和我们在Fiori UI里进行业务模型创建类似,首先维护机器人的ID和描述信息:
创建成功后,来到如下的机器人明细页面,一共包含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。
那么我就点Create按钮创建一个。当然也可以点Search按钮,从Recast社区上搜索一个别人创建好的intent。
现在新建的这个programmer intent还没有任何语句,现在我们就来给它“喂”一些句子,这个动作称为"Train(训练)"。输入一个句子"Are you a programmer?",回车:
Recast.AI会自动将这个句子进行分词,并且识别出一个代词(Pronoun) - You, 一个数量词(Number) - a, 和一个工作描述(Job) - programmer。
我们再多喂几个句子给这个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?
Recast.AI将这个句子同我创建的"programmer" intent里的句子进行比较,最后判断出,这句话有99%的可能性属于该intent(下图字段confidence: 0.99)。
那么我们就结束训练,进入下一个"Build"步骤。这个步骤负责定义当您的聊天机器人成功识别到了您的输入是在讨论程序员后,应该执行何种动作。Recast.AI把机器人这种成功识别出文本的intention后执行某种动作的能力,称为skill。在Build标签页点击Create skill:
我给新建的skill取名:chat_with_programmer
给这个skill定义Triggers,意思是满足何种条件会触发这个skill?在Triggers标签页下面使用Recast.AI预置的一些公式进行条件定义。
下图if@programmer,意思就是:如果聊天机器人计算出用户发送的文本是属于"programmer"这个intent:
Actions就是在这种条件下应该执行的具体动作。
这里我定义的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!
点击Build标签页的"CHAT WITH YOUR BOT"进行测试。随便输入一句和程序员相关的话,比如"Are you working with Java?" 在测试页面,看到了机器人自动给我推送了一个回复,同时显示了我之前创建的"chat_with_programmer" skill已经被触发(triggered)了。这意味着Build标签页里的配置也已经完成。
最后,我们可以把这个创建好的聊天机器人进行发布,让它可以被其他平台消费。这里我选择的是Webchat渠道,意思是在一个网页内嵌入这个聊天机器人的对话窗口。
点击Connect标签页,选择Webchat:
可以对嵌入的聊天机器人的会话窗口的某些属性进行定制化,比如窗口标题,用户和机器人的图片定制等。
点击SAVE CHANGES,会生成一段包含Script标签的HTML代码。直接拷贝到某个网页里,就能使用了。
比如您可以把这个网页作为HTML5应用部署到SAP云平台上,得到一个URL,然后把这个URL绑定到微信公众号的某个自定义菜单上。当用户点击了这个微信菜单后,就会在微信里打开聊天机器人的会话窗口。
具体步骤在我的博客里有介绍:
Wechat development series 5 – embedded your UI5 application to Wechat app
下图是我的聊天机器人在微信里工作的效果图。
本文这个例子的完整步骤在SAP Recast.AI的官网上也有记载,不过是全英文的。大家有兴趣可以动手做一做。感谢阅读。
https://recast.ai/blog/build-your-first-bot-with-recast-ai/
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关推荐
要求节点版本我们建议至少使用`node v6Recast.AI帐户在平台上创建一个帐户,然后按照此在界面上创建第一个机器人。用法安装git clone https://github.com/RecastAI/starter-NodeJS.git my-bot && cd my-bot 使用npm ...
《Unreal Engine 4 AI 编程精要》是一本专注于在Unreal Engine 4(UE4)游戏引擎中实现人工智能(AI)编程的教程书籍。本书内容全面,适合初学者和进阶开发者,提供了大量示例和代码,帮助读者快速掌握如何在UE4中...
验於於3D Path findig的函式库,可以做到上下互叠及娱鲜产生nav的效果。此益修改过的版本,原始版本不符合ogre3D使用,要原始版本请参考以下的连结:https://code.google.com/p/recastnavigation/
您可以将任何导航网格与Detour一起使用,但是由Recast生成的数据当然非常合适。 人群管理模块为您提供代理处理和行为自定义的功能 一些文档可以在这里找到: : 如何构建recast.js? 首先,使用recastjs文件夹中的...
在IT领域,这样的软件可能涉及到数据分析、机器学习或人工智能,用于预测未来的趋势或行为。例如,它可能是一个专门处理时间序列数据的应用,帮助用户预测销售、股市走势、天气变化或者网络流量等。 在v1.4.2这个...
利用Apple的UIKit框架,Recast创建了直观且用户友好的界面。UIKit包含了各种UI组件,如UILabel、UIButton、UITableView等,它们用于展示信息、接收用户输入和控制应用行为。开发者可以从中学习如何自定义界面元素,...
重铸旨在使用命名的导入来导入: import { parse , print } from "recast" ; console . log ( print ( parse ( source ) ) . code ) ; import * as recast from "recast" ; console . log ( recast . print
ReCast是一个用PHP编写的多平台流媒体工具,它使用nginx RTMP。 您可以将一台服务器流传输到多个服务 安装 您必须安装Nginx服务器 检出这个专案 运行composer install --no-dev -o 运行...
所得区域仅具有一个不重叠的轮廓,从而极大地简化了过程的最后一步。 首先通过跟踪边界,然后对其进行简化,从而将导航多边形从区域中剥离。 最终将生成的多边形转换为凸多边形,这使它们非常
在IT行业中,导航网格(Navigation Mesh,简称NavMesh)是一种常用的技术,特别是在游戏开发和人工智能领域,用于实现游戏角色或其他智能实体的路径规划。"recastnavigation-master" 是一个开源项目,专注于为cocos...
使用Recast将AMD转换为CJS 此存储库是Skookum.com/blog上的教程的一部分,该教程用于将项目从AMD转换为common.js。 遵循数字顺序的分支。 骇客 git clone Skookum/recast-to-cjs cd recast-to-cjs npm link ...
知识点:1.js包为 recast 2.Recast除了parse/print/builder以外, 还有三项主要功能: run: 通过命令行读取js文件,并转化成ast以供处理。 tnt(recast.types.namedTypes): 通过assert()和check(),可以验证ast...
GENDOCS是一个用于自动生成文档的工具,可以帮助用户快速创建SU4.0的使用手册和其他技术文档。 #### 2.7 HTML格式的帮助文档 (SUHELP.HTMl) SUHELP.HTMl是以HTML格式提供的帮助文档,便于在线查看和搜索。 #### ...
fips-recast fipsified Recast/Detour ( ) fips 构建系统: : 建造 > cd fips > ./fips clone fips-recast > cd ../fips-recast > ./fips build > ./fips run RecastDemo
RecastNavigation项目附带的RecastDemo是一个交互式的演示程序,展示了如何使用Recast和Detour库。它包含以下组件: 1. **用户界面**:提供可视化界面,展示NavMesh的生成过程和路径搜索结果。 2. **场景编辑**:...
该库不会为您构建导航网格物体,而是使用Blender , Recast ( CLI )或其他工具来创建导航网格物体。 当前,该库不接受由诸如Recast之类的工具创建的自定义导航网格文件格式。 相反,您将需要将导航网格导出为3D...
:pencil: 创建:不需要外部软件或3D建模经验-使用Spoke Web编辑器构建3D场景,以便您可以完全根据需要定制空间。 从董事会到外部空间,您的空间都在您的掌控之中。 :party_popper: 分享:通过将您的内容立即发布到...
RECAST 前端这是当前托管在的 RECAST 前端和 RESTful API 的 Drupal 代码由于 RECAST 是一个社区项目,我们正在迁移到 GitHub 进行协作开发。 RECAST 包(例如 API 包装器、后端实现等)应位于名为 recast-<package>...
这个工具包允许开发者在复杂的游戏环境中创建智能路径规划,使游戏角色能够自动生成合理、流畅的移动路径。Recast Navigation提供了从原始几何数据构建导航网格,并进行查询和寻路的功能,适用于多种类型的游戏和...
重铸和绕行导航网格工具集的Java端口。重铸4j原始语言学习,持续更新中!链接: : 附加参考c ++版本: :