Salesforce Einstein AI: برنامج تعليمي لواجهة برمجة التطبيقات

نشرت: 2022-03-11

قد يفقد مطورو التطبيقات غير التابعين لـ Salesforce جوهره مخفية في عالم الذكاء الاصطناعي.

عندما يفكر المطورون في استخدام السحابة للذكاء الاصطناعي ، فقد يفكرون في IBM Watson أو Microsoft Azure Cognitive Services أو Google Cloud أو Amazon AI. عندما يسمعون عن Salesforce Einstein ، قد يفترضون تلقائيًا أنه يقتصر على تخصص مطور Salesforce.

ليس كذلك! يمكن لأي تطبيق ، سواء كان مرتبطًا بـ Salesforce أم لا ، الاستفادة من تقنيات سحابة الذكاء الاصطناعي المتطورة التي اكتسبتها Salesforce. لقد دخلوا سوق الذكاء الاصطناعي مع Salesforce Einstein ، تنسيقهم الخاص للخدمات السحابية للذكاء الاصطناعي. يشمل هذا بشكل خاص عروض خدمات التعرف على اللغة والصورة.

كما هو الحال مع الحلول السحابية للذكاء الاصطناعي الأخرى ، لا يتعين عليك الحصول على درجة الدكتوراه لاستخدام تقنيات الوزن الثقيل الموجودة تحتها. في هذا البرنامج التعليمي Salesforce Einstein API ، سأوضح لك كيفية إعداد حساب وإجراء مكالماتك الأولى لواجهة برمجة تطبيقات سحابة AI. بالنسبة للمكالمات نفسها ، سنلعب باستخدام cURL و Postman ، ولكن يمكنك أيضًا النموذج الأولي الخلفي الخاص بك أو أي تقنية أخرى تشعر بالراحة معها.

من هناك ، السماء هي الحد.

إنشاء حساب Salesforce Einstein API

لإجراء مكالمات Einstein Platform API ، تحتاج أولاً إلى إنشاء حساب Einstein API وتنزيل المفتاح وإنشاء رمز مميز لـ Salesforce OAuth باستخدام هذا المفتاح. يجب أن تتم العملية مرة واحدة فقط لتتمكن من استخدام رؤية أينشتاين ولغة أينشتاين.

يتيح لك Salesforce Einstein التسجيل مباشرة ، عبر المصادقة الاجتماعية ، أو عبر Heroku.

يمكنك تسجيل الدخول باستخدام بيانات اعتماد Salesforce أو Heroku. عند تحديد أي من الخيارات أعلاه ، ستتم إعادة توجيهك إلى صفحات تسجيل الدخول الخاصة بها. إذا قمت بتسجيل الدخول باستخدام Heroku ، فسيطلبون منك إعداد بطاقة ائتمان معهم وإرفاق الخدمة بمثيل Heroku محدد لك.

صفحة تكامل Heroku Einstein

إذا كنت جديدًا في Salesforce وليس لديك حساب Heroku ، فإن إنشاء حساب معهم يكون سريعًا إلى حد ما - حتى أسرع إذا كنت ترغب في التسجيل عبر حساب اجتماعي موجود مسبقًا مثل حساب Google.

سنفترض من هنا أنك تستخدم Salesforce (عبر حساب اجتماعي أم لا) بدلاً من Heroku. تتضمن العملية القليل من التراجع ، لذا سترغب في الانتباه عن كثب إلى هذه الخطوات.

صفحة تسجيل الدخول إلى Salesforce.

بمجرد تسجيل الدخول إلى Salesforce ، ستواجه شاشة جولة لا علاقة لها بآينشتاين. في هذه المرحلة ، يجب عليك التحقق من بريدك الإلكتروني والنقر فوق رابط التحقق الخاص بهم ؛ وإلا ، فإن الخطوة التالية ستؤدي إلى حدوث خطأ.

الحصول على رمز آينشتاين API المميز

تتمثل الخطوة التالية في الرجوع إلى رابط الاشتراك الأولي لـ Einstein API ومحاولة زر تسجيل الدخول إلى Salesforce مرة أخرى. بعد ذلك ، ستقوم بتعيين كلمة مرور جديدة - حتى إذا أنشأت حسابك بمساعدة شريك تفويض خارجي مثل Google - وستتم إعادة توجيهك ، مرة أخرى ، إلى صفحة الجولة.

الآن ، قم بإعادة الدائرة مرة ثالثة إلى صفحة تسجيل API ، وانقر فوق زر تسجيل الدخول إلى Salesforce مرة أخرى. هذه المرة ستحصل على صفحة كما هو موضح أدناه. لا تغادر هذه الصفحة قبل تنزيل مفتاحك الخاص ، على الرغم من أنه قد يشير إلى أنك بحاجة إلى التحقق من بريدك الإلكتروني! إذا قمت بذلك ، فلن تكون هناك طريقة للحصول على مفتاحك الخاص بدون مساعدة يدوية من فريق الدعم الخاص بهم.

