Salesforce Einstein AI: Tutorial API

Diterbitkan: 2022-03-11

Pengembang aplikasi non-Salesforce mungkin kehilangan permata tersembunyi di dunia AI.

Ketika pengembang berpikir untuk menggunakan cloud untuk AI, mereka mungkin memikirkan IBM Watson, Microsoft Azure Cognitive Services, Google Cloud, atau Amazon AI. Ketika mereka mendengar tentang Salesforce Einstein, mereka mungkin secara otomatis menganggap itu terbatas pada spesialisasi pengembang Salesforce.

Tidak begitu! Aplikasi apa pun, baik yang terkait dengan Salesforce atau tidak, dapat memanfaatkan teknologi cloud AI canggih yang telah diperoleh Salesforce. Mereka telah memasuki pasar AI dengan Salesforce Einstein, orkestrasi layanan cloud AI mereka sendiri. Khususnya ini termasuk penawaran layanan pengenalan bahasa dan gambar.

Seperti solusi cloud AI lainnya, Anda tidak perlu memiliki gelar PhD untuk menggunakan teknologi kelas berat di bawahnya. Dalam tutorial API Salesforce Einstein ini, saya akan menunjukkan cara menyiapkan akun dan melakukan panggilan AI cloud API pertama Anda. Untuk panggilan itu sendiri, kami akan bermain dengan cURL dan Postman, tetapi Anda juga dapat menggunakan prototipe back-end Anda sendiri atau teknologi lain apa pun yang paling nyaman bagi Anda.

Dari sana, langit adalah batasnya.

Membuat Akun API Salesforce Einstein

Untuk melakukan panggilan API Platform Einstein, Anda harus terlebih dahulu membuat akun API Einstein, mengunduh kunci, dan membuat token Salesforce OAuth menggunakan kunci tersebut. Prosesnya hanya perlu dilakukan sekali untuk bisa menggunakan Einstein Vision dan Einstein Language.

Salesforce Einstein memungkinkan Anda mendaftar secara langsung, melalui otentikasi sosial, atau melalui Heroku.

Anda dapat masuk menggunakan kredensial Salesforce atau Heroku Anda. Saat memilih salah satu opsi di atas, Anda akan diarahkan ke halaman login masing-masing. Jika Anda masuk dengan Heroku, mereka mengharuskan Anda untuk menyiapkan kartu kredit dengan mereka dan melampirkan layanan ke instance Heroku tertentu milik Anda.

Halaman integrasi Heroku Einstein

Jika Anda baru mengenal Salesforce dan tidak memiliki akun Heroku, menyiapkan akun dengan mereka cukup cepat—bahkan lebih cepat jika Anda ingin mendaftar melalui akun sosial yang sudah ada sebelumnya seperti akun dengan Google.

Kami akan berasumsi dari sini bahwa Anda menggunakan Salesforce (melalui akun sosial atau tidak) alih-alih Heroku. Prosesnya melibatkan sedikit mundur, jadi Anda harus memperhatikan langkah-langkah ini dengan cermat.

Halaman login Salesforce.

Setelah Anda masuk ke Salesforce, Anda akan dihadapkan dengan layar tur yang tidak banyak berhubungan dengan Einstein. Pada titik ini, Anda harus memeriksa email Anda dan mengklik tautan verifikasi mereka; jika tidak, langkah selanjutnya akan menghasilkan kesalahan.

Mendapatkan Token API Einstein

Langkah selanjutnya adalah melingkari kembali tautan pendaftaran API Einstein awal itu dan coba lagi tombol masuk Salesforce. Setelah itu, Anda akan menyetel sandi baru—bahkan jika Anda membuat akun dengan bantuan mitra otorisasi eksternal seperti Google—dan dialihkan, sekali lagi, ke halaman tur.

Sekarang, lingkari kembali untuk ketiga kalinya ke halaman pendaftaran API, dan klik tombol masuk Salesforce lagi. Kali ini Anda akan mendapatkan halaman seperti gambar di bawah ini. Jangan tinggalkan halaman ini sebelum mengunduh kunci pribadi Anda , meskipun mungkin dikatakan Anda perlu memverifikasi email Anda! Jika ya, tidak akan ada cara untuk mendapatkan kunci pribadi Anda tanpa bantuan manual dari tim dukungan mereka.

Anda hanya mendapatkan satu kesempatan untuk mengunduh kunci pribadi API Einstein Anda selama proses pendaftaran.

Anda dapat mengunduh file ke mesin lokal Anda atau menyalin dan menempelkan kunci ke editor teks dan menyimpan file sebagai einstein_platform.pem .

