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가 인수한 정교한 AI 클라우드 기술을 활용할 수 있습니다. 그들은 AI 클라우드 서비스의 자체 오케스트레이션인 Salesforce Einstein과 함께 AI 시장에 진출했습니다. 특히 여기에는 언어 및 이미지 인식 서비스 제공이 포함됩니다.

다른 AI 클라우드 솔루션과 마찬가지로 강력한 기술을 사용하기 위해 박사 학위가 필요하지 않습니다. 이 Salesforce Einstein API 자습서에서는 계정을 설정하고 처음으로 AI 클라우드 API를 호출하는 방법을 보여 드리겠습니다. 호출 자체의 경우 cURL 및 Postman을 사용하지만 자신의 백엔드 프로토타입 또는 가장 편안하게 사용할 수 있는 기타 기술을 사용할 수도 있습니다.

거기에서 하늘의 한계입니다.

Salesforce Einstein API 계정 만들기

Einstein 플랫폼 API를 호출하려면 먼저 Einstein API 계정을 만들고 키를 다운로드하고 해당 키를 사용하여 Salesforce OAuth 토큰을 생성해야 합니다. Einstein Vision과 Einstein Language를 모두 사용하려면 이 프로세스를 한 번만 수행하면 됩니다.

Salesforce Einstein을 사용하면 소셜 인증 또는 Heroku를 통해 직접 가입할 수 있습니다.

Salesforce 또는 Heroku 자격 증명을 사용하여 로그인할 수 있습니다. 위의 옵션 중 하나를 선택하면 해당 로그인 페이지로 리디렉션됩니다. Heroku로 로그인하면 신용 카드를 설정하고 특정 Heroku 인스턴스에 서비스를 연결해야 합니다.

Heroku Einstein 통합 페이지

Salesforce를 처음 사용하고 Heroku 계정이 없는 경우 계정을 설정하는 것이 상당히 빠릅니다. Google과 같은 기존 소셜 계정을 통해 등록하려는 경우 훨씬 더 빠릅니다.

여기에서 Heroku 대신 Salesforce(소셜 계정을 통해 또는 사용하지 않음)를 사용하고 있다고 가정합니다. 이 프로세스에는 약간의 역추적이 포함되므로 이 단계에 세심한 주의를 기울여야 합니다.

Salesforce 로그인 페이지입니다.

Salesforce에 로그인하면 Einstein과 별로 관련이 없는 둘러보기 화면이 표시됩니다. 이 시점에서 이메일을 확인하고 확인 링크를 클릭해야 합니다. 그렇지 않으면 다음 단계에서 오류가 발생합니다.

Einstein API 토큰 받기

다음 단계는 초기 Einstein API 가입 링크로 돌아가 Salesforce 로그인 버튼을 다시 시도하는 것입니다. 그 후에는 Google과 같은 외부 인증 파트너의 도움으로 계정을 만든 경우에도 새 비밀번호를 설정하고 다시 둘러보기 페이지로 리디렉션됩니다.

이제 API 등록 페이지로 다시 원을 그리며 Salesforce 로그인 버튼을 다시 클릭합니다. 이번에는 아래와 같은 페이지가 나타납니다. 이메일을 확인해야 한다고 표시되더라도 개인 키를 다운로드하기 전에 이 페이지를 떠나지 마십시오 ! 그렇게 하면 지원 팀의 수동 도움 없이 개인 키를 얻을 수 있는 방법이 없습니다.

가입 과정에서 Einstein API 개인 키를 다운로드할 수 있는 기회는 단 한 번뿐입니다.

파일을 로컬 시스템에 다운로드하거나 키를 복사하여 텍스트 편집기에 붙여넣고 파일을 einstein_platform.pem 으로 저장할 수 있습니다.

한편, 언급한 바와 같이 또 다른 확인 이메일이 기다리고 있을 것입니다. 이 이메일은 아인슈타인 전용 이메일입니다. 해당 확인 링크도 클릭하십시오.

이제 개인 키가 있으므로 시간 제한 토큰을 생성할 수 있습니다. 데이터 세트 생성, 학습 모델, 모델 예측에 이르기까지 수행하는 모든 API 호출에는 요청 헤더에 유효한 OAuth 토큰이 필요합니다. 토큰을 받으려면 토큰 생성기로 이동하여 로그인에 사용한 것과 동일한 이메일 주소를 사용해야 합니다. 위에서 받은 개인 키 파일을 붙여넣거나 업로드하세요.

개인 키를 사용하여 Einstein Platform Services OAuth 토큰 생성.

Salesforce Einstein API 실습

Salesforce Einstein을 통해 AI 클라우드를 사용하려면 샘플 데이터를 업로드하여 인공 지능 네트워크를 훈련하는 방법에 대한 몇 가지 기본 개념이 필요합니다. 익숙하지 않은 경우 이전 자습서에서 Einstein Language 및 Einstein Vision 모두에 대해 Salesforce Einstein 작업에 대한 몇 가지 예를 제공합니다.

