Salesforce Einstein AI:API 教程

已發表: 2022-03-11

非 Salesforce 應用程序開發人員可能會錯過 AI 世界中隱藏的寶石。

當開發人員想到將雲用於 AI 時,他們可能會想到 IBM Watson、Microsoft Azure Cognitive Services、Google Cloud 或 Amazon AI。 當他們聽說 Salesforce Einstein 時,他們可能會自動認為它僅限於 Salesforce 開發人員專業化。

不是這樣! 任何應用程序,無論是否與 Salesforce 相關,都可以利用 Salesforce 獲得的複雜人工智能雲技術。 他們通過自己的人工智能雲服務編排 Salesforce Einstein 進入了人工智能市場。 值得注意的是,這包括提供語言和圖像識別服務。

與其他 AI 雲解決方案一樣,您無需擁有博士學位即可使用其下的重量級技術。 在這個 Salesforce Einstein API 教程中,我將向您展示如何設置一個帳戶並進行您的第一個 AI 雲 API 調用。 對於調用本身,我們將使用 cURL 和 Postman,但您也可以使用自己的後端原型或您最熟悉的任何其他技術。

從那裡,天空是極限。

創建 Salesforce Einstein API 帳戶

要進行 Einstein Platform API 調用,您首先需要創建 Einstein API 帳戶、下載密鑰並使用該密鑰生成 Salesforce OAuth 令牌。 該過程只需執行一次即可同時使用 Einstein Vision 和 Einstein Language。

Salesforce Einstein 允許您通過社交身份驗證或 Heroku 直接註冊。

您可以使用 Salesforce 或 Heroku 憑據登錄。 選擇上述任何選項後,您將被重定向到各自的登錄頁面。 如果您使用 Heroku 登錄,他們會要求您使用他們設置信用卡並將服務附加到您的特定 Heroku 實例。

Heroku Einstein 集成頁面

如果您是 Salesforce 新手並且沒有 Heroku 帳戶,那麼在他們那裡設置一個帳戶會相當快——如果您想通過一個預先存在的社交帳戶(例如 Google 的帳戶)進行註冊,則速度會更快。

我們將從這裡假設您使用的是 Salesforce(通過或不通過社交帳戶)而不是 Heroku。 該過程涉及一些回溯,因此您需要密切注意這些步驟。

Salesforce 登錄頁面。

登錄 Salesforce 後,您將看到與 Einstein 沒有太大關係的導覽屏幕。 此時,您應該檢查您的電子郵件並單擊他們的驗證鏈接; 否則,下一步將導致錯誤。

獲取 Einstein API 令牌

下一步是回到最初的 Einstein API 註冊鏈接並再次嘗試 Salesforce 登錄按鈕。 之後,您將設置一個新密碼(即使您是在 Google 等外部授權合作夥伴的幫助下創建帳戶的)並再次被重定向到遊覽頁面。

現在,第三次返回 API 註冊頁面,然後再次單擊 Salesforce 登錄按鈕。 這次你會得到一個如下所示的頁面。 在下載您的私鑰之前不要離開此頁面,即使它可能會說您需要驗證您的電子郵件! 如果這樣做,如果沒有他們的支持團隊的手動幫助,將無法獲得您的私鑰。

在註冊過程中,您只有一次機會下載您的 Einstein API 私鑰。

您可以將文件下載到本地計算機,也可以將密鑰複製並粘貼到文本編輯器中,然後將文件另存為einstein_platform.pem

同時,如前所述,您將收到另一封驗證電子郵件,這是 Einstein 專用的。 也單擊該驗證鏈接。

現在您有了私鑰,就可以生成限時令牌。 您進行的每個 API 調用(從創建數據集、訓練模型到模型預測)都需要在請求標頭中包含有效的 OAuth 令牌。 要獲取令牌,您需要轉到他們的令牌生成器並使用您登錄時使用的相同電子郵件地址。粘貼或上傳您在上面收到的私鑰文件。

使用您的私鑰生成 Einstein Platform Services OAuth 令牌。

親身體驗 Salesforce Einstein API

通過 Salesforce Einstein 使用 AI 雲涉及如何通過上傳樣本數據來訓練他們的人工智能網絡的一些基本概念。 如果這聽起來不熟悉,我之前的教程提供了一些使用 Salesforce Einstein 的示例,包括 Einstein Language 和 Einstein Vision。

假設您對此感到滿意,我們現在將通過 cURL 或 Postman 使用 Einstein 圖像分類 REST API。 如果您使用 Postman,無論我們在哪裡調用 cURL,您都可以使用 Postman 的導入功能:

將 cURL 語句導入 Postman。

假設您遇到了一個有用的業務需求,您希望根據圖像區分智能手機和固定電話,並且使用該預測來更新您的潛在客戶分數或處理您的用例。

