以sap leonardo作为关键字在微信上搜索,能搜到不少文章。但是我浏览了一下,好像没有发现有从具体编程角度上来介绍的。所以我就贡献一篇。
需求
开发一个Java程序,用户可以指定一张图片,该Java程序调用SAP Leonardo上训练好的机器学习API,该API会识别该图片,给用户返回一个文本信息,告诉用户识别结果。
- 访问https://api.sap.com, 点击API:
SAP Leonardo Machine Learning - Functional Services
点击Product Image Classification API:
会看到如下界面。该界面包含了这个API的Model Schema介绍,即您调用API之后,返回的响应结构里包含哪些字段,以及对应的类型(对象或者数组)。界面里包含了一个小型的API调用控制台,您可以直接控制台里选择一个本地图形文件,然后点击Try it out按钮来体验一下API的效果。
例如我使用了下面这张图片进行测试:
在控制台里看到请求处理成功,API判断出来该图片有97%的可能性是一台notebook。
下面我们需要使用Java程序来调用API。
- 前一步骤的API控制台的右上角有一个按钮Download SDK,点击之后将SDK下载到本地:
可以看到该SDK是一个基于Gradle的Java项目。您需要下载Maven和Gradle并完成环境变量的配置,这些配置非常基础,在网上有大量资料,这里不再重复。
完成配置后,使用Eclipse的import功能,将SDK导入到Eclipse里。
导入完成后如图。红色区域是SDK自带的代码,蓝色区域是Jerry自己手动创建的代码,用于调用API并打印结果。
双击根目录下的pom.xml, 将如下依赖关系维护进去:
在项目根目录下执行Maven命令 mvn install, 确保项目成功build。至此,您可以开始编写Java代码使用SAP提供的JDK来调用该机器学习API了。
- 使用下图的Java代码调用SDK去消费API。SDK封装了底层HTTP请求的发送和响应的解析等细节,使用起来非常简捷。
为简单起见,上图13行我将本地图片文件的绝对地址硬编码进去。上图第八行硬编码的API key来自API控制台:
至此,大功告成,运行程序。。。。。。什么情况?
错误分析
仔细看过错误消息,很快Jerry就发现了问题出在哪里。上图蓝色下划线就暗示了错误根源。SAP SDK使用了Google发布的一个开源Java库Gson,将API返回的响应反序列化成Java对象。有了Gson,应用程序开发人员无需重复造轮子,只需要定义一些Java类,作为容器存储Gson反序列化的执行结果即可。
我们再回到API控制台,API响应结构里request字段的类型声明为string。
然而通过测试发现,request字段的内容实际是一个Json对象:
从http://api.sap.com下载的SDK里的代码,Gson容器类Response.java里声明的request字段类型为String,而非对象,因此Gson会抛异常:Expected a string but was BEGIN_OBJECT at line 31 column 15 path $.request
知道了问题根源,改起来就容易了。新建一个Gson容器类Request.java, 然后按照控制台里观察到的request字段的结构,为Request.java维护对应的成员变量。
例如tenantName在API响应结构里是一个String,因此在Java类里的类型是String;files在API响应结构里是一个数组,因此在Java类里的类型为List<String>。
调整完毕之后再次执行,能看到期望的输出结果:通过SDK调用API并打印结果。
如果您不愿意自己手动修改,可以直接从我的github下载修改之后的代码,只需要用您自己的API key替换掉代码中硬编码的key即可。
https://github.com/i042416/ProductImageMLService
更多Leonardo精彩,尽在https://api.sap.com!
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关推荐
sap press doc 解压密码:abap_developer
SAP智能机器人流程自动化解决方案是SAP为了适应企业数字化转型趋势推出的一种技术方案,旨在帮助企业高效自动化处理复杂但低附加值的重复性流程,从而释放人力资源,聚焦于更高价值的工作,如提升产品和服务质量,...
sap press doc 解压密码:abap_developer
sap press doc 解压密码:abap_developer
此来源已使用swagger代码生成( )生成com.sap.apibhub.sdk如果要自定义或增强生成的项目,请将项目导入到您选择的IDE中,然后按照下面给出的说明来构建,部署和使用该库。要求构建API客户端库需要安装 。安装要将...
SAP Leonardo 是 SAP 推出的企业创新动力平台,它整合了诸如 SAP S/4HANA、SAP Hybris、SAP SuccessFactors、Concur、SAP Fieldglass、SAP Ariba 等一系列解决方案,并结合物联网(IoT)、机器学习、大数据、区块链...
TUM的SAP课程的#Web应用程序项目。用Javascript&SAP UI5和Python&Flask编写。 在这个项目中,我们正在尝试实现基于文档和自然语言处理方法的自动标记等功能。 另一个功能是搜索功能,该功能允许在本地数据库中搜索...
"Leonardo"是一款备受瞩目的字体,它在设计领域中被广泛应用,特别是在数字设计、图形设计和排版中。这款字体以其独特的风格和易读性脱颖而出,为设计师提供了丰富的创意选项。 字体是计算机用户与文本交互的核心...
6. 最新发展趋势:介绍SAP的最新产品和技术,如S/4HANA、Cloud SAP、 Leonardo(人工智能和机器学习)等,帮助读者跟上行业的步伐。 电子书的下载链接为用户提供了一个方便的学习渠道,可以随时随地查阅资料,提升...
12. ** Leonardo**:SAP的创新平台,集成了人工智能、机器学习、物联网和区块链技术,帮助企业实现数字化转型。 压缩包中的"SAP中文词汇.xls"文件很可能包含了上述各个概念的中文解释和术语对照,对于学习和理解SAP...
arduino leonardo 电路图
- `1115-Arduino_Leonardo-REV3b.pcb` 是Arduino Leonardo的PCB布局文件,通常使用Eagle软件打开。这个文件展示了电路板的实际布局,包括元件的位置、走线路径和焊盘设计。通过分析PCB文件,用户可以了解如何优化...
6. **智能企业**:SAP利用人工智能(AI)、机器学习(ML)和大数据分析技术,推动企业数字化转型,实现预测性分析、自动化决策和优化业务流程。 7. **合作伙伴生态系统**:SAP拥有广泛的合作伙伴网络,包括系统集成...
Mode 2则专注于创新,强调敏捷性和速度,它涵盖了最新分析技术、新型数据类型以及像SAP Leonardo这样的解决方案,后者整合了物联网、机器学习和行业特定的应用。 SAP现代数据平台通过集成各种服务和工具,如SAP ...
此外,SAP Leonardo引入了人工智能和机器学习,帮助企业自动化流程,提高运营效率。 8. **合规性与可持续性**:在日益关注社会责任的今天,SAP解决方案可以帮助企业实现合规生产,追踪供应链中的环保指标,推动可...
8. **项目实施方法论**:SAP的实施通常遵循 ASAP(Accelerated SAP)或 Leonardo Methodology,理解这些方法论的阶段和关键活动,能够显示你的项目管理能力。 9. **业务流程知识**:除了技术层面,还需要具备对不同...
* SAP Leonardo:提供了人工智能、机器学习和物联网等技术,实现智能制造企业的智能化和自动化。 * SAP Cloud Platform:提供了云计算平台,实现智能制造企业的数字化和网络化。 知识点3:SAP智能制造行业解决方案...
为了帮助更多企业利用机器学习,SAP开发了SAP Leonardo Machine Learning,这是一种自动建模的解决方案,它利用了结构风险最小化(SRM)的专利算法来标准化和产业化预测模型。这种自动化建模的能力使得即使没有传统...
Leonardo.Spectrum 使用简介 Leonardo.Spectrum 是 Mentor 公司出品的一款 HDL 逻辑综合软件,它提供了三种逻辑综合方式:SynthesisWizard(综合向导)、Quick Setup(快速完成)和 FlowTabs(详细流程)。在本文中...