تاريخ النشر: 16 أيار (مايو) 2024
يمكن أن تساعد المراجعات الإيجابية والسلبية على اتخاذ قرار الشراء الذي يتخذه المشتري.
وفقًا لأبحاث خارجية، يبحث% 82 من المتسوّقين على الإنترنت بنشاط عن المراجعات العميقة السلبية قبل إجراء عملية شراء. تكون هذه المراجعات السلبية مفيدة للعملاء والأنشطة التجارية، لأنّ توفّرها يمكن أن يساعد في خفض معدّلات الإرجاع ومساعدة صنّاع المحتوى على تحسين منتجاتهم.
وفي ما يلي بعض الطرق التي يمكنك من خلالها تحسين جودة المراجعة:
- تحقّق من كل مراجعة بحثًا عن أي محتوى مسيء قبل إرسالها. ويمكننا تشجيع المستخدمين على إزالة اللغة المسيئة وغيرها من الملاحظات غير المفيدة كي تساعد مراجعاتهم المستخدمين الآخرين على اتخاذ قرار الشراء بشكل أفضل.
- سلبي: هذه الحقيبة سيئة جدًا.
- سلالة مع ملاحظات مفيدة السحّابات صلبة جدًا والمواد منخفضة التكلفة. لقد أعدت هذه الحقيبة.
- إنشاء تقييم تلقائيًا استنادًا إلى اللغة المستخدَمة في المراجعة
- حدِّد ما إذا كانت المراجعة سلبية أو إيجابية.
في النهاية، يجب أن يكون للمستخدم الكلمة النهائية في تقييم المنتج.
يوفّر ورشة رموز البرامج التالية حلولاً من جهة العميل وعلى الجهاز وفي المتصفّح. لا يلزم توفّر معرفة بتطوير الذكاء الاصطناعي أو خوادم أو مفاتيح واجهة برمجة التطبيقات.
المتطلبات الأساسية
على الرغم من أنّ الذكاء الاصطناعي من جهة الخادم مع الحلول (مثل Gemini API أو OpenAI API) يقدّم حلولًا فعّالة ل العديد من التطبيقات، نركّز في هذا الدليل على الذكاء الاصطناعي على الويب من جهة العميل. تحدث عملية الاستنتاج باستخدام الذكاء الاصطناعي من جهة العميل في المتصفّح لتحسين تجربة مستخدمي الويب من خلال إزالة عمليات التنقّل بين الخادم والمستخدم.
في هذا الدرس التطبيقي حول الترميز، نستخدم مزيجًا من الأساليب لنعرض لك أدواتك للذكاء الاصطناعي من جهة العميل.
نستخدم المكتبات والنماذج التالية:
- TensforFlow.js لتحليل السمية تُعدّ TensorFlow.js مكتبة مفتوحة المصدر لتعلُّم الآلة لكل من الاستنتاج والتدريب على الويب.
- transformers.js لتحليل الآراء. Transformers.js هي مكتبة ذكاء اصطناعي على الويب من Hugging Face.
- Gemma 2B لتقييم النجوم Gemma هي مجموعة من النماذج الخفيفة والمفتوحة التي تم إنشاؤها استنادًا إلى الأبحاث والتكنولوجيا التي استخدمتها Google لإنشاء نماذج Gemini. لتشغيل Gemma في المتصفح، نستخدمه مع واجهة برمجة التطبيقات التجريبية LLM Inference API من MediaPipe.
اعتبارات تجربة المستخدم والسلامة
هناك بعض النقاط التي يجب مراعاتها لضمان توفير أفضل تجربة وأمان للمستخدمين:
- السماح للمستخدم بتعديل التقييم في النهاية، يجب أن يكون للمستخدم تقييمه الشخصي بشأن المنتج.
- يجب أن يوضّح التطبيق للمستخدم أنّ التقييمات والمراجعات آلية.
- السماح للمستخدمين بنشر مراجعة مصنّفة على أنّها مسيئة، ولكن إجراء عملية تحقّق ثانية على الخادم ويمنع ذلك حدوث تجربة مزعجة يتم فيها تصنيف مراجعة غير مسيئة بطريق الخطأ على أنّها مسيئة (نتيجة إيجابية خاطئة). ويشمل ذلك أيضًا الحالات التي يتم فيها نجاح مستخدم ضار في تجاوز عملية التحقّق من جهة العميل.
- إنّ التحقّق من المحتوى الضار من جهة العميل مفيد، ولكن يمكن تجاوزه. تأكَّد من إجراء عملية تحقّق من جهة الخادم أيضًا.
تحليل السمية باستخدام TensorFlow.js
يمكنك بسرعة بدء تحليل سمية مراجعة أحد المستخدمين باستخدام TensorFlow.js.
- ثبِّت مكتبة TensorFlow.js ونموذج استخدام اللغة غير اللائقة، وقم بتثبيتها وimport.
- حدِّد الحدّ الأدنى لمستوى ثقة التوقّعات. القيمة الافتراضية هي 0.85، وفي المثال الذي أنشأناه على 0.9.
- تحميل النموذج بشكل غير متزامن
- تصنيف المراجعة بشكل غير متزامن ترصد تعليماتنا البرمجية التوقّعات التي تتجاوز الحدّ الأدنى 0.9 لأي فئة.
يمكن لهذا النموذج تصنيف المحتوى المسيء حسب الهجمات على الهوية والشتائم والمحتوى الفاضح وغير ذلك.
على سبيل المثال:
import * as toxicity from '@tensorflow-models/toxicity';
// Minimum prediction confidence allowed
const TOXICITY_COMMENT_THRESHOLD = 0.9;
const toxicityModel = await toxicity.load(TOXICITY_COMMENT_THRESHOLD);
const toxicityPredictions = await toxicityModel.classify([review]);
// `predictions` is an array with the raw toxicity probabilities
const isToxic = toxicityPredictions.some(
(prediction) => prediction.results[0].match
);
تحديد الشعور باستخدام Transformers.js
ثبِّت مكتبة Transformers.js واستيرادها.
إعداد مهمةتحليل المشاعر باستخدام مسار إحالة مخصّص عند استخدام مسار بيانات لأول مرة، يتم تنزيل النموذج وتخزينه مؤقتًا. من ذلك الحين فصاعدًا، من المفترض أن يكون تحليل المشاعر أسرع بكثير.
تصنيف المراجعة بشكل غير متزامن استخدِم حدًا مخصّصًا لضبط مستوى الثقة الذي ترى أنّه قابل للاستخدام في تطبيقك.
على سبيل المثال:
import { pipeline } from '@xenova/transformers';
const SENTIMENT_THRESHOLD = 0.9;
// Create a pipeline (don't block rendering on this function)
const transformersjsClassifierSentiment = await pipeline(
'sentiment-analysis'
);
// When the user finishes typing
const sentimentResult = await transformersjsClassifierSentiment(review);
const { label, score } = sentimentResult[0];
if (score > SENTIMENT_THRESHOLD) {
// The sentiment is `label`
} else {
// Classification is not conclusive
}
اقتراح تقييم بالنجوم باستخدام Gemma وMediaPipe
باستخدام واجهة برمجة التطبيقات LLM Inference API، يمكنك تشغيل النماذج اللغوية الكبيرة (LLM) بالكامل في المتصفّح.
وتمثّل هذه الإمكانية الجديدة تحولاً خاصًا في ما يتعلق بمتطلبات الذاكرة والحوسبة للنماذج اللغوية الكبيرة، التي يزيد حجمها عن النماذج من جهة العميل بأكثر من مائة مرة. وتجعل التحسينات عبر حزمة الويب هذا ممكنًا، بما في ذلك العمليات الجديدة، والكمي، والتخزين المؤقت، ومشاركة الوزن. المصدر: "النماذج اللغوية الكبيرة على الجهاز باستخدام MediaPipe وTensorFlow Lite".
- تثبيت واستيراد واجهة برمجة تطبيقات الاستنتاج MediaPipe LLM.
- نزِّل نموذجًا. في ما يلي، نستخدم Gemma 2B، التي تم تنزيلها من Kaggle. Gemma 2B هو أصغر نماذج Google المتاحة للجميع.
- وجِّه الرمز البرمجي إلى ملفات النماذج الصحيحة باستخدام
FilesetResolver
. وهذا مهم لأنّ نماذج الذكاء الاصطناعي التوليدي قد تتّبع بنية دليل معيّنة لمواد العرض. - حمِّل النموذج واضبطه باستخدام واجهة النموذج اللغوي الكبير في MediaPipe. تجهيز ال نموذج للاستخدام: حدِّد موقع النموذج وطول الردود المفضّل ومستوى الإبداع المفضّل مع درجة الحرارة.
- أدخِل طلبًا إلى النموذج (اطّلِع على مثال).
- انتظِر استجابة النموذج.
- تحليل التقييم: استخراج تقييم النجوم من ردّ النموذج
import { FilesetResolver, LlmInference } from '@mediapipe/tasks-genai';
const mediaPipeGenAi = await FilesetResolver.forGenAiTasks();
const llmInference = await LlmInference.createFromOptions(mediaPipeGenAi, {
baseOptions: {
modelAssetPath: '/gemma-2b-it-gpu-int4.bin',
},
maxTokens: 1000,
topK: 40,
temperature: 0.5,
randomSeed: 101,
});
const prompt = …
const output = await llmInference.generateResponse(prompt);
const int = /\d/;
const ratingAsString = output.match(int)[0];
rating = parseInt(ratingAsString);
مثال على طلب
const prompt = `Analyze a product review, and then based on your analysis give me the
corresponding rating (integer). The rating should be an integer between 1 and 5.
1 is the worst rating, and 5 is the best rating. A strongly dissatisfied review
that only mentions issues should have a rating of 1 (worst). A strongly
satisfied review that only mentions positives and upsides should have a rating
of 5 (best). Be opinionated. Use the full range of possible ratings (1 to 5). \n\n
\n\n
Here are some examples of reviews and their corresponding analyses and ratings:
\n\n
Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor use,
but it's perfect for urban exploring.'
Analysis: The reviewer appreciates the product's style and basic
functionality. They express some uncertainty about its ruggedness but overall
find it suitable for their intended use, resulting in a positive, but not
top-tier rating.
Rating (integer): 4
\n\n
Review: 'It's a solid backpack at a decent price. Does the job, but nothing
particularly amazing about it.'
Analysis: This reflects an average opinion. The backpack is functional and
fulfills its essential purpose. However, the reviewer finds it unremarkable
and lacking any standout features deserving of higher praise.
Rating (integer): 3
\n\n
Review: 'The waist belt broke on my first trip! Customer service was
unresponsive too. Would not recommend.'
Analysis: A serious product defect and poor customer service experience
naturally warrants the lowest possible rating. The reviewer is extremely
unsatisfied with both the product and the company.
Rating (integer): 1
\n\n
Review: 'Love how many pockets and compartments it has. Keeps everything
organized on long trips. Durable too!'
Analysis: The enthusiastic review highlights specific features the user loves
(organization and durability), indicating great satisfaction with the product.
This justifies the highest rating.
Rating (integer): 5
\n\n
Review: 'The straps are a bit flimsy, and they started digging into my
shoulders under heavy loads.'
Analysis: While not a totally negative review, a significant comfort issue
leads the reviewer to rate the product poorly. The straps are a key component
of a backpack, and their failure to perform well under load is a major flaw.
Rating (integer): 1
\n\n
Now, here is the review you need to assess:
\n
Review: "${review}" \n`;
الخلاصات
لا يتطلّب ذلك خبرة في الذكاء الاصطناعي أو تعلُّم الآلة. يتطلّب تصميم طلب تكرارًا، ولكن يُعدّ باقي الرمز البرمجي من تطوير الويب العادي.
إنّ النماذج من جهة العميل دقيقة إلى حدّ ما. إذا أجريت تحليلًا للمقتطفات من هذا المستند، ستلاحظ أنّ تحليل المحتوى السام والتحليل العاطفي يقدّمان نتائج دقيقة. كانت تقييمات Gemma متطابقة في معظمها مع تقييمات نموذج Gemini لعدة مراجعات اختبارية. ولإثبات هذه الدقة، يجب إجراء المزيد من الاختبارات.
ومع ذلك، يتطلّب تصميم طلب Gemma 2B بعض الجهد. بما أنّ Gemma 2B هو نموذج لغوي كبير منخفض الموارد، يحتاج إلى طلب مفصّل لتقديم نتائج مرضية، وهو أكثر تفصيلاً من المطلوب باستخدام Gemini API.
يمكن أن يكون الاستنتاج سريعًا جدًا. في حال تنفيذ المقتطفات من هذا المستند، من المفترض أن تلاحظ أنّ الاستنتاج يمكن أن يكون سريعًا، وقد يكون أسرع من عمليات التنقّل المتكرّرة بين العميل والخادم على عدد من الأجهزة. ومع ذلك، يمكن أن تتفاوت سرعة الاستنتاج بشكل كبير. يجب إجراء تقييم شامل للأداء على الأجهزة المستهدَفة. نتوقّع أن تستمر عملية المعالجة المتقدّمة في المتصفّح في التسريع من خلال تحديثات WebGPU وWebAssembly والمكتبة. على سبيل المثال، تضيف Transformers.js دعم Web GPU في الإصدار 3، الذي يمكنه تسريع الاستنتاج على الجهاز بمقدار أضعاف.
يمكن أن تكون أحجام التنزيل كبيرة جدًا. إنّ الاستنتاج في المتصفّح سريع، ولكن قد يكون تحميل نماذج الذكاء الاصطناعي تحديًا. لإجراء الذكاء الاصطناعي داخل المتصفّح، تحتاج عادةً إلى مكتبة ونموذج لزيادة حجم تنزيل تطبيق الويب.
في حين أنّ نموذج Tensorflow للمحتوى المسيء (وهو نموذج تقليدي لمعالجة اللغة الطبيعية) يشغل بضعة كيلوبايت فقط، تصل أحجام نماذج الذكاء الاصطناعي التوليدي، مثل نموذج تحليل المشاعر التلقائي في Transformers.js، إلى 60 ميغابايت. يمكن أن يصل حجم النماذج اللغوية الكبيرة، مثل Gemma، إلى 1.3 غيغابايت. ويتجاوز ذلك متوسط حجم صفحة الويب الذي يبلغ 2.2 ميغابايت، وهو أكبر بكثير من الحجم المُقترَح لتحقيق أفضل أداء. يمكن استخدام تكنولوجيا الذكاء الاصطناعي التوليدي من جهة العميل في سيناريوهات معيّنة.
يشهد مجال الذكاء الاصطناعي التوليدي على الويب تطورًا سريعًا. من المتوقع ظهور نماذج أصغر حجمًا ومحسّنة للويب في المستقبل.
الخطوات التالية
يجرّب Chrome طريقة أخرى لتشغيل الذكاء الاصطناعي التوليدي في المتصفّح. يمكنك الاشتراك في برنامج المعاينة المبكّرة لاختبارها.