Salesforce Einstein AI: un'esercitazione API

Pubblicato: 2022-03-11

Gli sviluppatori di app non Salesforce potrebbero perdersi una gemma nascosta nel mondo dell'IA.

Quando gli sviluppatori pensano di utilizzare il cloud per l'IA, potrebbero pensare a IBM Watson, Microsoft Azure Cognitive Services, Google Cloud o Amazon AI. Quando sentono parlare di Salesforce Einstein, possono presumere automaticamente che sia limitato alla specializzazione per sviluppatori Salesforce.

Non così! Qualsiasi app, correlata o meno a Salesforce, può sfruttare le sofisticate tecnologie cloud AI acquisite da Salesforce. Sono entrati nel mercato dell'intelligenza artificiale con Salesforce Einstein, la loro orchestrazione di servizi cloud di intelligenza artificiale. In particolare ciò include le offerte di servizi di riconoscimento della lingua e delle immagini.

Come con altre soluzioni cloud di intelligenza artificiale, non è necessario avere un dottorato di ricerca per utilizzare le tecnologie pesanti sottostanti. In questo tutorial sull'API di Salesforce Einstein, ti mostrerò come configurare un account ed effettuare le tue prime chiamate AI cloud API. Per le chiamate stesse, giocheremo con cURL e Postman, ma potresti anche avere il tuo prototipo di back-end o qualsiasi altra tecnologia con cui ti senti più a tuo agio.

Da lì, il cielo è il limite.

Creazione di un account API Einstein di Salesforce

Per effettuare chiamate API della piattaforma Einstein, devi prima creare un account API Einstein, scaricare la chiave e generare un token Salesforce OAuth utilizzando tale chiave. Il processo deve essere eseguito solo una volta per essere in grado di utilizzare sia Einstein Vision che Einstein Language.

Salesforce Einstein ti consente di registrarti direttamente, tramite autenticazione social o tramite Heroku.

Puoi accedere utilizzando le tue credenziali Salesforce o Heroku. Selezionando una delle opzioni di cui sopra, verrai reindirizzato alle rispettive pagine di accesso. Se accedi con Heroku, ti richiedono di impostare una carta di credito con loro e di allegare il servizio a una tua specifica istanza di Heroku.

La pagina di integrazione di Heroku Einstein

Se non conosci Salesforce e non disponi di un account Heroku, configurare un account con loro è abbastanza veloce, ancora più veloce se desideri registrarti tramite un account social preesistente come quello con Google.

Da qui supponiamo che tu stia utilizzando Salesforce (tramite un account social o meno) invece di Heroku. Il processo prevede un po' di backtracking, quindi ti consigliamo di prestare molta attenzione a questi passaggi.

La pagina di accesso di Salesforce.

Una volta effettuato l'accesso a Salesforce, ti troverai di fronte a una schermata del tour che non ha molto a che fare con Einstein. A questo punto, dovresti controllare la tua email e fare clic sul loro link di verifica; in caso contrario, il passaggio successivo risulterà in un errore.

Ottenere un token API Einstein

Il passaggio successivo consiste nel tornare al link di registrazione iniziale dell'API Einstein e provare di nuovo il pulsante di accesso di Salesforce. Successivamente, imposterai una nuova password, anche se hai creato il tuo account con l'aiuto di un partner di autorizzazione esterno come Google, e verrai reindirizzato, di nuovo, alla pagina del tour.

Ora, torna indietro una terza volta alla pagina di registrazione dell'API e fai nuovamente clic sul pulsante di accesso di Salesforce. Questa volta otterrai una pagina come mostrato di seguito. Non abbandonare questa pagina prima di aver scaricato la tua chiave privata , anche se potrebbe dire che devi verificare la tua email! Se lo fai, non ci sarà modo di ottenere la tua chiave privata senza l'aiuto manuale del loro team di supporto.

Hai solo una possibilità di scaricare la tua chiave privata API Einstein durante il processo di registrazione.

Puoi scaricare il file sul tuo computer locale o copiare e incollare la chiave in un editor di testo e salvare il file come einstein_platform.pem .

