بررسی های مفید محصول را با هوش مصنوعی وب روی دستگاه تشویق کنید

مود نالپاس
Maud Nalpas
کنجی باهوکس
Kenji Baheux

بررسی های مثبت و منفی می تواند تصمیم خریدار را به شما اطلاع دهد.

طبق تحقیقات خارجی، 82 درصد از خریداران آنلاین قبل از خرید به طور فعال به دنبال نظرات منفی هستند. این نظرات منفی برای مشتریان و کسب‌وکارها مفید است، زیرا در دسترس بودن نظرات منفی می‌تواند به کاهش نرخ بازگشت و کمک به سازندگان در بهبود محصولاتشان کمک کند.

در اینجا چند راه وجود دارد که می توانید کیفیت بررسی را بهبود بخشید:

  • هر بررسی را قبل از ارسال برای سمیت بررسی کنید. ما می‌توانیم کاربران را تشویق کنیم که زبان توهین‌آمیز و همچنین سایر اظهارات غیرمفید را حذف کنند تا بررسی آنها به بهترین شکل به سایر کاربران کمک کند تا تصمیم خرید بهتری بگیرند.
    • منفی : این کیف بد است و من از آن متنفرم.
    • منفی با بازخورد مفید : زیپ ها بسیار سفت هستند و مواد ارزان به نظر می رسد. من این کیف را پس دادم.
  • بر اساس زبان مورد استفاده در مرور، رتبه‌بندی خودکار ایجاد کنید.
  • تعیین کنید که آیا بررسی منفی است یا مثبت.
اسکرین شات بررسی نمونه با احساس و رتبه ستاره.
در این مثال، نظر بازبین حس مثبت و امتیاز پنج ستاره داده می شود.

در نهایت، کاربر باید در مورد امتیاز محصول حرف آخر را بزند.

کدهای زیر راه حل هایی را در دستگاه، در مرورگر ارائه می دهد. بدون نیاز به دانش توسعه هوش مصنوعی، سرور یا کلیدهای API.

پیش نیازها

در حالی که هوش مصنوعی سمت سرور با راه‌حل‌هایی (مانند Gemini API یا OpenAI API ) راه‌حل‌های قوی برای بسیاری از برنامه‌ها ارائه می‌دهد، در این راهنما بر روی هوش مصنوعی وب روی دستگاه تمرکز می‌کنیم. هوش مصنوعی وب روی دستگاه زمانی است که مدل‌های هوش مصنوعی در مرورگر اجرا می‌شوند تا تجربه را برای کاربران وب بدون رفت و برگشت سرور بهبود بخشند.

در این لبه کد، ما از ترکیبی از تکنیک‌ها برای نشان دادن آنچه در جعبه ابزار شما برای هوش مصنوعی وب روی دستگاه است استفاده می‌کنیم.

ما از کتابخانه ها و مدل های زیر استفاده می کنیم:

  • TensforFlow.js برای تجزیه و تحلیل سمیت. TensorFlow.js یک کتابخانه یادگیری ماشین منبع باز برای استنباط و آموزش در وب است.
  • transformers.js برای تحلیل احساسات. Transformers.js یک کتابخانه هوش مصنوعی وب از Hugging Face است.
  • Gemma 2B برای رتبه بندی ستاره ها. Gemma خانواده ای از مدل های سبک وزن است که از تحقیقات و فناوری هایی ساخته شده است که گوگل برای ایجاد مدل های Gemini از آن استفاده کرده است. برای اجرای Gemma در مرورگر، از آن با API آزمایشی LLM Inference MediaPipe استفاده می‌کنیم.

ملاحظات UX و ایمنی

چند ملاحظه برای اطمینان از تجربه و ایمنی مطلوب کاربر وجود دارد:

  • به کاربر اجازه ویرایش رتبه بندی را بدهید. در نهایت، کاربر باید در مورد امتیاز محصول حرف آخر را بزند.
  • برای کاربر روشن کنید که رتبه‌بندی و بررسی‌ها خودکار هستند.
  • به کاربران اجازه ارسال نظر طبقه بندی شده به عنوان سمی را بدهید، اما بررسی دوم را روی سرور انجام دهید. این از تجربه ناامیدکننده ای که در آن مرور غیر سمی به اشتباه به عنوان سمی (مثبت کاذب) طبقه بندی می شود، جلوگیری می کند. این همچنین مواردی را پوشش می دهد که یک کاربر مخرب موفق به دور زدن بررسی سمت مشتری می شود.
  • بررسی سمیت سمت مشتری مفید است، اما می توان آن را دور زد. اطمینان حاصل کنید که یک بررسی سمت سرور نیز اجرا می کنید.

