Salesforce Einstein AI: บทช่วยสอนเกี่ยวกับ API

เผยแพร่แล้ว: 2022-03-11

นักพัฒนาแอปที่ไม่ใช่ของ Salesforce อาจพลาดอัญมณีที่ซ่อนอยู่ในโลก AI

เมื่อนักพัฒนาคิดที่จะใช้ระบบคลาวด์สำหรับ AI พวกเขาอาจนึกถึง IBM Watson, Microsoft Azure Cognitive Services, Google Cloud หรือ Amazon AI เมื่อพวกเขาได้ยินเกี่ยวกับ Salesforce Einstein พวกเขาอาจสันนิษฐานได้โดยอัตโนมัติว่าจำกัดเฉพาะความเชี่ยวชาญพิเศษของนักพัฒนา Salesforce

ไม่อย่างนั้น! แอปใดๆ ไม่ว่าจะเกี่ยวข้องกับ Salesforce หรือไม่ก็ตาม สามารถใช้ประโยชน์จากเทคโนโลยีคลาวด์ AI ที่ซับซ้อนที่ Salesforce ได้มา พวกเขาได้เข้าสู่ตลาด AI กับ Salesforce Einstein ซึ่งเป็นกลุ่มบริการระบบคลาวด์ AI ของพวกเขาเอง ซึ่งรวมถึงการนำเสนอบริการการจดจำภาษาและภาพ

เช่นเดียวกับโซลูชัน AI คลาวด์อื่นๆ คุณไม่จำเป็นต้องมีปริญญาเอกเพื่อใช้เทคโนโลยีรุ่นใหญ่ที่อยู่ด้านล่าง ในบทช่วยสอน Salesforce Einstein API นี้ ฉันจะแสดงวิธีตั้งค่าบัญชีและทำการเรียก AI cloud API ครั้งแรกของคุณ สำหรับการเรียกตัวเอง เราจะเล่นกับ cURL และบุรุษไปรษณีย์ แต่คุณสามารถสร้างต้นแบบส่วนหลังของคุณเองหรือเทคโนโลยีอื่นใดที่คุณสะดวกที่สุด

จากนั้นท้องฟ้าก็มีขอบเขต

การสร้างบัญชี Salesforce Einstein API

ในการเรียก Einstein Platform API ก่อนอื่นคุณต้องสร้างบัญชี Einstein API ดาวน์โหลดคีย์ และสร้างโทเค็น Salesforce OAuth โดยใช้คีย์นั้น กระบวนการนี้ต้องทำเพียงครั้งเดียวจึงจะสามารถใช้ทั้ง Einstein Vision และ Einstein Language ได้

Salesforce Einstein ช่วยให้คุณลงทะเบียนได้โดยตรง ผ่านการตรวจสอบสิทธิ์ทางสังคม หรือผ่าน Heroku

คุณสามารถเข้าสู่ระบบโดยใช้ข้อมูลประจำตัว Salesforce หรือ Heroku ของคุณ เมื่อเลือกตัวเลือกใดตัวเลือกหนึ่งข้างต้น คุณจะถูกเปลี่ยนเส้นทางไปยังหน้าเข้าสู่ระบบที่เกี่ยวข้อง หากคุณเข้าสู่ระบบด้วย Heroku พวกเขาต้องการให้คุณตั้งค่าบัตรเครดิตกับพวกเขาและแนบบริการกับอินสแตนซ์ของ Heroku เฉพาะของคุณ

หน้าการรวม Heroku Einstein

หากคุณเพิ่งเริ่มใช้ Salesforce และไม่มีบัญชี Heroku การตั้งค่าบัญชีกับพวกเขานั้นค่อนข้างรวดเร็ว—ยิ่งเร็วยิ่งขึ้นหากคุณต้องการลงชื่อสมัครใช้ผ่านบัญชีโซเชียลที่มีอยู่แล้วเช่นเดียวกับ Google

จากนี้ไป เราจะถือว่าคุณกำลังใช้ Salesforce (ผ่านบัญชีโซเชียลหรือไม่) แทน Heroku กระบวนการนี้เกี่ยวข้องกับการย้อนรอยเล็กน้อย ดังนั้น คุณจะต้องใส่ใจกับขั้นตอนเหล่านี้อย่างใกล้ชิด