Nel frattempo, come accennato, avrai un'altra email di verifica che ti aspetta, questa specifica per Einstein. Fai clic anche su quel link di verifica.

Ora che hai una chiave privata, puoi generare token a tempo limitato. Ogni chiamata API effettuata, dalla creazione di set di dati, ai modelli di addestramento, alla previsione del modello, necessita di un token OAuth valido nell'intestazione della richiesta. Per ottenere il token, devi andare al loro generatore di token e utilizzare lo stesso indirizzo email che hai utilizzato per accedere. Incolla o carica il file della chiave privata che hai ricevuto sopra.

Generazione di un token OAuth di Einstein Platform Services utilizzando la tua chiave privata.

Pratica con l'API di Salesforce Einstein

L'utilizzo del cloud AI tramite Salesforce Einstein implica alcuni concetti di base su come addestrare la propria rete di intelligenza artificiale caricando dati di esempio. Se ciò non suona familiare, il mio tutorial precedente fornisce alcuni esempi di lavoro con Salesforce Einstein, sia per Einstein Language che per Einstein Vision.

Supponendo che tu sia a tuo agio, ora utilizzeremo l'API REST della classificazione delle immagini di Einstein tramite cURL o Postman. Se stai usando Postman, ovunque abbiamo una chiamata cURL, puoi utilizzare la funzione di importazione di Postman:

Importazione di istruzioni cURL in Postman.

Supponiamo che ti sia imbattuto in un requisito aziendale utile in cui desideri distinguere tra smartphone e telefono fisso in base alle immagini e, utilizzando tale previsione, desideri aggiornare il punteggio del tuo lead o elaborare il tuo caso d'uso.

Il prossimo passo è creare il nostro set di dati. Tieni presente che sono necessari almeno 40 esempi che sono già stati classificati. (Se al momento è più tempo di quello che vuoi investire, puoi passare alla sezione delle previsioni di seguito. Usa semplicemente un modelId di FoodImageClassifier , GeneralImageClassifier , SceneClassifier o MultiLabelImageClassifier .)

Nel nostro caso abbiamo due categorie: smartphone e telefoni fissi. Creiamo due cartelle, etichettandole come smartphone e telefoni fissi, e aggiungiamo immagini in ogni cartella. Creiamo quindi un file zip (solo zip: 7z non funziona, ad esempio) contenente queste cartelle.

Questo endpoint dell'API Einstein, utilizzato per creare set di dati, è il seguente:

 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

Qui, <ZIP_LOCATION> può essere come uno di questi esempi:

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

In Postman, senza importare, dovresti compilare le schede dell'intestazione e del corpo come mostrato di seguito:

Compilazione delle intestazioni in Postman.

Compilando il corpo in Postino.

Ci vorrà del tempo prima che tutte le immagini vengano caricate. Supponendo che tutte le immagini siano state caricate correttamente, la risposta avrà un datasetId (ripetuto come id principale e una volta per categoria), che verrà utilizzato nelle chiamate future.

Una volta caricato il set di dati, devi addestrare il modello utilizzando i dati appena caricati. Per addestrare il modello, utilizzare la seguente chiamata:

 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 

Allena il tuo modello Einstein Vision tramite Postman.

L'addestramento del set di dati viene normalmente inserito nella loro coda e, in risposta, otterremo il modelId . Successivamente, possiamo controllare un altro endpoint per sapere se il modello è stato addestrato o meno:

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

Quando il modello viene addestrato, riceverai una risposta come questa:

Controllo dell'avanzamento dell'allenamento del tuo modello tramite Postman.

Utilizzo di Einstein Vision per la previsione delle immagini

Eccone il cuore. Una volta che il modello è stato addestrato, ora puoi inviare un'immagine e il modello restituirà i valori di probabilità per ciascuna categoria che abbiamo definito. Per il modello attuale, abbiamo scelto un'immagine di iPhone X di serie per la previsione.

Per la previsione stessa, utilizziamo il seguente endpoint:

 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