سمیت را با TensorFlow.js تجزیه و تحلیل کنید

شروع به تجزیه و تحلیل سمیت یک بررسی کاربر با TensorFlow.js سریع است.

  1. کتابخانه 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) را به طور کامل در مرورگر اجرا کنید.

این قابلیت جدید با توجه به نیازهای حافظه و محاسباتی LLM که بیش از صد برابر بزرگتر از مدل‌های سنتی روی دستگاه است، تحول‌آفرین است. بهینه‌سازی‌ها در پشته روی دستگاه این امکان را فراهم می‌کنند، از جمله عملیات‌های جدید، کوانتیزه‌سازی، ذخیره‌سازی حافظه پنهان و اشتراک‌گذاری وزن. منبع: "مدل های زبان بزرگ روی دستگاه با MediaPipe و TensorFlow Lite" .

  1. API استنتاج MediaPipe LLM را نصب و وارد کنید .
  2. دانلود یک مدل . در اینجا، ما از Gemma 2B ، دانلود شده از Kaggle استفاده می کنیم. Gemma 2B کوچکترین مدل وزن باز گوگل است.
  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`;

غذای آماده

هیچ تخصص AI/ML مورد نیاز نیست . طراحی یک اعلان نیاز به تکرار دارد، اما بقیه کدها توسعه وب استاندارد هستند.

مدل های روی دستگاه نسبتا دقیق هستند . اگر قطعات این سند را اجرا کنید، مشاهده خواهید کرد که هر دو تجزیه و تحلیل سمیت و احساسات نتایج دقیقی را ارائه می دهند. رتبه‌بندی‌های Gemma، در بیشتر موارد، با رتبه‌بندی مدل Gemini برای چند بررسی مرجع آزمایش‌شده مطابقت داشتند. برای تأیید این دقت، آزمایش بیشتری لازم است.

همانطور که گفته شد، طراحی درخواست برای Gemma 2B کار می برد. از آنجایی که Gemma 2B یک LLM کوچک است، برای ایجاد نتایج رضایت‌بخش به یک اعلان دقیق نیاز دارد - به ویژه جزئیات بیشتر از آنچه در Gemini API مورد نیاز است.

استنباط می تواند برق آسا باشد . اگر قطعه‌های این سند را اجرا می‌کنید، باید مشاهده کنید که استنتاج می‌تواند سریع‌تر و احتمالاً سریع‌تر از رفت و برگشت سرور در تعدادی از دستگاه‌ها باشد. گفته می شود، سرعت استنتاج می تواند بسیار متفاوت باشد. محک گذاری کامل در دستگاه های هدف مورد نیاز است. انتظار داریم استنتاج روی دستگاه با به‌روزرسانی‌های Web GPU، WebAssembly و کتابخانه سریع‌تر شود. به عنوان مثال، Transformers.js پشتیبانی از GPU وب را در نسخه 3 اضافه می کند، که می تواند استنتاج روی دستگاه را چندین برابر افزایش دهد .

اندازه های دانلود می تواند بسیار بزرگ باشد. استنتاج در مرورگر سریع است، اما بارگیری مدل‌های هوش مصنوعی می‌تواند یک چالش باشد. برای انجام هوش مصنوعی درون مرورگر، معمولاً به یک کتابخانه و یک مدل نیاز دارید که به حجم دانلود برنامه وب شما اضافه می کند.

در حالی که مدل سمیت Tensorflow (یک مدل کلاسیک پردازش زبان طبیعی) تنها چند کیلوبایت است، مدل‌های هوش مصنوعی مولد مانند مدل تحلیل احساسات پیش‌فرض Transformers.js به 60 مگابایت می‌رسند. مدل‌های زبان بزرگ مانند Gemma می‌توانند تا 1.3 گیگابایت حجم داشته باشند. این اندازه از میانگین 2.2 مگابایت اندازه صفحه وب ، که در حال حاضر بسیار بزرگتر از اندازه توصیه شده برای بهترین عملکرد است، بیشتر است. هوش مصنوعی مولد روی دستگاه در سناریوهای خاص قابل اجرا است.

حوزه هوش مصنوعی مولد در وب به سرعت در حال پیشرفت است! انتظار می‌رود مدل‌های کوچک‌تر و بهینه‌شده برای وب در آینده ظهور کنند .

مراحل بعدی

کروم در حال آزمایش راه دیگری برای اجرای هوش مصنوعی مولد در مرورگر است. برای آزمایش آن می توانید در برنامه پیش نمایش اولیه ثبت نام کنید .