Salesforce Einstein AI: samouczek API
Opublikowany: 2022-03-11Twórcy aplikacji spoza Salesforce mogą przegapić ukryty klejnot w świecie sztucznej inteligencji.
Kiedy programiści myślą o wykorzystaniu chmury do sztucznej inteligencji, mogą pomyśleć o IBM Watson, Microsoft Azure Cognitive Services, Google Cloud lub Amazon AI. Kiedy słyszą o Salesforce Einstein, mogą automatycznie założyć, że jest to ograniczone do specjalizacji programisty Salesforce.
Bynajmniej! Każda aplikacja, niezależnie od tego, czy jest powiązana z Salesforce, czy nie, może korzystać z zaawansowanych technologii chmury AI, które nabył Salesforce. Weszli na rynek AI z Salesforce Einstein, własną orkiestracją usług AI w chmurze. W szczególności obejmuje to oferty usług rozpoznawania języka i rozpoznawania obrazów.
Podobnie jak w przypadku innych rozwiązań chmurowych AI, nie musisz mieć doktoratu, aby korzystać z ciężkich technologii znajdujących się pod spodem. W tym samouczku Salesforce Einstein API pokażę, jak założyć konto i wykonać pierwsze wywołania AI cloud API. Jeśli chodzi o same połączenia, zagramy z cURL i Postmanem, ale możesz też mieć własny prototyp zaplecza lub jakąkolwiek inną technologię, z którą najbardziej Ci odpowiada.
Stamtąd niebo jest granicą.
Tworzenie konta Salesforce Einstein API
Aby wykonać wywołania Einstein Platform API, musisz najpierw utworzyć konto Einstein API, pobrać klucz i wygenerować token Salesforce OAuth przy użyciu tego klucza. Proces wystarczy wykonać tylko raz, aby móc korzystać zarówno z wizji Einsteina, jak i języka Einsteina.
Możesz zalogować się przy użyciu poświadczeń Salesforce lub Heroku. Po wybraniu dowolnej z powyższych opcji zostaniesz przekierowany do odpowiednich stron logowania. Jeśli zalogujesz się za pomocą Heroku, wymagają one założenia karty kredytowej i dołączenia usługi do konkretnej Twojej instancji Heroku.
Jeśli jesteś nowy w Salesforce i nie masz konta Heroku, założenie konta jest dość szybkie — nawet szybsze, jeśli chcesz zarejestrować się za pośrednictwem istniejącego konta społecznościowego, takiego jak Google.
Zakładamy stąd, że używasz Salesforce (poprzez konto społecznościowe lub nie) zamiast Heroku. Proces ten wymaga nieco cofania się, więc warto zwrócić szczególną uwagę na te kroki.
Po zalogowaniu się do Salesforce zobaczysz ekran wycieczki, który nie ma wiele wspólnego z Einsteinem. W tym momencie powinieneś sprawdzić pocztę i kliknąć link weryfikacyjny; w przeciwnym razie następny krok spowoduje błąd.
Uzyskiwanie tokena Einstein API
Następnym krokiem jest powrót do początkowego linku rejestracyjnego Einstein API i ponowne użycie przycisku logowania Salesforce. Następnie ustawisz nowe hasło — nawet jeśli utworzyłeś konto z pomocą zewnętrznego partnera autoryzacyjnego, takiego jak Google — i ponownie zostaniesz przekierowany na stronę wycieczki.
Teraz wróć po raz trzeci do strony rejestracji API i ponownie kliknij przycisk logowania Salesforce. Tym razem otrzymasz stronę pokazaną poniżej. Nie opuszczaj tej strony przed pobraniem klucza prywatnego , nawet jeśli może oznaczać, że musisz zweryfikować swój adres e-mail! Jeśli to zrobisz, nie będzie możliwości uzyskania klucza prywatnego bez ręcznej pomocy zespołu pomocy technicznej.
Możesz pobrać plik na komputer lokalny lub skopiować i wkleić klucz do edytora tekstu i zapisać plik jako einstein_platform.pem .
W międzyczasie, jak wspomniano, będziesz mieć kolejny e-mail weryfikacyjny, który będzie na Ciebie czekał, ten jest specyficzny dla Einsteina. Kliknij również ten link weryfikacyjny.
Teraz, gdy masz klucz prywatny, możesz generować tokeny ograniczone czasowo. Każde wywołanie interfejsu API — od tworzenia zestawów danych po trenowanie modeli i przewidywanie modelu — wymaga prawidłowego tokenu OAuth w nagłówku żądania. Aby otrzymać token, musisz przejść do ich generatora tokenów i użyć tego samego adresu e-mail, którego użyłeś do logowania. Wklej lub prześlij otrzymany powyżej plik klucza prywatnego.
Praktyczne korzystanie z Salesforce Einstein API
Korzystanie z chmury AI za pośrednictwem Salesforce Einstein obejmuje kilka podstawowych koncepcji dotyczących trenowania sieci sztucznej inteligencji poprzez przesyłanie przykładowych danych. Jeśli to nie brzmi znajomo, mój poprzedni samouczek zawiera kilka przykładów pracy z Salesforce Einstein — zarówno dla języka Einstein, jak i Einstein Vision.
Zakładając, że czujesz się z tym komfortowo, będziemy teraz używać interfejsu API REST klasyfikacji obrazów Einsteina za pośrednictwem cURL lub Postmana. Jeśli używasz Postmana, gdziekolwiek mamy wywołanie cURL, możesz użyć funkcji importu Postmana:
Załóżmy, że natrafiłeś na przydatny wymóg biznesowy, w którym chcesz odróżnić smartfon od telefonu stacjonarnego na podstawie obrazów i korzystając z tego przewidywania, chcesz zaktualizować swój wynik potencjalnego klienta lub przetworzyć przypadek użycia.
Kolejnym krokiem jest stworzenie własnego zbioru danych. Pamiętaj, że potrzebujesz co najmniej 40 przykładów, które zostały już skategoryzowane. (Jeśli jest to więcej czasu, niż chcesz w tej chwili zainwestować, możesz przejść do sekcji przewidywania poniżej. Po prostu użyj identyfikatora FoodImageClassifier modelId GeneralImageClassifier , SceneClassifier lub MultiLabelImageClassifier .)
W naszym przypadku mamy dwie kategorie: smartfony i telefony stacjonarne. Tworzymy dwa foldery, oznaczając je jako smartfony i telefony stacjonarne, i dodajemy obrazy w każdym folderze. Następnie tworzymy plik zip (tylko zip: na przykład 7z nie działa) zawierający te foldery.
Ten punkt końcowy Einstein API, który służy do tworzenia zestawów danych, jest następny:
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 Tutaj <ZIP_LOCATION> może przypominać jeden z tych przykładów:
-
data=@/path/to/your/local/file.zip -
path=http://somedomain/file.zip
W programie Postman, bez importowania, musiałbyś wypełnić karty nagłówka i treści, jak pokazano poniżej:

