التشجيع على تقديم مراجعات مفيدة للمنتجات باستخدام الذكاء الاصطناعي على الويب على الجهاز

Maud Nalpas
Maud Nalpas
Kenji Baheux
Kenji Baheux
Alexandra Klepper
Alexandra Klepper

يمكن أن تساعد المراجعات الإيجابية والسلبية في اتخاذ قرار الشراء الذي يتخذه المشتري.

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

إليك بعض الطرق التي يمكنك من خلالها تحسين جودة المراجعات:

  • عليك التحقق من كل مراجعة للتأكّد من أنّها غير لائقة قبل إرسالها. يمكننا تشجيع المستخدمين على إزالة اللغة المسيئة وغيرها من الملاحظات غير المفيدة، كي تساعد مراجعتهم المستخدمين الآخرين على اتخاذ قرار شراء أفضل.
    • سلبية: هذه الحقيبة سيئة، وأكرهها.
    • سلبية ذات ملاحظات مفيدة: السحّابات متينة جدًا والخامة تبدو رخيصة. لقد أرجعت هذه الحقيبة.
  • إنشاء تقييم تلقائيًا استنادًا إلى اللغة المستخدمة في المراجعة.
  • حدِّد ما إذا كانت المراجعة سلبية أم إيجابية.
لقطة شاشة لمثال على مراجعة مع شعور وتقييم بالنجوم.
في هذا المثال، يحصل تعليق المُراجع على تقييم إيجابي وتقييم بخمس نجوم.

في النهاية، يجب أن يكون لدى المستخدم الكلمة الأخيرة بشأن تصنيف المنتج.

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

المتطلبات الأساسية

على الرغم من أنّ استخدام حلول الذكاء الاصطناعي من جهة الخادم (مثل Gemini API أو OpenAI API) يوفّر حلولاً فعّالة للعديد من التطبيقات، سنركّز في هذا الدليل على الذكاء الاصطناعي (AI) للويب على الجهاز فقط. يتم استخدام الذكاء الاصطناعي على الجهاز فقط عند تشغيل نماذج الذكاء الاصطناعي في المتصفّح لتحسين تجربة مستخدمي الويب بدون جولات ذهاب وعودة من الخادم.

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

نستخدم المكتبات والنماذج التالية:

  • TensforFlow.js لتحليل اللغة غير اللائقة. TensorFlow.js هي مكتبة مفتوحة المصدر لتعلُّم الآلة مخصّصة لكل من الاستنتاج والتدريب على الويب.
  • transformers.js لتحليل الآراء. Transformers.js هي مكتبة تعتمد على الذكاء الاصطناعي على الويب من إنشاء Hugging Face.
  • Gemma 2B للحصول على التقييمات بالنجوم. جيما هي عائلة من النماذج الخفيفة والمفتوحة التي تم بناؤها من الأبحاث والتكنولوجيا التي استخدمتها Google لإنشاء نماذج برج الجوزاء. لتشغيل Gemma في المتصفّح، نستخدمها مع واجهة برمجة التطبيقات التجريبية للاستنتج اللغوي الكبير من MediaPipe.

اعتبارات تجربة المستخدم والأمان

هناك بعض الاعتبارات لضمان أفضل تجربة للمستخدم وأمانها:

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

تحليل انتشار اللغة غير اللائقة باستخدام TensorFlow.js

يمكنك بسرعة بدء تحليل مدى اللغة غير اللائقة في مراجعة أحد المستخدمين باستخدام TensorFlow.js.

  1. ثبِّت وimport مكتبة TensorFlow.js ونموذج اللغة غير اللائقة.
  2. ضبط الحد الأدنى لثقة التنبؤ. القيمة الافتراضية هي 0.85، وفي مثالنا، قمنا بتعيينها على 0.9.
  3. حمِّل النموذج بشكل غير متزامن.
  4. صنِّف المراجعة بشكل غير متزامن. تحدد رموزنا التوقعات التي تتجاوز الحد الأدنى 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

  1. تثبيت مكتبة Transformers.js واستيرادها.

  2. قم بإعداد مهمة تحليل المشاعر باستخدام مسار مخصص. عند استخدام مسار لأول مرة، يتم تنزيل النموذج وتخزينه مؤقتًا. من ذلك الوقت فصاعدًا، سيصبح تحليل الآراء أسرع بكثير.

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