이에 익숙해지면 이제 cURL 또는 Postman을 통해 Einstein Image Classification REST API를 사용합니다. Postman을 사용하는 경우 cURL 호출이 있는 곳마다 Postman의 가져오기 기능을 사용할 수 있습니다.

cURL 문을 Postman으로 가져오기.

이미지를 기반으로 스마트폰과 유선 전화를 구별하려는 유용한 비즈니스 요구 사항을 발견하고 해당 조건을 사용하여 리드 점수를 업데이트하거나 사용 사례를 처리하려고 한다고 가정합니다.

다음 단계는 자체 데이터 세트를 만드는 것입니다. 이미 분류된 예가 40개 이상 필요합니다. (현재 투자할 시간보다 더 많은 시간이 소요되는 경우 아래 예측 섹션으로 건너뛸 수 있습니다. FoodImageClassifier , GeneralImageClassifier , SceneClassifier 또는 MultiLabelImageClassifiermodelId 를 사용하기만 하면 됩니다.)

우리의 경우 스마트폰과 유선 전화의 두 가지 범주가 있습니다. 스마트폰과 유선 전화로 레이블이 지정된 두 개의 폴더를 만들고 각 폴더에 이미지를 추가합니다. 그런 다음 이러한 폴더가 포함된 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> ZIP_LOCATION> 과 유사하지만 다른 키가 사용되며 세 번째 옵션이 있습니다.

  1. sampleContent=@/path/to/your/local/file.zip
  2. sampleLocation=http://somedomain/file.zip
  3. sampleBase64Content=iVBORw0KGgoAAAANSUhEUgAAAC0... (즉, 이 업로드 방법을 사용하려는 경우 접두사가 필요하지 않고 원시 기본 64 부분만 필요합니다.)

Postman을 통해 Einstein Vision 예측 얻기.

모델은 스크린샷과 확률 값을 보고 iPhone X 이미지가 스마트폰 범주에 분류되어 있음을 성공적으로 예측했습니다. 성공!

사용 사례가 무엇이든 Einstein Vision은 교육한 범주 중 하나에 속하는 이미지를 제공한다고 가정하는지 여부를 조사하고 싶을 것입니다. 테스트에서 우리는 우리가 위의 모델에 범선 사진을 보낼 때 스마트폰과 유선 전화 중 하나가 아닌 것 같다는 표시가 아니라 가장 잘 추측한다는 것을 발견했습니다. 다시 말해, 유선 또는 스마트폰인 요트 사진에 대해 제공하는 등급은 합법적인 입력과 마찬가지로 여전히 1까지 추가됩니다.

그러나 미리 빌드된 일부 모델에는 Other ( SceneClassifier 모델의 경우) 및 UNKNOWN ( FoodImageClassifier 의 경우)과 같은 범주가 있습니다. 따라서 주어진 범주에 맞지 않는 이미지를 제공하려는 경우 예상되는 결과를 알 수 있도록 특정 컨텍스트에 대해 실험해 볼 가치가 있습니다.

또한 "다중 레이블" 유형의 모델도 있습니다. 이 모델은 여러 범주가 적용된다는 가정 하에 확률에 따라 정렬된 모든 범주를 반환합니다. 즉, 확률의 합이 1이 되지 않습니다. , 새로 출시된 Einstein Object Detection을 살펴보는 것이 좋습니다. 이미지에 무엇이 있을지(전체적으로) 알려주는 대신 실제로 예측과 함께 경계 상자를 제공합니다. 이는 얼굴에 국한되지 않는다는 점을 제외하고 Facebook에서 자동 태그 추가 기능과 유사합니다.

Salesforce Einstein 언어: 의도와 감정

자신의 모델을 훈련시키려는 경우 Salesforce Einstein을 사용하면 이론적으로 Intent와 Sentiment를 모두 훈련할 수 있지만 Intent 훈련만 귀찮게 하는 것이 훨씬 더 일반적입니다. Intent 모델 교육은 위에서 살펴본 것과 유사하지만 이미지 폴더 대신 텍스트가 A열에 있고 해당 범주가 B열에 있는 2열 CSV 파일을 제공합니다. (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 호출은 미리 빌드된 modelId CommunitySentiment 를 사용할 수 있다는 점을 제외하고 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 출력은 Einstein Image Classification의 예측 응답 형식과 똑같습니다. 주요 물질은 키 probabilities 과 연결된 배열에 있으며 각 배열 요소는 레이블과 확률을 제공합니다. 그게 다야!

Salesforce Einstein을 통한 손쉬운 AI

이제 Einstein Vision 및 Einstein Language를 사용하는 것이 얼마나 간단한지, 그리고 Einstein API가 이름을 제외하고 Salesforce 개발자 API의 나머지 부분과 아무 관련이 없다는 것을 보았습니다. 그들과 함께 무엇 만들 것인가?