หน้าเข้าสู่ระบบ Salesforce

เมื่อคุณเข้าสู่ระบบ Salesforce แล้ว คุณจะพบกับหน้าจอทัวร์ที่ไม่เกี่ยวข้องกับ Einstein มากนัก ณ จุดนี้ คุณควรตรวจสอบอีเมลของคุณและคลิกลิงก์ยืนยันอีเมล มิฉะนั้น ขั้นตอนต่อไปจะส่งผลให้เกิดข้อผิดพลาด

รับโทเค็น Einstein API

ขั้นตอนต่อไปคือการวนกลับไปที่ลิงก์การลงชื่อสมัครใช้ Einstein API เริ่มต้น แล้วลองใช้ปุ่มเข้าสู่ระบบ Salesforce อีกครั้ง หลังจากนั้น คุณจะต้องตั้งรหัสผ่านใหม่ แม้ว่าคุณจะสร้างบัญชีด้วยความช่วยเหลือจากพันธมิตรการให้สิทธิ์ภายนอกเช่น Google และถูกเปลี่ยนเส้นทางไปยังหน้าทัวร์อีกครั้ง

ตอนนี้ วนกลับไปเป็นครั้งที่สามที่หน้าลงทะเบียน API แล้วคลิกปุ่มเข้าสู่ระบบ Salesforce อีกครั้ง คราวนี้คุณจะได้หน้าดังรูปด้านล่าง อย่าออกจากหน้านี้ก่อนที่จะดาวน์โหลดคีย์ส่วนตัวของคุณ แม้ว่าระบบอาจแจ้งว่าคุณจำเป็นต้องยืนยันอีเมลของคุณ! หากคุณทำเช่นนั้น จะไม่มีทางได้รับคีย์ส่วนตัวของคุณหากไม่มีความช่วยเหลือด้วยตนเองจากทีมสนับสนุน

คุณมีโอกาสเพียงครั้งเดียวในการดาวน์โหลดคีย์ส่วนตัวของ Einstein API ระหว่างขั้นตอนการสมัคร

คุณสามารถดาวน์โหลดไฟล์ลงในเครื่องของคุณ หรือคัดลอกและวางคีย์ลงในโปรแกรมแก้ไขข้อความ แล้วบันทึกไฟล์เป็น einstein_platform.pem

ในระหว่างนี้ คุณจะมีอีเมลยืนยันอีกฉบับรอคุณอยู่ อีเมลนี้เป็นอีเมลเฉพาะของไอน์สไตน์ คลิกลิงก์การตรวจสอบนั้นด้วย

เมื่อคุณมีคีย์ส่วนตัวแล้ว คุณก็สามารถสร้างโทเค็นแบบจำกัดเวลาได้ ทุกการเรียก API ที่คุณทำ ตั้งแต่การสร้างชุดข้อมูล ไปจนถึงโมเดลการฝึก ไปจนถึงการคาดการณ์โมเดล จำเป็นต้องมีโทเค็น OAuth ที่ถูกต้องในส่วนหัวของคำขอ ในการรับโทเค็น คุณต้องไปที่ตัวสร้างโทเค็นและใช้ที่อยู่อีเมลเดียวกับที่คุณใช้เข้าสู่ระบบ วางหรืออัปโหลดไฟล์คีย์ส่วนตัวที่คุณได้รับด้านบน

การสร้างโทเค็น OAuth ของบริการแพลตฟอร์ม Einstein โดยใช้คีย์ส่วนตัวของคุณ

ลงมือปฏิบัติกับ Salesforce Einstein API

การใช้ระบบคลาวด์ AI ผ่าน Salesforce Einstein เกี่ยวข้องกับแนวคิดพื้นฐานบางประการเกี่ยวกับวิธีการฝึกอบรมเครือข่ายปัญญาประดิษฐ์โดยการอัปโหลดข้อมูลตัวอย่าง หากฟังดูไม่คุ้นเคย บทช่วยสอนก่อนหน้าของฉันจะให้ตัวอย่างบางส่วนในการทำงานร่วมกับ Salesforce Einstein ทั้งในด้านภาษาของ Einstein และ Einstein Vision

