Salesforce Einstein AI: Un tutorial API

Publicat: 2022-03-11

Dezvoltatorii de aplicații non-Salesforce pot pierde o bijuterie ascunsă în lumea AI.

Când dezvoltatorii se gândesc să folosească cloud-ul pentru AI, s-ar putea gândi la IBM Watson, Microsoft Azure Cognitive Services, Google Cloud sau Amazon AI. Când aud de Salesforce Einstein, ar putea presupune automat că se limitează la specializarea pentru dezvoltatori Salesforce.

Nu asa! Orice aplicație, indiferent dacă este legată de Salesforce sau nu, poate folosi tehnologiile sofisticate AI cloud pe care Salesforce le-a achiziționat. Au intrat pe piața AI cu Salesforce Einstein, propria lor orchestrare de servicii cloud AI. În special, acestea includ oferte de servicii de recunoaștere a limbii și a imaginilor.

Ca și în cazul altor soluții cloud AI, nu trebuie să aveți un doctorat pentru a utiliza tehnologiile grele de dedesubt. În acest tutorial Salesforce Einstein API, vă voi arăta cum să configurați un cont și să efectuați primele apeluri AI cloud API. Pentru apelurile în sine, ne vom juca cu cURL și Postman, dar ai putea, de asemenea, propriul tău prototip back-end sau orice altă tehnologie cu care ești cel mai confortabil.

De acolo, cerul este limita.

Crearea unui cont API Salesforce Einstein

Pentru a efectua apeluri API Einstein Platform, trebuie mai întâi să creați un cont API Einstein, să descărcați cheia și să generați un jeton Salesforce OAuth folosind cheia respectivă. Procesul trebuie făcut o singură dată pentru a putea folosi atât Einstein Vision, cât și Einstein Language.

Salesforce Einstein vă permite să vă înscrieți direct, prin autentificare socială sau prin Heroku.

Vă puteți autentifica folosind acreditările Salesforce sau Heroku. La selectarea oricăreia dintre opțiunile de mai sus, veți fi redirecționat către paginile lor de conectare respective. Dacă vă conectați cu Heroku, vă solicită să configurați un card de credit cu ei și să atașați serviciul unei anumite instanțe Heroku a dvs.

Pagina de integrare Heroku Einstein

Dacă sunteți nou în Salesforce și nu aveți un cont Heroku, configurarea unui cont cu ei este destul de rapidă - chiar mai rapidă dacă doriți să vă înscrieți printr-un cont social preexistent, cum ar fi unul cu Google.

Vom presupune de aici că utilizați Salesforce (prin intermediul unui cont social sau nu) în loc de Heroku. Procesul implică un pic de întoarcere, așa că veți dori să acordați o atenție deosebită acestor pași.

Pagina de conectare Salesforce.

Odată ce te-ai conectat la Salesforce, te vei confrunta cu un ecran de tur care nu are prea multe de-a face cu Einstein. În acest moment, ar trebui să vă verificați e-mailul și să faceți clic pe linkul lor de verificare; în caz contrar, următorul pas va avea ca rezultat o eroare.

Obținerea unui token API Einstein

Următorul pas este să vă întoarceți la acel link inițial de înscriere la API-ul Einstein și să încercați din nou butonul de conectare Salesforce. După aceea, veți seta o nouă parolă – chiar dacă v-ați creat contul cu ajutorul unui partener de autorizare extern precum Google – și veți fi redirecționat, din nou, către pagina turului.

Acum, întoarceți-vă a treia oară la pagina de înscriere la API și faceți clic din nou pe butonul de conectare Salesforce. De data aceasta, veți primi o pagină așa cum se arată mai jos. Nu părăsiți această pagină înainte de a descărca cheia privată , chiar dacă se poate spune că trebuie să vă verificați adresa de e-mail! Dacă o faci, nu va exista nicio modalitate de a obține cheia privată fără ajutorul manual din partea echipei de asistență.

Aveți o singură șansă de a descărca cheia privată Einstein API în timpul procesului de înregistrare.

Puteți fie să descărcați fișierul pe computerul dvs. local, fie să copiați și să lipiți cheia într-un editor de text și să salvați fișierul ca einstein_platform.pem .

