本文概述
- 创建一个Salesforce爱因斯坦API帐户
- 获取爱因斯坦API令牌
- 动手使用Salesforce Einstein API
- 使用爱因斯坦视觉进行图像预测
- Salesforce爱因斯坦语言:意图和情感
- 使用Salesforce Einstein轻松进行AI
非Salesforce应用程序开发人员可能会错过AI世界中隐藏的瑰宝。
当开发人员考虑将云用于AI时, 他们可能会想到IBM Watson, Microsoft Azure认知服务, Google Cloud或Amazon AI。当他们听说Salesforce爱因斯坦时, 可能会自动假定它仅限于Salesforce开发人员的专业知识。
不是这样!任何应用程序, 无论是否与Salesforce相关, 都可以利用Salesforce已获得的复杂AI云技术。他们通过自己的AI云服务编排Salesforce Einstein进入AI市场。值得注意的是, 这包括语言和图像识别服务。
与其他AI云解决方案一样, 你无需拥有博士学位即可使用下面的重量级技术。在此Salesforce Einstein API教程中, 我将向你展示如何设置帐户并进行首次AI Cloud API调用。对于通话本身, 我们将使用cURL和Postman, 但你也可以使用自己的后端原型或最喜欢的其他任何技术。
从那里开始, 天空才是极限。
创建一个Salesforce爱因斯坦API帐户
要进行Einstein Platform API调用, 你首先需要创建一个Einstein API帐户, 下载密钥, 并使用该密钥生成Salesforce OAuth令牌。只需使用一次该过程即可使用爱因斯坦视觉和爱因斯坦语言。
你可以使用Salesforce或Heroku凭据登录。选择以上任一选项后, 你将被重定向到其各自的登录页面。如果你使用Heroku登录, 则他们需要你与其一起设置信用卡, 并将该服务附加到你的特定Heroku实例上。
如果你是Salesforce的新手, 并且没有Heroku帐户, 则可以使用它们快速设置一个帐户-如果你想通过现有的社交帐户(例如与Google一起注册)注册, 则可以更快。
从这里开始, 我们假设你正在使用Salesforce(无论是否通过社交帐户)而不是Heroku。该过程涉及一些回溯, 因此你需要密切注意这些步骤。
登录Salesforce后, 你将面临一个与爱因斯坦无关的浏览屏幕。此时, 你应该检查电子邮件并单击其验证链接;否则, 下一步将导致错误。
获取爱因斯坦API令牌
下一步是回到最初的Einstein API注册链接, 然后再次尝试使用Salesforce登录按钮。之后, 即使你是在外部授权合作伙伴(例如Google)的帮助下创建帐户的, 也要设置一个新密码, 然后再次将其重定向到游览页面。
现在, 再次第三次返回API注册页面, 然后再次单击Salesforce登录按钮。这次你将获得一个如下所示的页面。即使你可能需要验证电子邮件, 也不要在下载私钥之前离开此页面!如果这样做, 没有他们的支持团队的手动帮助, 你将无法获取私钥。
你可以将文件下载到本地计算机, 也可以将密钥复制并粘贴到文本编辑器中, 然后将文件另存为einstein_platform.pem。
同时, 如前所述, 你还会收到另一封验证邮件, 该邮件是针对爱因斯坦的。也点击该验证链接。
有了私钥, 你就可以生成有时间限制的令牌。从创建数据集到训练模型再到模型预测, 你进行的每个API调用都需要请求标头中的有效OAuth令牌。要获取令牌, 你需要转到其令牌生成器, 并使用与登录时相同的电子邮件地址。粘贴或上传你在上方收到的私钥文件。
动手使用Salesforce Einstein API
通过Salesforce爱因斯坦使用AI云涉及一些有关如何通过上传样本数据来训练其人工智能网络的基本概念。如果听起来不太熟悉, 我的上一个教程将提供一些与Salesforce Einstein一起工作的示例-两者都是针对Einstein Language和Einstein Vision的。
假设你对此感到满意, 我们现在将通过cURL或Postman使用爱因斯坦图像分类REST API。如果你使用的是Postman, 则无论我们在哪里拨打cURL, 都可以使用Postman的导入功能:
假设你遇到了一个有用的业务需求, 即你要根据图像区分智能手机和固定电话, 并使用该谓词来更新潜在客户分数或处理用例。
下一步是创建我们自己的数据集。请注意, 你至少需要分类40个示例。 (如果这比你现在想花的时间更多, 则可以跳到下面的预测部分。只需使用FoodImageClassifier, GeneralImageClassifier, SceneClassifier或MultiLabelImageClassifier的modelId。)
就我们而言, 我们分为两类:智能手机和固定电话。我们创建两个文件夹, 将它们分别标记为智能手机和座机, 然后在每个文件夹中添加图像。然后, 我们创建一个包含这些文件夹的zip文件(例如, 仅zip:7z不起作用)。
接下来是用于创建数据集的该Einstein API端点:
curl -X POST \
-H "Authorization: Bearer <TOKEN>" \
-H "Cache-Control: no-cache" \
-H "Content-Type: multipart/form-data" \
-F "type=image" \
-F "<ZIP_LOCATION>" \
https://api.einstein.ai/v2/vision/datasets/upload/sync
在这里, <ZIP_LOCATION>可以类似于以下示例之一:
- [电子邮件保护] /path/to/your/local/file.zip
- 路径= http://somedomain/file.zip
在Postman中, 如果不导入, 则需要填写标题和正文标签, 如下所示:
上传所有图像需要时间。假设所有图像均已成功上传, 则响应将具有一个数据集ID(重复为主ID, 每个类别一次), 将在以后的调用中使用。
数据集上传后, 你必须使用刚刚上传的数据来训练模型。要训练模型, 请使用以下调用:
curl -X POST \
-H "Authorization: Bearer <TOKEN>" \
-H "Cache-Control: no-cache" \
-H "Content-Type: multipart/form-data" \
-F "name=Landline and SmartPhone Model" \
-F "datasetId=<DATASET_ID>" \
https://api.einstein.ai/v2/vision/train
通常将训练数据集放在他们的队列中, 作为响应, 我们将获得modelId。之后, 我们可以检查另一个端点, 以了解模型是否已经训练:
curl -X GET \
-H "Authorization: Bearer <TOKEN>" \
-H "Cache-Control: no-cache" \
https://api.einstein.ai/v2/vision/train/<YOUR_MODEL_ID>
训练模型后, 你将得到如下响应:
使用爱因斯坦视觉进行图像预测
这是它的核心。训练完模型后, 你现在可以发送图像, 并且模型将返回我们定义的每个类别的概率值。对于当前模型, 我们选择了库存的iPhone X图像进行预测。
对于预测本身, 我们使用以下端点:
curl -X POST \
-H "Authorization: Bearer <TOKEN>" \
-H "Cache-Control: no-cache" \
-H "Content-Type: multipart/form-data" \
-F "<IMAGE_LOCATION>" \
-F "modelId=<YOUR_MODEL_ID>" \
https://api.einstein.ai/v2/vision/predict
这次, <IMAGE_LOCATION>与<ZIP_LOCATION>类似, 但是使用了不同的键, 还有第三个选项:
- [电子邮件保护] /path/to/your/local/file.zip
- sampleLocation = http://somedomain/file.zip
- sampleBase64Content = iVBORw0KGgoAAAANSUhEUgAAAC0 …(换句话说, 如果你要使用此上传方法, 则不需要任何前缀, 仅需原始base 64部分。)
通过查看屏幕快照和概率值, 该模型成功预测出iPhone X图像被归类为智能手机类别。成功!
无论你使用哪种用例, 都将想探索Einstein Vision是否假定你所提供的图像属于你对其进行训练的类别之一。在测试中, 我们发现, 当向上述模型发送帆船图片时, 它是智能手机和座机之间的最佳猜测, 而不是表明两者都不是。换句话说, 它给你作为固定电话或智能手机的帆船图片提供的评分仍加1, 就像输入合法内容一样。
但是, 某些预构建的模型具有”其他”(对于SceneClassifier模型)和”未知”(对于FoodImageClassifier)类别。因此, 有必要针对你的特定环境进行试验, 这样一来, 如果你要提供的图像不符合给定的类别, 就可以知道会发生什么。
还有一个”多标签”类型的模型, 该模型返回所有类别(按概率排序), 并假设适用多个类别(即, 概率之和不等于1)。如果这听起来更像你在做什么, 值得研究一下最新发布的爱因斯坦物体检测。它不仅仅告诉你图像中可能是什么(整体), 它实际上还为你提供了边界框以及预测。这与你在Facebook上自动标记时可能看到的相似, 除了它不仅限于面孔。
Salesforce爱因斯坦语言:意图和情感
如果你想训练自己的模型, 理论上, Salesforce Einstein可以让你同时训练Intent和Sentiment, 但是打扰Intent更为常见。训练Intent模型与我们上面的过程类似, 但是你提供的是两列CSV文件, 而不是图像文件夹, 在A列中包含文本, 在B列中包含相应的类别。(它们还支持TSV或JSON。 )
由于训练步骤大致相同, 因此我们假设你已经用他们在case_routing_intent.csv中提供的训练数据训练了一个爱因斯坦意图模型, 并且可以使用标准的爱因斯坦情感预设模型进行训练。
爱因斯坦的Intent预测调用非常简单:
curl -X POST \
-H "Authorization: Bearer <TOKEN>" \
-H "Cache-Control: no-cache" \
-H "Content-Type: multipart/form-data" \
-F "modelId=<MODEL_ID>" \
-F "document=<TEXT_TO_PREDICT>" \
https://api.einstein.ai/v2/language/intent
在这里, <TEXT_TO_PREDICT>可能类似于”如何获取货件的跟踪号?”
除了可以使用预构建的modelId CommunitySentiment(并注意不同的端点)之外, API调用与Einstein Sentiment相同。
curl -X POST \
-H "Authorization: Bearer <TOKEN>" \
-H "Cache-Control: no-cache" \
-H "Content-Type: multipart/form-data" \
-F "modelId=CommunitySentiment" \
-F "document=How can I get a tracking number for my shipment?" \
https://api.einstein.ai/v2/language/sentiment
两种情况下的JSON输出看起来都与爱因斯坦图像分类的预测响应格式完全相同:主要内容位于与关键概率相关联的数组中, 每个数组元素为你提供一个标签和一个概率。这里的所有都是它的!
使用Salesforce Einstein轻松进行AI
你现在已经了解到, 使用Einstein Vision和Einstein语言是多么简单, 以及Einstein API与除名称之外的其他Salesforce开发人员API没有任何关系。你将用它们创造什么?
评论前必须登录!
注册