下一步是創建我們自己的數據集。 請注意,您至少需要 40 個已分類的示例。 (如果這比您目前想要投入的時間更多,您可以跳到下面的預測部分。只需使用modelIdGeneralImageClassifierSceneClassifierMultiLabelImageClassifierFoodImageClassifier 。)

在我們的例子中,我們有兩類:智能手機和固定電話。 我們創建兩個文件夾,將它們標記為智能手機和固定電話,並在每個文件夾中添加圖像。 然後我們創建一個包含這些文件夾的 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>可以像以下任何一個示例:

  1. data=@/path/to/your/local/file.zip
  2. path=http://somedomain/file.zip

在 Postman 中,無需導入,您需要填寫標題和正文選項卡,如下所示:

在 Postman 中填寫標題。

在 Postman 中填寫正文。

上傳所有圖像需要時間。 假設所有圖像都成功上傳,響應將有一個datasetId (作為主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 

通過 Postman 訓練您的 Einstein Vision 模型。

數據集的訓練通常放在他們的隊列中,作為響應,我們將獲得modelId 。 之後,我們可以檢查另一個端點以了解模型是否已經過訓練:

 curl -X GET \ -H "Authorization: Bearer <TOKEN>" \ -H "Cache-Control: no-cache" \ https://api.einstein.ai/v2/vision/train/<YOUR_MODEL_ID>

訓練模型後,您會得到如下響應:

通過 Postman 檢查模型的訓練進度。

使用 Einstein Vision 進行圖像預測

這是它的核心。 訓練模型後,您現在可以發送圖像,模型將返回我們定義的每個類別的概率值。 對於當前模型,我們選擇了一張庫存 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> ,但使用了不同的鍵,還有第三種選擇:

  1. sampleContent=@/path/to/your/local/file.zip
  2. sampleLocation=http://somedomain/file.zip
  3. sampleBase64Content=iVBORw0KGgoAAAANSUhEUgAAAC0... (換句話說,如果你想使用這種上傳方法,你不需要任何前綴,只需要原始的 base 64 部分。)

通過 Postman 獲得 Einstein Vision 預測。

查看截圖和概率值,模型成功預測 iPhone X 圖像被歸類為智能手機類別。 成功!

無論您的用例是什麼,您都需要探索 Einstein Vision 是否假設您提供的圖像屬於您訓練它的類別之一。 在測試中,我們發現當我們向上述模型發送一張帆船的照片時,它在智能手機和固定電話之間做出了最好的猜測,而不是表明兩者似乎都不是。 換句話說,它為您的帆船圖片作為固定電話或智能手機給出的評分加起來仍然為 1,就像使用合法輸入時一樣。

但是,一些預建模型具有諸如Other (對於SceneClassifier模型)和UNKNOWN (對於FoodImageClassifier )等類別。 因此,值得針對您的特定上下文進行試驗,這樣您就可以知道如果您想要為其提供不符合給定類別的圖像會發生什麼。

還有“多標籤”類型的模型,它返回所有類別,按概率排序,假設多個類別適用——即概率加起來不等於 1。如果這聽起來更像你在做什麼,值得研究新發布的愛因斯坦物體檢測。 它不僅僅是告訴你圖像中可能包含的內容——總體而言——它實際上為你提供了邊界框和預測。 這類似於您可能在 Facebook 上看到的自動標記,但它不僅限於面孔。

Salesforce 愛因斯坦語言:意圖和情感

如果你想訓練自己的模型,Salesforce Einstein 理論上可以讓你訓練 Intent 和 Sentiment,但更常見的是只訓練 Intent。 訓練一個 Intent 模型與我們上面所經歷的類似,但您提供的不是圖像文件夾,而是一個兩列 CSV 文件,A 列中包含文本,B 列中包含相應的類別。(它們還支持 TSV 或 JSON。 )

由於訓練步驟基本相同,因此我們假設您已經使用case_routing_intent.csv中提供的訓練數據訓練了 Einstein Intent 模型,並且可以使用 Einstein Sentiment 的標準預構建模型。

Einstein 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>可能類似於“我怎樣才能獲得我的貨件的跟踪號?”

API 調用與 Einstein Sentiment 相同,只是您可以使用預構建的 modelId CommunitySentiment (並註意不同的端點):

 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 輸出看起來與 Einstein 圖像分類的預測響應格式完全相同:主要內容位於與關鍵probabilities相關聯的數組中,每個數組元素都為您提供標籤和概率。 這裡的所有都是它的!

Salesforce Einstein 的簡單 AI

您現在已經看到使用 Einstein Vision 和 Einstein Language 是多麼簡單,以及 Einstein API 如何與其他 Salesforce 開發人員 API 沒有任何關係,除了名稱。 會用他們創造什麼?