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

Maud Nalpas
Maud Nalpas
Kenji Baheux
Kenji Baheux

تاريخ النشر: 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.

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

تُعدّ هذه الميزة الجديدة فعّالة بشكل خاص نظرًا لمتطلبات الذاكرة والمعالجة للنماذج اللغوية الكبيرة، والتي تزيد عن مائة مرة مقارنةً بالنماذج على جانب العميل. تُتيح التحسينات على مستوى حِزم الويب ذلك، بما في ذلك العمليات الجديدة والتحويل إلى أعداد صحيحة ونبذة التخزين المؤقت ومشاركة الأوزان. المصدر: "نماذج لغوية كبيرة على الجهاز باستخدام MediaPipe وTensorFlow Lite".

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

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

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

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

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

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

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