Sementara itu, seperti yang disebutkan, Anda akan memiliki email verifikasi lain yang menunggu Anda, yang ini khusus untuk Einstein. Klik tautan verifikasi itu juga.

Sekarang setelah Anda memiliki kunci pribadi, Anda dapat membuat token dengan waktu terbatas. Setiap panggilan API yang Anda lakukan—mulai dari membuat set data, hingga model pelatihan, hingga prediksi model—memerlukan token OAuth yang valid di header permintaan. Untuk mendapatkan token, Anda harus membuka pembuat token mereka dan menggunakan alamat email yang sama dengan yang Anda gunakan untuk masuk. Tempel atau unggah file kunci pribadi yang Anda terima di atas.

Membuat token OAuth Layanan Platform Einstein menggunakan kunci pribadi Anda.

Langsung dengan Salesforce Einstein API

Menggunakan cloud AI melalui Salesforce Einstein melibatkan beberapa konsep dasar tentang cara melatih jaringan kecerdasan buatan mereka dengan mengunggah data sampel. Jika itu terdengar asing, tutorial saya sebelumnya memberikan beberapa contoh bekerja dengan Salesforce Einstein—baik untuk Einstein Language dan Einstein Vision.

Dengan asumsi Anda merasa nyaman dengan itu, kami sekarang akan menggunakan API REST Klasifikasi Gambar Einstein melalui cURL atau Postman. Jika Anda menggunakan Postman, di mana pun kami memiliki panggilan cURL, Anda dapat menggunakan fitur impor Postman:

Mengimpor pernyataan cURL ke Postman.

Misalkan Anda menemukan persyaratan bisnis yang berguna di mana Anda ingin membedakan antara ponsel cerdas dan telepon rumah berdasarkan gambar dan, menggunakan predikat itu, Anda ingin memperbarui skor prospek atau memproses kasus penggunaan Anda.

Langkah selanjutnya adalah membuat kumpulan data kita sendiri. Harap dicatat bahwa Anda memerlukan setidaknya 40 contoh yang telah dikategorikan. (Jika ini lebih dari waktu yang ingin Anda investasikan saat ini, Anda dapat melompat ke bagian prediksi di bawah ini. Cukup gunakan modelId dari FoodImageClassifier , GeneralImageClassifier , SceneClassifier , atau MultiLabelImageClassifier .)

Dalam kasus kami, kami memiliki dua kategori: telepon pintar dan telepon rumah. Kami membuat dua folder, melabelinya sebagai ponsel cerdas dan telepon rumah, dan menambahkan gambar di setiap folder. Kami kemudian membuat file zip (zip only: 7z tidak berfungsi, misalnya) yang berisi folder-folder ini.

Titik akhir API Einstein ini, yang digunakan untuk membuat kumpulan data, adalah berikut:

 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

Di sini, <ZIP_LOCATION> dapat berupa salah satu dari contoh berikut:

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

Di Postman, tanpa mengimpor, Anda perlu mengisi tab header dan body seperti yang ditunjukkan di bawah ini:

Mengisi header di Postman.

Mengisi tubuh di Postman.

Ini akan memakan waktu sampai semua gambar diunggah. Dengan asumsi semua gambar berhasil diunggah, respons akan memiliki datasetId (diulang sebagai id utama dan sekali per kategori), yang akan digunakan di panggilan mendatang.

Setelah kumpulan data Anda diunggah, Anda harus melatih model menggunakan data yang baru saja Anda unggah. Untuk melatih model, gunakan panggilan berikut:

 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 

Latih model Einstein Vision Anda melalui Postman.

Pelatihan kumpulan data biasanya ditempatkan dalam antriannya, dan sebagai tanggapan, kita akan mendapatkan modelId . Setelah itu, kita dapat memeriksa titik akhir lain untuk mengetahui apakah model tersebut telah dilatih atau belum:

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

Saat model dilatih, Anda akan mendapatkan respons seperti ini:

Memeriksa kemajuan pelatihan model Anda melalui Tukang Pos.

Menggunakan Visi Einstein untuk Prediksi Gambar

Inilah intinya. Setelah model dilatih, Anda sekarang dapat mengirim gambar, dan model akan mengembalikan nilai probabilitas untuk setiap kategori yang telah kami tetapkan. Untuk model saat ini, kami memilih gambar stok iPhone X untuk prediksi.

Untuk prediksi itu sendiri, kami menggunakan titik akhir berikut:

 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