مثلاً:

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) بالكامل في المتصفّح.

تساهم هذه الميزة الجديدة في إحداث تغييرات جذرية بشكل خاص مع الأخذ في الاعتبار متطلبات الذاكرة والحسابية للنماذج اللغوية الكبيرة، والتي يزيد حجمها بمئات المرات عن النماذج التقليدية المضمّنة على الجهاز. وقد أدت التحسينات التي تتم على الجهاز فقط إلى تحقيق ذلك، بما في ذلك العمليات الجديدة وتحديد الكميات والتخزين المؤقت ومشاركة الوزن. المصدر: "large Language Models On-Device with MediaPipe وTensorFlow Lite".

  1. تثبيت واستيراد واجهة برمجة تطبيقات الاستنتاج في MediaPipe اللغوي الكبير
  2. نزِّل نموذجًا. هنا، نستخدم Gemma 2B، التي تم تنزيلها من Kaggle. "Gemma 2B" هي أصغر طُرز نماذج الوزن المفتوح من Google.
  3. وجِّه الرمز إلى ملفات النموذج الصحيحة باستخدام FilesetResolver. هذا مهم، لأنّ نماذج الذكاء الاصطناعي التوليدي قد يكون لها بنية دليل محددة لمواد العرض.
  4. تحميل النموذج وضبطه باستخدام واجهة MediaPipe اللغوية الكبيرة. جهز النموذج للاستخدام: حدد موقع نموذجه، والمدة المفضلة للردود، والمستوى المفضل للإبداع مع درجة الحرارة.
  5. اكتب طلبًا للنموذج (اطّلِع على مثال).
  6. في انتظار استجابة النموذج.
  7. تحليل التقييم: استخرِج التقييم بالنجوم من استجابة النموذج.
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 عبارة عن نموذج لغوي كبير (LLM)، يجب تقديم طلب مفصّل للحصول على نتائج مُرضية، وخصوصًا أنّه أكثر تفصيلاً مما هو مطلوب في Gemini API.

يمكن أن يكون الاستنتاج سريعًا للغاية. إذا قمت بتشغيل المقتطفات من هذا المستند، فيجب أن تلاحظ أن الاستنتاج يمكن أن يكون سريعًا، ومن المحتمل أن يكون أسرع من عمليات الإرسال والاستقبال للخادم، على عدد من الأجهزة. ومع ذلك، يمكن أن تختلف سرعة الاستنتاج اختلافًا كبيرًا. يلزم إجراء قياس دقيق على الأجهزة المستهدفة. نتوقع أن يستمر الاستنتاج على الجهاز بشكل أسرع من خلال تحديثات وحدة معالجة الرسومات على الويب وWebAssembly وتحديثات المكتبة. على سبيل المثال، يضيف Transformers.js إتاحة استخدام وحدة معالجة الرسومات على الويب في الإصدار 3، ما قد يؤدي إلى تسريع الاستنتاج على الجهاز في مواضع عديدة.

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

في حين أنّ نموذج اللغة غير اللائقة في Tensorflow (نموذج كلاسيكي لمعالجة اللغات الطبيعية) لا يزيد عن بضعة كيلوبايتات، تصل نماذج الذكاء الاصطناعي التوليدي مثل نموذج تحليل الآراء التلقائي من Transformers.js إلى 60 ميغابايت. يمكن أن يصل حجم النماذج اللغوية الكبيرة مثل Gemma إلى 1.3 غيغابايت. يتجاوز ذلك متوسط حجم صفحة الويب الذي يبلغ 2.2 ميغابايت، وهو حاليًا أكبر بكثير مما يُنصَح به لتحقيق أفضل أداء. يمكن الاستفادة من الذكاء الاصطناعي التوليدي على الجهاز في سيناريوهات محدّدة.

يتطوّر مجال الذكاء الاصطناعي التوليدي على الويب بشكل سريع. من المتوقّع ظهور نماذج أصغر حجمًا ومحسَّنة للويب في المستقبل.

الخطوات التالية

يجرّب Chrome طريقة أخرى لتشغيل الذكاء الاصطناعي التوليدي في المتصفّح. يمكنك الاشتراك في برنامج الاستخدام المبكر التجريبي لاختباره.