لديك فرصة واحدة فقط لتنزيل مفتاح Einstein API الخاص أثناء عملية التسجيل.

يمكنك إما تنزيل الملف على جهازك المحلي أو نسخ المفتاح ولصقه في محرر نصوص وحفظ الملف باسم einstein_platform.pem .

في هذه الأثناء ، كما ذكرنا ، سيكون لديك بريد إلكتروني آخر للتحقق في انتظارك ، هذه الرسالة خاصة بأينشتاين. انقر فوق ارتباط التحقق هذا أيضًا.

الآن بعد أن أصبح لديك مفتاح خاص ، يمكنك إنشاء رموز مميزة محدودة الوقت. كل استدعاء لواجهة برمجة التطبيقات تجريها - من إنشاء مجموعات البيانات ، إلى نماذج التدريب ، إلى نموذج التنبؤ - يحتاج إلى رمز OAuth مميز صالح في رأس الطلب. للحصول على الرمز المميز ، تحتاج إلى الانتقال إلى منشئ الرمز المميز الخاص بهم واستخدام نفس عنوان البريد الإلكتروني الذي استخدمته لتسجيل الدخول. قم بلصق أو تحميل ملف المفتاح الخاص الذي تلقيته أعلاه.

إنشاء رمز OAuth المميز لـ Einstein Platform Services باستخدام مفتاحك الخاص.

التدريب العملي على Salesforce Einstein API

يتضمن استخدام سحابة الذكاء الاصطناعي عبر Salesforce Einstein بعض المفاهيم الأساسية حول كيفية تدريب شبكة الذكاء الاصطناعي الخاصة بهم عن طريق تحميل بيانات نموذجية. إذا كان هذا لا يبدو مألوفًا ، فإن تعليمي السابق يقدم بعض الأمثلة على العمل مع Salesforce Einstein - لكل من Einstein Language و Einstein Vision.

بافتراض أنك مرتاح لذلك ، سنستخدم الآن واجهة برمجة تطبيقات REST لتصنيف الصور من أينشتاين عبر cURL أو Postman. إذا كنت تستخدم Postman ، أينما كان لدينا مكالمة cURL ، يمكنك استخدام ميزة استيراد Postman:

استيراد عبارات cURL إلى ساعي البريد.

لنفترض أنك صادفت متطلبًا تجاريًا مفيدًا حيث تريد التمييز بين الهاتف الذكي والهاتف الأرضي بناءً على الصور ، وباستخدام هذا التعيين ، فأنت تريد تحديث نقاط العميل المحتمل أو معالجة حالة الاستخدام الخاصة بك.

الخطوة التالية هي إنشاء مجموعة البيانات الخاصة بنا. يرجى ملاحظة أنك بحاجة إلى 40 نموذجًا على الأقل تم تصنيفها بالفعل. (إذا كان هذا وقتًا أطول مما تريد استثماره في الوقت الحالي ، فيمكنك التخطي إلى قسم التنبؤ أدناه. ما عليك سوى استخدام modelId لـ FoodImageClassifier أو GeneralImageClassifier أو SceneClassifier أو MultiLabelImageClassifier .)

في حالتنا ، لدينا فئتان: الهواتف الذكية والهواتف الأرضية. نقوم بإنشاء مجلدين ، نصنفهما على أنهما هواتف ذكية وهواتف أرضية ، ونضيف صورًا في كل مجلد. نقوم بعد ذلك بإنشاء ملف مضغوط (zip only: 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

في Postman ، بدون الاستيراد ، ستحتاج إلى ملء علامتي تبويب الرأس والجسم كما هو موضح أدناه:

ملء الرؤوس في ساعي البريد.

ملء الجثة في ساعي البريد.

سوف يستغرق الأمر بعض الوقت حتى يتم تحميل جميع الصور. بافتراض أنه تم تحميل جميع الصور بنجاح ، سيكون للرد معرف مجموعة 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 

تدريب نموذج رؤية أينشتاين الخاص بك عبر ساعي البريد.

عادةً ما يتم وضع تدريب مجموعة البيانات في قائمة الانتظار الخاصة بهم ، واستجابة لذلك ، سنحصل على modelId . بعد ذلك ، يمكننا التحقق من نقطة نهاية أخرى لمعرفة ما إذا كان النموذج قد تم تدريبه أم لا:

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

عندما يتم تدريب النموذج ، ستحصل على رد مثل هذا:

التحقق من تقدم تدريب النموذج الخاص بك عبر ساعي البريد.

استخدام رؤية أينشتاين للتنبؤ بالصور

ها هو قلبها. بمجرد تدريب النموذج ، يمكنك الآن إرسال صورة ، وسيرجع النموذج قيم الاحتمالية لكل فئة حددناها. بالنسبة للنموذج الحالي ، اخترنا صورة مخزون 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 الأساسي الخام ، إذا كنت تريد استخدام طريقة التحميل هذه.)