Între timp, după cum am menționat, veți avea în așteptare un alt e-mail de verificare, acesta fiind specific lui Einstein. Dați clic și pe acel link de verificare.

Acum că aveți o cheie privată, puteți genera jetoane limitate în timp. Fiecare apel API pe care îl efectuați, de la crearea seturi de date, la modele de antrenament, la predicția modelului, are nevoie de un token OAuth valid în antetul solicitării. Pentru a obține simbolul, trebuie să accesați generatorul de simboluri și să folosiți aceeași adresă de e-mail pe care ați folosit-o pentru a vă conecta. Lipiți sau încărcați fișierul cheie privată pe care l-ați primit mai sus.

Generarea unui token OAuth Einstein Platform Services folosind cheia privată.

Practic cu API-ul Salesforce Einstein

Utilizarea cloudului AI prin Salesforce Einstein implică câteva concepte de bază despre cum să-și antreneze rețeaua de inteligență artificială prin încărcarea de date mostre. Dacă nu vă sună familiar, tutorialul meu anterior oferă câteva exemple de lucru cu Salesforce Einstein — atât pentru Einstein Language, cât și pentru Einstein Vision.

Presupunând că vă simțiți confortabil, acum vom folosi API-ul REST pentru clasificarea imaginilor Einstein prin cURL sau Postman. Dacă utilizați Postman, oriunde avem un apel cURL, puteți utiliza funcția de import Postman:

Importul instrucțiunilor cURL în Postman.

Să presupunem că ați întâlnit o cerință de afaceri utilă în care doriți să distingeți între smartphone și telefonul fix pe baza imaginilor și, folosind această predicție, doriți să vă actualizați scorul de clienți potențiali sau să vă procesați cazul de utilizare.

Următorul pas este crearea propriului nostru set de date. Vă rugăm să rețineți că aveți nevoie de cel puțin 40 de exemple care au fost deja clasificate. (Dacă este mai mult timp decât doriți să investiți în acest moment, puteți sări la secțiunea de predicții de mai jos. Pur și simplu utilizați un modelId FoodImageClassifier , GeneralImageClassifier , SceneClassifier sau MultiLabelImageClassifier .)

În cazul nostru, avem două categorii: smartphone-uri și telefoane fixe. Creăm două foldere, etichetându-le ca smartphone-uri și telefoane fixe și adăugăm imagini în fiecare folder. Apoi creăm un fișier zip (numai zip: 7z nu funcționează, de exemplu) care conține aceste foldere.

Acest punct final al API-ului Einstein, care este utilizat pentru a crea seturi de date, este următorul:

 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

Aici, <ZIP_LOCATION> poate fi ca oricare dintre aceste exemple:

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

În Postman, fără a importa, ar trebui să completați filele antet și corp, așa cum se arată mai jos:

Completarea antetelor în Postman.

Completarea cadavrului în Postman.

Va dura timp până când toate imaginile sunt încărcate. Presupunând că toate imaginile sunt încărcate cu succes, răspunsul va avea un datasetId (repetat ca id principal și o dată pe categorie), care va fi folosit în apelurile viitoare.

Odată ce setul de date este încărcat, trebuie să antrenați modelul folosind datele pe care tocmai le-ați încărcat. Pentru a antrena modelul, utilizați următorul apel:

 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 

Antrenează-ți modelul Einstein Vision prin Postman.

Antrenamentul setului de date este plasat în mod normal în coada lor și, ca răspuns, vom obține modelId . După aceea, putem verifica un alt punct final pentru a ști dacă modelul a fost antrenat sau nu încă:

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

Când modelul este antrenat, veți primi un răspuns ca acesta:

Verificarea progresului de antrenament al modelului dvs. prin Postman.

Utilizarea Einstein Vision pentru predicția imaginilor

Iată inima. Odată ce modelul este antrenat, acum puteți trimite o imagine, iar modelul va returna valori de probabilitate pentru fiecare categorie pe care am definit-o. Pentru modelul actual, am ales o imagine stoc iPhone X pentru predicție.

Pentru predicția în sine, folosim următorul punct final:

 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

