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 أو Heroku. عند تحديد أي من الخيارات أعلاه ، ستتم إعادة توجيهك إلى صفحات تسجيل الدخول الخاصة بها. إذا قمت بتسجيل الدخول باستخدام Heroku ، فسيطلبون منك إعداد بطاقة ائتمان معهم وإرفاق الخدمة بمثيل Heroku محدد لك.
إذا كنت جديدًا في Salesforce وليس لديك حساب Heroku ، فإن إنشاء حساب معهم يكون سريعًا إلى حد ما - حتى أسرع إذا كنت ترغب في التسجيل عبر حساب اجتماعي موجود مسبقًا مثل حساب Google.
سنفترض من هنا أنك تستخدم Salesforce (عبر حساب اجتماعي أم لا) بدلاً من Heroku. تتضمن العملية القليل من التراجع ، لذا سترغب في الانتباه عن كثب إلى هذه الخطوات.
بمجرد تسجيل الدخول إلى Salesforce ، ستواجه شاشة جولة لا علاقة لها بآينشتاين. في هذه المرحلة ، يجب عليك التحقق من بريدك الإلكتروني والنقر فوق رابط التحقق الخاص بهم ؛ وإلا ، فإن الخطوة التالية ستؤدي إلى حدوث خطأ.
الحصول على رمز آينشتاين API المميز
تتمثل الخطوة التالية في الرجوع إلى رابط الاشتراك الأولي لـ Einstein API ومحاولة زر تسجيل الدخول إلى Salesforce مرة أخرى. بعد ذلك ، ستقوم بتعيين كلمة مرور جديدة - حتى إذا أنشأت حسابك بمساعدة شريك تفويض خارجي مثل Google - وستتم إعادة توجيهك ، مرة أخرى ، إلى صفحة الجولة.
الآن ، قم بإعادة الدائرة مرة ثالثة إلى صفحة تسجيل API ، وانقر فوق زر تسجيل الدخول إلى Salesforce مرة أخرى. هذه المرة ستحصل على صفحة كما هو موضح أدناه. لا تغادر هذه الصفحة قبل تنزيل مفتاحك الخاص ، على الرغم من أنه قد يشير إلى أنك بحاجة إلى التحقق من بريدك الإلكتروني! إذا قمت بذلك ، فلن تكون هناك طريقة للحصول على مفتاحك الخاص بدون مساعدة يدوية من فريق الدعم الخاص بهم.
يمكنك إما تنزيل الملف على جهازك المحلي أو نسخ المفتاح ولصقه في محرر نصوص وحفظ الملف باسم einstein_platform.pem
.
في هذه الأثناء ، كما ذكرنا ، سيكون لديك بريد إلكتروني آخر للتحقق في انتظارك ، هذه الرسالة خاصة بأينشتاين. انقر فوق ارتباط التحقق هذا أيضًا.
الآن بعد أن أصبح لديك مفتاح خاص ، يمكنك إنشاء رموز مميزة محدودة الوقت. كل استدعاء لواجهة برمجة التطبيقات تجريها - من إنشاء مجموعات البيانات ، إلى نماذج التدريب ، إلى نموذج التنبؤ - يحتاج إلى رمز OAuth مميز صالح في رأس الطلب. للحصول على الرمز المميز ، تحتاج إلى الانتقال إلى منشئ الرمز المميز الخاص بهم واستخدام نفس عنوان البريد الإلكتروني الذي استخدمته لتسجيل الدخول. قم بلصق أو تحميل ملف المفتاح الخاص الذي تلقيته أعلاه.
التدريب العملي على Salesforce Einstein API
يتضمن استخدام سحابة الذكاء الاصطناعي عبر Salesforce Einstein بعض المفاهيم الأساسية حول كيفية تدريب شبكة الذكاء الاصطناعي الخاصة بهم عن طريق تحميل بيانات نموذجية. إذا كان هذا لا يبدو مألوفًا ، فإن تعليمي السابق يقدم بعض الأمثلة على العمل مع Salesforce Einstein - لكل من Einstein Language و Einstein Vision.
بافتراض أنك مرتاح لذلك ، سنستخدم الآن واجهة برمجة تطبيقات REST لتصنيف الصور من أينشتاين عبر cURL أو Postman. إذا كنت تستخدم Postman ، أينما كان لدينا مكالمة cURL ، يمكنك استخدام ميزة استيراد Postman:
لنفترض أنك صادفت متطلبًا تجاريًا مفيدًا حيث تريد التمييز بين الهاتف الذكي والهاتف الأرضي بناءً على الصور ، وباستخدام هذا التعيين ، فأنت تريد تحديث نقاط العميل المحتمل أو معالجة حالة الاستخدام الخاصة بك.
الخطوة التالية هي إنشاء مجموعة البيانات الخاصة بنا. يرجى ملاحظة أنك بحاجة إلى 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>
مثل أي من هذين المثالين:
-
data=@/path/to/your/local/file.zip
-
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>
، لكن يتم استخدام مفاتيح مختلفة ، وهناك خيار ثالث:
-
sampleContent=@/path/to/your/local/file.zip
-
sampleLocation=http://somedomain/file.zip
-
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 ، باستثناء الاسم. ماذا ستصنع معهم؟