สมมติว่าคุณพอใจกับสิ่งนั้น ตอนนี้เราจะใช้ Einstein Image Classification REST API ผ่าน cURL หรือบุรุษไปรษณีย์ หากคุณใช้บุรุษไปรษณีย์ ไม่ว่าเราจะมีการเรียก cURL อยู่ที่ใด คุณสามารถใช้คุณลักษณะการนำเข้าของบุรุษไปรษณีย์ได้:

การนำเข้าคำสั่ง cURL ไปยังบุรุษไปรษณีย์

สมมติว่าคุณพบข้อกำหนดทางธุรกิจที่มีประโยชน์ซึ่งคุณต้องการแยกความแตกต่างระหว่างสมาร์ทโฟนและโทรศัพท์พื้นฐานโดยพิจารณาจากรูปภาพ และหากต้องการอัปเดตคะแนนลูกค้าเป้าหมายหรือดำเนินการกรณีการใช้งานของคุณ

ขั้นตอนต่อไปคือการสร้างชุดข้อมูลของเราเอง โปรดทราบว่าคุณต้องมีตัวอย่างอย่างน้อย 40 ตัวอย่างที่จัดหมวดหมู่ไว้แล้ว (หากใช้เวลามากกว่าที่คุณต้องการลงทุนในขณะนี้ คุณสามารถข้ามไปยังส่วนการคาดคะเนด้านล่างได้ เพียงใช้ modelId ของ FoodImageClassifier , GeneralImageClassifier , SceneClassifier หรือ MultiLabelImageClassifier )

ในกรณีของเรา เรามีสองประเภท: สมาร์ทโฟนและโทรศัพท์บ้าน เราสร้างสองโฟลเดอร์โดยระบุว่าเป็นสมาร์ทโฟนและโทรศัพท์พื้นฐาน และเพิ่มรูปภาพในแต่ละโฟลเดอร์ จากนั้นเราสร้างไฟล์ 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

ในบุรุษไปรษณีย์ โดยไม่ต้องนำเข้า คุณจะต้องกรอกแท็บส่วนหัวและเนื้อหาดังที่แสดงด้านล่าง:

กรอกส่วนหัวในบุรุษไปรษณีย์

กรอกร่างกายในบุรุษไปรษณีย์

จะใช้เวลาจนกว่าจะอัปโหลดภาพทั้งหมด สมมติว่ารูปภาพทั้งหมดอัปโหลดสำเร็จแล้ว การตอบกลับจะมี 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 

ฝึกโมเดล 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>

เมื่อโมเดลได้รับการฝึกฝน คุณจะได้รับการตอบสนองดังนี้:

ตรวจสอบความคืบหน้าในการฝึกโมเดลของคุณผ่านบุรุษไปรษณีย์

การใช้ 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> แต่มีการใช้คีย์อื่น และมีตัวเลือกที่สาม:

  1. sampleContent=@/path/to/your/local/file.zip
  2. sampleLocation=http://somedomain/file.zip
  3. sampleBase64Content=iVBORw0KGgoAAAANSUhEUgAAAC0... (กล่าวอีกนัยหนึ่ง คุณไม่จำเป็นต้องมีคำนำหน้า แค่ส่วนดิบของฐาน 64 หากคุณต้องการใช้วิธีอัปโหลดนี้)

รับคำทำนายของ Einstein Vision ผ่านบุรุษไปรษณีย์

เมื่อดูจากภาพหน้าจอและค่าความน่าจะเป็น แบบจำลองคาดการณ์ได้สำเร็จว่าภาพ iPhone X จัดอยู่ในหมวดหมู่สมาร์ทโฟน ความสำเร็จ!

ไม่ว่ากรณีการใช้งานของคุณจะเป็นอย่างไร คุณจะต้องสำรวจว่า Einstein Vision ถือว่าคุณกำลังให้ภาพที่จัดอยู่ในหมวดหมู่ใดหมวดหมู่หนึ่งที่คุณฝึกฝนมาหรือไม่ ในการทดสอบ เราค้นพบว่าเมื่อเราส่งภาพจำลองของเรือใบดังกล่าวไปยังแบบจำลองข้างต้น เป็นการคาดเดาได้ดีที่สุดระหว่างสมาร์ทโฟนและโทรศัพท์บ้าน แทนที่จะระบุว่าดูเหมือนว่าจะไม่เป็นเช่นนั้น กล่าวอีกนัยหนึ่ง การให้คะแนนสำหรับภาพเรือใบของคุณที่เป็นโทรศัพท์บ้านหรือสมาร์ทโฟนยังคงเพิ่มขึ้นเป็น 1 เช่นเดียวกับการป้อนข้อมูลที่ถูกต้อง