Załadowanie wszystkich zdjęć zajmie trochę czasu. Zakładając, że wszystkie obrazy zostały pomyślnie przesłane, odpowiedź będzie miała datasetId (powtarzany jako id główny i raz na kategorię), który będzie używany w przyszłych wywołaniach.
Po przesłaniu zestawu danych musisz wytrenować model przy użyciu przesłanych danych. Aby trenować model, użyj następującego wywołania:
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 Uczenie zbioru danych jest zwykle umieszczane w ich kolejce, a w odpowiedzi otrzymamy modelId . Następnie możemy sprawdzić inny punkt końcowy, aby wiedzieć, czy model został przeszkolony, czy jeszcze nie:
curl -X GET \ -H "Authorization: Bearer <TOKEN>" \ -H "Cache-Control: no-cache" \ https://api.einstein.ai/v2/vision/train/<YOUR_MODEL_ID>Gdy model zostanie wytrenowany, otrzymasz taką odpowiedź:
Korzystanie z wizji Einsteina do przewidywania obrazu
Oto sedno tego. Po wytrenowaniu modelu możesz teraz wysłać obraz, a model zwróci wartości prawdopodobieństwa dla każdej zdefiniowanej przez nas kategorii. W przypadku obecnego modelu wybraliśmy standardowy obraz iPhone'a X do prognozy.
Dla samej prognozy używamy następującego punktu końcowego:
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 Tym razem <IMAGE_LOCATION> jest podobne do <ZIP_LOCATION> , ale używane są inne klucze i jest trzecia opcja:
-
sampleContent=@/path/to/your/local/file.zip -
sampleLocation=http://somedomain/file.zip -
sampleBase64Content=iVBORw0KGgoAAAANSUhEUgAAAC0...(Innymi słowy, jeśli chcesz użyć tej metody przesyłania, nie potrzebujesz żadnego prefiksu, wystarczy surowa część bazy 64).
Patrząc na zrzut ekranu i wartości prawdopodobieństwa, model z powodzeniem przewidział, że obraz iPhone’a X należy do kategorii smartfonów. Sukces!
Niezależnie od przypadku użycia, będziesz chciał sprawdzić, czy Einstein Vision zakłada, że dostarczasz obraz, który należy do jednej z kategorii, w których go trenowałeś. Podczas testów odkryliśmy, że kiedy wysłaliśmy powyższemu modelowi zdjęcie żaglówki, dokonał on najlepszego odgadnięcia między smartfonami a telefonami stacjonarnymi, zamiast wskazywać, że wydaje się, że tak nie jest. Innymi słowy, oceny, jakie daje obrazowi żaglówki, który jest telefonem stacjonarnym lub smartfonem, nadal sumują się do 1, tak jak w przypadku uzasadnionych danych wejściowych.
Jednak niektóre wstępnie zbudowane modele mają kategorie, takie jak Other (dla modelu SceneClassifier ) i UNKNOWN (dla FoodImageClassifier ). Warto więc poeksperymentować z konkretnym kontekstem, aby wiedzieć, czego się spodziewać, jeśli zechcesz nakarmić go obrazami, które nie pasują do podanych mu kategorii.
Istnieje również model typu „wiele etykiet”, który zwraca wszystkie kategorie posortowane według prawdopodobieństwa, z założeniem, że ma zastosowanie wiele kategorii — tj. prawdopodobieństwa nie sumują się do 1. Jeśli to brzmi bardziej jak to, co robisz , warto przyjrzeć się nowo wydanej funkcji wykrywania obiektów Einsteina. Zamiast tylko powiedzieć, co może znajdować się na obrazie — ogólnie — w rzeczywistości wyświetla ramki ograniczające wraz z przewidywaniami. Jest to podobne do tego, co można było zobaczyć w przypadku automatycznego tagowania na Facebooku, z tym wyjątkiem, że nie ogranicza się do twarzy.
Język Salesforce Einstein: intencja i sentyment
Jeśli chcesz trenować własny model, Salesforce Einstein teoretycznie pozwala trenować zarówno intencję, jak i sentyment, ale znacznie częściej zawracasz sobie głowę tylko trenowaniem intencji. Trenowanie modelu intencji jest podobne do tego, przez co przeszliśmy powyżej, ale zamiast folderów z obrazami dostarczasz dwukolumnowy plik CSV z tekstami w kolumnie A i odpowiadającymi im kategoriami w kolumnie B. (Obsługują również TSV lub JSON. )
Ponieważ kroki szkolenia są w dużej mierze takie same, założymy w tym momencie, że już wytrenowano model Einstein Intent z danymi szkoleniowymi, które dostarczają w case_routing_intent.csv i są w porządku przy użyciu standardowego wstępnie skompilowanego modelu dla Einstein Sentiment.
Połączenia z przewidywaniami Einstein Intent są tak proste, jak:
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 Tutaj <TEXT_TO_PREDICT> może być czymś w rodzaju: „Jak mogę uzyskać numer śledzenia mojej przesyłki?”
Wywołanie API jest takie samo jak w przypadku Einstein Sentiment, z wyjątkiem tego, że możesz użyć gotowego modelu CommunitySentiment (i zwróć uwagę na inny punkt końcowy):
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 Dane wyjściowe JSON w obu przypadkach wyglądają dokładnie tak, jak format odpowiedzi prognozy dla klasyfikacji obrazów Einsteina: główna substancja znajduje się w tablicy powiązanej z kluczowymi probabilities , a każdy element tablicy zawiera etykietę i prawdopodobieństwo. To wszystko!
Łatwa sztuczna inteligencja z Salesforce Einstein
Widziałeś teraz, jak proste jest użycie Einstein Vision i Einstein Language oraz jak interfejsy API Einsteina nie mają nic wspólnego z pozostałymi interfejsami API programistów Salesforce, z wyjątkiem nazwy. Co z nimi stworzysz ?