الحصول على تنبؤ رؤية أينشتاين عبر ساعي البريد.

بالنظر إلى لقطة الشاشة وقيم الاحتمالات ، تنبأ النموذج بنجاح بأن صورة iPhone X مصنفة ضمن فئة الهاتف الذكي. نجاح!

مهما كانت حالة الاستخدام الخاصة بك ، سترغب في استكشاف ما إذا كانت Einstein Vision تفترض أنك تقدم صورة تقع ضمن إحدى الفئات التي قمت بتدريبها عليها. أثناء الاختبار ، اكتشفنا أنه عندما أرسلنا للنموذج أعلاه صورة لمركب شراعي ، فقد حقق أفضل تخمين بين الهواتف الذكية والهواتف الأرضية ، بدلاً من الإشارة إلى أنه لا يبدو كذلك. وبعبارة أخرى ، فإن التصنيفات التي تمنحها لصورة المراكب الشراعية الخاصة بك سواء كانت خطًا أرضيًا أو هاتفًا ذكيًا لا تزال تضيف ما يصل إلى 1 ، تمامًا كما لو كانت مع مدخلات مشروعة.

ومع ذلك ، تحتوي بعض الطرز المبنية مسبقًا على فئات مثل Other (لنموذج SceneClassifier ) ​​و UNKNOWN (لـ FoodImageClassifier ). لذا ، فإن الأمر يستحق التجربة في سياقك الخاص حتى تتمكن من معرفة ما يمكن توقعه إذا كنت تريد إطعامه صورًا لا تتناسب مع الفئات المعطاة له.

هناك أيضًا نوع النموذج "متعدد التصنيفات" ، والذي يعرض جميع الفئات ، مرتبة حسب الاحتمال ، مع افتراض تطبيق فئات متعددة - أي أن الاحتمالات لا تضيف ما يصل إلى 1. إذا كان هذا يبدو أشبه بما تفعله ، قد يكون من المفيد النظر في اكتشاف كائن أينشتاين الذي تم إصداره حديثًا. بدلاً من مجرد إخبارك بما قد يكون في الصورة — بشكل عام — يمنحك في الواقع مربعات إحاطة جنبًا إلى جنب مع التوقعات. هذا مشابه لما قد تراه مع وضع العلامات التلقائي على Facebook ، باستثناء أنه لا يقتصر على الوجوه.

لغة Salesforce Einstein: النية والشعور

إذا كنت ترغب في تدريب نموذجك الخاص ، فإن Salesforce Einstein يتيح لك نظريًا تدريب كل من النية والشعور ، ولكن من الشائع أكثر أن تزعج نفسك بالتدريب فقط. يشبه تدريب نموذج Intent ما ذكرناه أعلاه ، ولكن بدلاً من مجلدات الصور ، تقوم بتوفير ملف CSV من عمودين ، مع نصوص في العمود A والفئات المقابلة لها في العمود B. (كما أنها تدعم TSV أو JSON. )

نظرًا لأن خطوات التدريب متشابهة إلى حد كبير ، سنفترض في هذه المرحلة أنك قمت بالفعل بتدريب نموذج Einstein Intent ببيانات التدريب التي يقدمونها في case_routing_intent.csv ولا بأس باستخدام النموذج القياسي المبني مسبقًا لمشاعر أينشتاين.

تعتبر مكالمات توقع نية أينشتاين سهلة مثل:

 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 هو نفسه مع مشاعر أينشتاين ، باستثناء أنه يمكنك استخدام 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 في كلتا الحالتين تمامًا مثل تنسيق استجابة التنبؤ لتصنيف صور أينشتاين: المادة الرئيسية موجودة في مصفوفة مرتبطة probabilities الرئيسية ، ويمنحك كل عنصر مصفوفة تسمية واحتمال. هذا كل ما في الامر!

ذكاء اصطناعي سهل مع Salesforce أينشتاين

لقد رأيت الآن مدى سهولة استخدام Einstein Vision و Einstein Language ، وكيف أن واجهات برمجة تطبيقات Einstein ليس لها أي علاقة بباقي واجهات برمجة تطبيقات مطور Salesforce ، باستثناء الاسم. ماذا ستصنع معهم؟