技术文章
使用SAP云应用程序编程模型将聊天机器人连接到HANA数据库
在本教程中,您将学习如何使用SAP云应用程序编程模型建立从SAP会话AI聊天机器人到HANA数据库的集成。本教程可用于PoC或原型,以验证到聊天机器人的后端连接,并将一些示例数据集成到聊天机器人中。
作为先决条件,您需要访问业务技术平台帐户,该帐户可以通过使用审判。
有关SAP业务技术平台的更多信息可在此处找到:
这个练习分为两个不同的部分:
- 在SAP Business Application Studio上创建一个新的SAP HANA数据库
- 将聊天机器人与SAP会话AI集成到数据库中
第1部分:在SAP Business Application Studio上创建一个新的SAP HANA数据库
登录页面可通过以下URL访问:首先,登录SAP云平台座舱在这里。在登陆页面上,点击SAP业务应用程序工作室按钮。
您应该看到一个屏幕,可以在其中创建一个新的Dev Space。在新屏幕中,单击创建开发空间按钮,并为您的开发空间输入一个名称- I used,,DevelopmentSpace ":选择全栈云应用然后点击创建开发空间。从这里开始,您将选择SAP Cloud Business Application Template并为您的Dev Space提供一个名称。
等待状态变为开始来运行,然后单击带有Dev Space名称的磁贴。
1-2分钟后,您应该看到您的创建状态从启动变为运行,这意味着您的Dev Space现在已经准备好了。
在后台,Dev Space已经准备好了所有必要的组件,否则您必须在笔记本电脑上安装这些组件。例如Node JS, CDS等。
一旦Dev Space显示已创建,您将看到Dev Space Name变为可点击(屏幕最左边云符号旁边)。
点击你的DevSpace后选择限制的项目(SAP Cloud Application Programming Model)项目并点击开始。为您的项目和提供一个名称选择的SAP HANA部署配置复选框。点击完成。
在后台,将生成您的项目。完成后,屏幕将返回,您可能会在右下角看到一个弹出消息框,用于打开带有项目的工作区。如果它还没有打开,您需要打开带有此弹出窗口的工作空间,以开始处理您的项目。如果弹出窗口出现在屏幕的右角,请单击在新工作区中打开按钮,在弹出框中。编辑器将在新工作区的上下文中打开,现在您可以开始处理您的项目了。但是,您可能会在屏幕底部看到一条消息,表明空间尚未与Cloud Foundry设置。
在工作区中,您需要登录到您的Cloud Foundry帐户。因此,转到屏幕的标题栏并单击视图。选择找到命令从下拉菜单开始。从这里你将寻找CF登录Cloud Foundry。在选择CF Login之后,应该会自动将API端点插入文本框中。接下来,系统将提示您输入用户凭据并在试用帐户中选择开发空间。
创建CDS数据模型:
从左边的文件结构中,您将导航到DB文件夹,并创建一个名为schema.cds。理论上,文件名可以是任何名称,但为了一致性,请使用我们建议的名称,以便将来的复制/粘贴操作可以正常工作。
- 右键单击db文件夹在项目结构中。
- 在新的对话框中,选择新文件从菜单中输入schema.cds作为文件名
- 在文件夹中打开新生成的文件。
- 输入以下脚本,创建第一个CAP数据模型结构:
名称空间scp.cloud;使用{managed,} from '@sap/cds/common';实体ServiceTickets:管理{key ID: Integer;title:字符串(50)@title: ' title ';description:字符串(1000)@title: ' description ';creationDate:日期@title:“创建日期”;priority:字符串(50)@title: 'priority';} entity CustomerOrders: managed {key ID: Integer;product:字符串(50)@title: ' product ';quantity:整数@title: ' quantity '; price : String(50) @title : 'CreationDate'; deliveryDate : String(50) @title : 'Delivery Date'; }
下一步与部署时的问题有关,由于最新的SQLite版本,我们可以通过将SQLite版本更改为5.0.0并将“engines”部分添加到文件中package.json。
- 打开package.json文件
- 的值devDependencies属性sqlite3应该是5.0.0。如果不是,就把它从^ 5来5.0.0
- 添加“引擎”节,如下所示devDependencies属性
- 按下保存更改按CTRL + S
安装NPM依赖项
现在,在进一步操作之前,必须执行Node.js命令以确保所有内容都已安装。
- 打开一个终端窗口通过转到顶部菜单并选择终端->新终端。
- 您将看到一个新的终端窗口出现在屏幕的下半部分。
- 在新的终端窗口中,您应该处于与项目名称相同的文件夹中。如果不是,执行命令:CD <您的项目>
- 进入文件夹后执行npm安装
将数据模型公开为OData-Service:
- 右键单击电脑文件夹在项目结构中。
- 在新的对话框中,选择新文件从菜单中输入incidentService.cds作为文件名
- 在文件夹中打开新生成的文件。
- 输入下面的脚本来定义OData-Service:
使用scp。从“../db/schema”获取云;service IncidentService{实体ServiceTickets作为cloud.ServiceTickets上的投影;实体CustomerOrders作为cloud.CustomerOrders上的投影;}
现在我们已经定义了一个数据库,让我们向类别表添加一些数据行,这样我们就可以确定它正在按预期运行。CAP嵌入了自动将行上传到数据库的功能,前提是行位于正确的位置并且文件具有正确的结构。
创建一个数据文件夹内的db文件夹中。在该文件夹中,创建一个名为scp.cloud.ServiceTickets.csv有以下条目:
ID;标题;描述;createdate;优先级1;测试;描述;1997-04-02;非常高2;事件;演示;1997-04-02;低
现在我们对另一张表做同样的事情。在同一个文件夹(又名db/data)中,创建以下文件:scp.cloud.CustomerOrders.csv
ID;产品;数量;价格;交货日期1;轮胎;200;44,99;1997-04-02 2;断裂;300;22,99;1997-04-02
项目的文件夹结构应该是这样的:
构建您的CAP项目
- 别跑了cds的过程与CTRL + C如果它已经在运行
- 在终端窗口执行以下命令:出口NODE_ENV =生产
- 当这个命令成功运行后,你将在同一个终端上执行:CDS build/all -clean
该命令将构建所有相关的HANA构件,并将它们放在一个新创建的文件夹中,您现在应该看到这个文件夹名为创。如果展开它,应该会看到2个文件夹DB和深水救生艇。如您所料,如果深入到DB文件夹,您将看到HANADB藏物,如果你钻到深水救生艇,里面也有新文件。
创建HDI-Container并部署它
一旦构建过程完成,您现在将连续执行3个命令,以便在Cloud Foundry上创建HANA HDI容器,部署HANA工件和SRV工件。如果您注意到上面屏幕截图中的最后一行,那么构建过程实际上告诉我们,为了创建HDI容器,我们需要运行哪个命令。
我们将稍微修改一下,使用hanatrial模式环境,但其余部分是相同的。使用它是非常重要的hanatrial在下面的命令中。
- 执行如下命令:create-service han心房hdi-shared database(注意:容器的创建最多需要两分钟,这意味着您应该在执行下一步之前等待,并确保将单词“,,database”替换为您自己的个人项目名称)
从下面的屏幕截图中可以看到,根据您的项目名称提供了一个链接,其中包含您的ID,请务必查找这一行,并确保它与创建HDI容器时匹配。如果你没有使用正确的名称,接下来的两个步骤可能就行不通了!
- 现在执行:cf push -f gen/db -k 256M
创建HDI实例可能需要几分钟,所以如果看到错误提示“服务实例database-db的操作正在进行中”,只需等待几秒钟,然后重试。
- 接下来执行:cf push -f gen/srv -random-route -k 320M
一旦找到为您生成的唯一路由名(Cloud Foundry将生成一些有趣的名称),您应该能够将该URL粘贴到浏览器中,并查看应用程序并验证它是否像现在一样运行并在internet上可用。
打开web浏览器,粘贴新创建的路由,你应该会看到一个熟悉的屏幕,看起来像这样。单击一些表并检查是否所有数据都可用。这个完全部署的服务现在可以在互联网上使用,并使用HANA作为持久层。
第2部分:使用SAP Conversational AI将Chatbot集成到数据库
首先,在SAP会话AI上创建您的帐户在这里。
如果你以前从未使用过这个平台,你也可以阅读我们的文档跟着这个走简单的教程对于初学者来说。
现在您已经访问了CAI帐户,是时候创建一个聊天机器人了。登录完成后,单击从模板开始选择以下参数来创建您的bot项目,然后单击创造。
-
- 名称:hanabot
- 默认语言:英语
- 资料类型:非个人资料
- 存储会话数据:不存储
- 最终用户:不脆弱
- Bot可见性:Public
之后,您就可以创建您的第一个意图了!意图是一种盒子意思相同但构造方式不同的表达式。意图是你的机器人理解的核心。你的每一个意图都代表了你的机器人能够理解的一个想法。
- 下火车中,选择意图
- 点击+创建
- 输入vieworders作为意图名称
- 点击创建的目的
- 输入以下句子作为训练表达式:
- 告诉我我的命令
- 请给我一份订单
如果想提高聊天机器人的准确性,可以添加更多的表达式(PoC为~15,生产为~50)。
为你的聊天机器人项目添加技能:
- 点击构建CAI标签
- 然后在屏幕的左侧点击添加技能
- 它的名字search-for-orders
- 选择技能类型业务
- 点击添加
然后点击触发器触发器是决定bot是否应该执行当前技能的条件。
- 点击旁边的行如果
- 选择@vieworders触发这个技能的意图是什么
- 然后单击保存
点击要求。需求是机器人执行技能时需要的必要信息。
- 定义#号作为ordernumber
- 点击+newreplies如果#ordernumber丢失
- 选择一个文本作为消息类型,输入:,,Please tell me your Order-Number "
点击行动选项卡。行动是你的bot在执行技能时在特定点执行的内容。
- 然后单击添加新消息组
- 然后点击连接外部服务>使用API服务
- 下API的配置中,选择得到
- 输入的目的地。为了选择正确的目的地,使用您之前创建的OData-Service-URL并添加{{memory.ordernumber。raw}}在URL的末尾。在我的例子中,最终的URL看起来像这样:
https://database-srv-shy-cat-cd.cfapps.eu10.hana.ondemand.com/incident/CustomerOrders/ {{memory.ordernumber.raw}}
- 去头选项卡
- 在此输入以下参数:
- 标题:接受——值:* / *
- 要为标题添加第二个字段,您必须单击添加字段
- 接下来点击响应选项卡
- 输入输出随着名称空间
- 点击保存
- 点击发送消息>文本
您可以在这里找到有关订单的其他信息:Product: {{api_service_response.output.body。数量:{{api_service_response.output.body. product}}价格:{{api_service_response.output.body。交付日期:{{api_service_response.output.body.deliveryDate}}
您的聊天机器人应该认识到您希望从OData-Service获取订单数据。用不同可能的客户输入来丰富你的意图。
恭喜你!最终的结果应该是这样的:
更好的业务洞察可见性
通过这个练习,您可以将任何聊天机器人连接到SAP HANA数据库。
借助会话AI的自然语言处理技术和SAP云平台上托管的各种服务,您可以构建企业级聊天机器人连接到SAP后端系统。
有关SAP会话AI的更多信息:
谢谢你的精彩报道。我正试图按照您的步骤将我的机器人连接到hana数据,但在“incidentService”中遇到错误。cd”,上面写着“工件”scp“未找到”。我不是一个开发人员,所以不知道如何解决它
你好理查德,
尝试添加<名称空间scp.cloud;>在schema的开头。光盘文件。这应该行得通。
亲切的问候,
曼努埃尔
嗨,教程提到的引擎部分在哪里?