De data aceasta, <IMAGE_LOCATION> este similar cu <ZIP_LOCATION> , dar sunt folosite chei diferite și există o a treia opțiune:

  1. sampleContent=@/path/to/your/local/file.zip
  2. sampleLocation=http://somedomain/file.zip
  3. sampleBase64Content=iVBORw0KGgoAAAANSUhEUgAAAC0... (Cu alte cuvinte, nu aveți nevoie de niciun prefix, doar partea brută de bază 64, dacă doriți să utilizați această metodă de încărcare.)

Obținerea unei predicții Einstein Vision prin Postman.

Privind captura de ecran și valorile de probabilitate, modelul a prezis cu succes că imaginea iPhone X este clasificată în categoria smartphone-urilor. Succes!

Oricare ar fi cazul dvs. de utilizare, veți dori să explorați dacă Einstein Vision presupune că furnizați o imagine care se încadrează într-una dintre categoriile în care ați antrenat-o. În timpul testării, am descoperit că atunci când i-am trimis modelului de mai sus o poză cu o barcă cu pânze, a făcut o ghicire optimă între smartphone-uri și telefoane fixe, mai degrabă decât să indice că nici nu pare să fie. Cu alte cuvinte, evaluările pe care le oferă pentru imaginea cu barca cu pânze, fiind un telefon fix sau un smartphone, se adună în continuare până la 1, la fel cum ar face-o cu o intrare legitimă.

Cu toate acestea, unele modele prefabricate au categorii precum Other (pentru modelul SceneClassifier ) ​​și UNKNOWN (pentru FoodImageClassifier ). Prin urmare, merită să experimentați pentru contextul dvs. particular, astfel încât să puteți ști la ce să vă așteptați dacă doriți să-i furnizați imagini care nu se potrivesc categoriilor date.

Există, de asemenea, tipul de model „multi-etichetă”, care returnează toate categoriile, sortate după probabilitate, cu presupunerea că se aplică mai multe categorii - adică, probabilitățile nu se adună la 1. Dacă asta sună mai mult ca ceea ce faci , ar merita să ne uităm la nou lansat Einstein Object Detection. În loc să vă spună doar ce ar putea fi într-o imagine – în general – vă oferă de fapt casete de delimitare împreună cu predicțiile. Acest lucru este similar cu ceea ce ați văzut cu etichetarea automată pe Facebook, cu excepția faptului că nu se limitează la fețe.

Limbajul Salesforce Einstein: intenție și sentiment

Dacă doriți să vă antrenați propriul model, Salesforce Einstein vă permite teoretic să antrenați atât Intenția, cât și Sentimentul, dar este mult mai obișnuit să vă deranjați doar instruirea Intenției. Antrenarea unui model Intent este similar cu ceea ce am trecut mai sus, dar în loc de foldere de imagini, furnizați un fișier CSV cu două coloane, cu texte în coloana A și categoriile corespunzătoare acestora în coloana B. (Aceștia acceptă și TSV sau JSON. )

Deoarece pașii de antrenament sunt în mare parte aceiași, vom presupune în acest moment că ați antrenat deja un model de intenție Einstein cu datele de antrenament pe care le furnizează în case_routing_intent.csv și că sunteți în regulă folosind modelul standard pre-construit pentru Einstein Sentiment.

Apelurile de predicție Einstein Intent sunt la fel de ușor ca:

 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

Aici, <TEXT_TO_PREDICT> ar putea fi ceva de genul „Cum pot obține un număr de urmărire pentru expedierea mea?”

Apelul API este același cu Einstein Sentiment, cu excepția faptului că puteți utiliza modelul pre-construit CommunitySentiment (și notați punctul final diferit):

 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

Ieșirea JSON în ambele cazuri arată exact ca formatul de răspuns de predicție pentru Einstein Image Classification: substanța principală se află într-o matrice asociată cu probabilities cheie și fiecare element de matrice vă oferă o etichetă și o probabilitate. Cam despre asta e!

Inteligență artificială ușoară cu Salesforce Einstein

Ați văzut acum cât de simplu este să utilizați Einstein Vision și Einstein Language și cum API-urile Einstein nu au nimic de-a face cu restul API-urilor pentru dezvoltatori Salesforce, cu excepția numelui. Ce vei crea cu ei?