Questa volta, <IMAGE_LOCATION> è simile a <ZIP_LOCATION> , ma vengono utilizzate chiavi diverse e c'è una terza opzione:

  1. sampleContent=@/path/to/your/local/file.zip
  2. sampleLocation=http://somedomain/file.zip
  3. sampleBase64Content=iVBORw0KGgoAAAANSUhEUgAAAC0... (In altre parole, non hai bisogno di alcun prefisso, solo la parte grezza di base 64, se vuoi usare questo metodo di caricamento.)

Ottenere una previsione di Einstein Vision tramite Postman.

Osservando lo screenshot e i valori di probabilità, il modello ha previsto con successo che l'immagine dell'iPhone X è classificata nella categoria smartphone. Successo!

Qualunque sia il tuo caso d'uso, ti consigliamo di esplorare se Einstein Vision presuppone che stai fornendo un'immagine che rientra in una delle categorie su cui l'hai addestrata. Durante i test, abbiamo scoperto che quando abbiamo inviato al modello sopra l'immagine di una barca a vela, ha fatto un'ipotesi migliore tra smartphone e telefoni fissi, piuttosto che indicare che non sembra nemmeno esserlo. In altre parole, le valutazioni che dà per l'immagine della tua barca a vela come una linea fissa o uno smartphone si sommano ancora a 1, proprio come farebbero con un input legittimo.

Tuttavia, alcuni modelli predefiniti hanno categorie come Other (per il modello SceneClassifier ) ​​e UNKNOWN (per FoodImageClassifier ). Quindi vale la pena sperimentare per il tuo contesto particolare in modo da poter sapere cosa aspettarti se vorrai dargli da mangiare immagini che non si adattano alle categorie ad esso assegnate.

C'è anche il tipo di modello "multi-etichetta", che restituisce tutte le categorie, ordinate per probabilità, con il presupposto che si applicano più categorie, ovvero le probabilità non si sommano a 1. Se suona più come quello che stai facendo , varrebbe la pena esaminare il nuovo Einstein Object Detection. Invece di limitarti a dirti cosa potrebbe esserci in un'immagine, nel complesso, in realtà ti dà dei riquadri di delimitazione insieme alle previsioni. Questo è simile a quello che potresti aver visto con la codifica automatica su Facebook, tranne per il fatto che non è limitato ai volti.

Linguaggio di Salesforce Einstein: intento e sentimento

Se desideri addestrare il tuo modello, Salesforce Einstein in teoria ti consente di addestrare sia l'intento che il sentimento, ma è molto più comune preoccuparsi solo dell'intento di formazione. L'addestramento di un modello di intenti è simile a quello che abbiamo esaminato sopra, ma invece di cartelle di immagini, fornisci un file CSV a due colonne, con i testi nella colonna A e le categorie corrispondenti nella colonna B. (Supportano anche TSV o JSON. )

Poiché i passaggi di addestramento sono sostanzialmente gli stessi, a questo punto assumeremo che tu abbia già addestrato un modello Einstein Intent con i dati di addestramento forniti in case_routing_intent.csv e che sia possibile utilizzare il modello predefinito standard per Einstein Sentiment.

Le chiamate di previsione dell'intento di Einstein sono facili come:

 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

Qui, <TEXT_TO_PREDICT> potrebbe essere qualcosa del tipo "Come posso ottenere un numero di tracciabilità per la mia spedizione?"

La chiamata API è la stessa con Einstein Sentiment, tranne per il fatto che puoi utilizzare il modelId CommunitySentiment predefinito (e notare il diverso endpoint):

 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

L'output JSON in entrambi i casi è esattamente come il formato della risposta di previsione per la classificazione delle immagini di Einstein: la sostanza principale si trova in un array associato alle probabilities chiave e ogni elemento dell'array fornisce un'etichetta e una probabilità. Questo è tutto quello che c'è da fare!

Facile IA con Salesforce Einstein

Ora hai visto quanto sia semplice utilizzare Einstein Vision e Einstein Language e come le API Einstein non abbiano nulla a che fare con il resto delle API per sviluppatori Salesforce, tranne che nel nome. Cosa creerai con loro ?