อย่างไรก็ตาม โมเดลที่สร้างไว้ล่วงหน้าบางรุ่นมีหมวดหมู่ เช่น Other (สำหรับรุ่น SceneClassifier ) ​​และ UNKNOWN (สำหรับ FoodImageClassifier ) ดังนั้นจึงควรทดลองบริบทเฉพาะของคุณ เพื่อที่คุณจะได้รู้ว่าจะเกิดอะไรขึ้นหากคุณต้องการป้อนรูปภาพที่ไม่ตรงกับหมวดหมู่ที่กำหนด

นอกจากนี้ยังมีโมเดลประเภท "หลายป้ายกำกับ" ซึ่งส่งคืนหมวดหมู่ทั้งหมด จัดเรียงตามความน่าจะเป็น โดยสันนิษฐานว่ามีหลายหมวดหมู่ กล่าวคือ ความน่าจะเป็นไม่ได้รวมกันเป็น 1 หากฟังดูเหมือนกับสิ่งที่คุณกำลังทำอยู่ มันอาจจะคุ้มค่าที่จะลองดู Einstein Object Detection ที่เพิ่งเปิดตัว แทนที่จะบอกคุณว่ามีอะไรอยู่ในภาพ โดยรวมแล้ว มันให้กรอบล้อมรอบพร้อมกับการคาดคะเน ซึ่งคล้ายกับสิ่งที่คุณอาจเห็นจากการติดแท็กอัตโนมัติบน Facebook เว้นแต่ว่าไม่จำกัดเฉพาะใบหน้า

Salesforce Einstein ภาษา: ความตั้งใจและความรู้สึก

หากคุณต้องการฝึกโมเดลของคุณเอง Salesforce Einstein จะให้คุณฝึกฝนทั้ง Intent และ Sentiment ในทางทฤษฎี แต่การรบกวน Intent ของการฝึกอบรมนั้นเป็นเรื่องปกติ Training an Intent model นั้นคล้ายกับที่เราได้ดำเนินการไปด้านบน แต่แทนที่จะเป็นโฟลเดอร์ของรูปภาพ คุณใส่ไฟล์ CSV แบบสองคอลัมน์ โดยมีข้อความในคอลัมน์ A และหมวดหมู่ที่เกี่ยวข้องในคอลัมน์ B (รองรับ TSV หรือ JSON ด้วย )

เนื่องจากขั้นตอนการฝึกอบรมส่วนใหญ่เหมือนกัน เราจะถือว่า ณ จุดนี้คุณได้ฝึกโมเดล Einstein Intent แล้วด้วยข้อมูลการฝึกอบรมที่จัดหาให้ใน case_routing_intent.csv และใช้ได้โดยใช้โมเดลที่สร้างไว้ล่วงหน้ามาตรฐานสำหรับ Einstein Sentiment

การโทรทำนายเจตนาของ Einstein นั้นง่ายเหมือน:

 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 นั้นเหมือนกันกับ Einstein Sentiment ยกเว้นว่าคุณสามารถใช้ modelId CommunitySentiment ที่สร้างไว้ล่วงหน้าได้ (และสังเกตปลายทางที่แตกต่างกัน):

 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 ทุกประการ: เนื้อหาหลักอยู่ในอาร์เรย์ที่เกี่ยวข้องกับ probabilities เป็นหลัก และองค์ประกอบอาร์เรย์แต่ละรายการจะให้ป้ายกำกับและความน่าจะเป็นแก่คุณ นั่นคือทั้งหมดที่มีให้!

AI ง่ายๆ ด้วย Salesforce Einstein

ตอนนี้คุณได้เห็นแล้วว่าการใช้ Einstein Vision และ Einstein Language นั้นตรงไปตรงมาเพียงใด และวิธีที่ Einstein API ไม่มีส่วนเกี่ยวข้องกับ API ของนักพัฒนา Salesforce ที่เหลือ ยกเว้นในชื่อ คุณ จะสร้างอะไรกับพวกเขา?