Kali ini, <IMAGE_LOCATION> mirip dengan <ZIP_LOCATION> , tetapi kunci yang digunakan berbeda, dan ada opsi ketiga:

  1. sampleContent=@/path/to/your/local/file.zip
  2. sampleLocation=http://somedomain/file.zip
  3. sampleBase64Content=iVBORw0KGgoAAAANSUhEUgAAAC0... (Dengan kata lain, Anda tidak memerlukan awalan apa pun, hanya bagian 64 basis mentah, jika Anda ingin menggunakan metode pengunggahan ini.)

Mendapatkan prediksi Einstein Vision melalui Postman.

Melihat tangkapan layar dan nilai probabilitas, model berhasil memprediksi bahwa gambar iPhone X diklasifikasikan dalam kategori smartphone. Kesuksesan!

Apa pun kasus penggunaan Anda, Anda pasti ingin menjelajahi apakah Einstein Vision menganggap Anda memberikan gambar yang termasuk dalam salah satu kategori tempat Anda melatihnya. Dalam pengujian, kami menemukan bahwa ketika kami mengirim model di atas gambar perahu layar, itu membuat tebakan terbaik antara ponsel cerdas dan telepon rumah, daripada menunjukkan bahwa sepertinya tidak demikian. Dengan kata lain, peringkat yang diberikannya untuk gambar perahu layar Anda sebagai telepon rumah atau ponsel cerdas masih berjumlah 1, seperti halnya dengan masukan yang sah.

Namun, beberapa model yang dibuat sebelumnya memiliki kategori seperti Other (untuk model SceneClassifier ) ​​dan UNKNOWN (untuk FoodImageClassifier ). Jadi ada baiknya bereksperimen untuk konteks khusus Anda sehingga Anda dapat mengetahui apa yang diharapkan jika Anda ingin memberinya gambar yang tidak sesuai dengan kategori yang diberikan padanya.

Ada juga tipe model “multi-label”, yang mengembalikan semua kategori, diurutkan berdasarkan probabilitas, dengan asumsi bahwa beberapa kategori berlaku—yaitu, probabilitasnya tidak berjumlah 1. Jika itu terdengar lebih seperti yang Anda lakukan , ada baiknya melihat Deteksi Objek Einstein yang baru dirilis. Alih-alih hanya memberi tahu Anda apa yang mungkin ada dalam gambar—secara keseluruhan—ini sebenarnya memberi Anda kotak pembatas bersama dengan prediksi. Ini mirip dengan apa yang mungkin Anda lihat dengan pemberian tag otomatis di Facebook, kecuali bahwa itu tidak terbatas pada wajah.

Salesforce Einstein Bahasa: Niat dan Sentimen

Jika Anda ingin melatih model Anda sendiri, Salesforce Einstein secara teoritis memungkinkan Anda melatih Niat dan Sentimen, tetapi jauh lebih umum untuk hanya mengganggu melatih Intent. Melatih model Intent mirip dengan apa yang kami lalui di atas, tetapi alih-alih folder gambar, Anda menyediakan file CSV dua kolom, dengan teks di kolom A dan kategori yang sesuai di kolom B. (Mereka juga mendukung TSV atau JSON. )

Karena langkah-langkah pelatihan sebagian besar sama, kami akan berasumsi pada titik ini bahwa Anda telah melatih model Einstein Intent dengan data pelatihan yang mereka berikan di case_routing_intent.csv dan baik-baik saja menggunakan model standar yang dibuat sebelumnya untuk Sentimen Einstein.

Panggilan prediksi Einstein Intent semudah:

 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

Di sini, <TEXT_TO_PREDICT> dapat berupa, “Bagaimana saya bisa mendapatkan nomor pelacakan untuk kiriman saya?”

Panggilan API sama dengan Einstein Sentiment, kecuali bahwa Anda dapat menggunakan modelId CommunitySentiment yang sudah dibuat sebelumnya (dan perhatikan titik akhir yang berbeda):

 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

Output JSON dalam kedua kasus terlihat persis seperti format respons prediksi untuk Einstein Image Classification: Substansi utama berada dalam array yang terkait dengan probabilities kunci , dan setiap elemen array memberi Anda label dan probabilitas. Itu saja!

AI mudah dengan Salesforce Einstein

Anda sekarang telah melihat betapa mudahnya menggunakan Einstein Vision dan Einstein Language, dan bagaimana API Einstein tidak ada hubungannya dengan API pengembang Salesforce lainnya, kecuali namanya. Apa yang akan Anda buat dengan mereka?