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

کنجی باهوکس
Kenji Baheux
الکساندرا کلپر
Alexandra Klepper

منتشر شده: ۱۶ مه ۲۰۲۴

نظرات مثبت و منفی می‌توانند در تصمیم‌گیری خرید خریدار مؤثر باشند.

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

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

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

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

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

پیش‌نیازها

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

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

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

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

ملاحظات تجربه کاربری و ایمنی

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

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

تجزیه و تحلیل سمیت با TensorFlow.js

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

  1. کتابخانه TensorFlow.js و مدل سمیت را نصب و وارد کنید .
  2. حداقل ضریب اطمینان پیش‌بینی را تعیین کنید. مقدار پیش‌فرض ۰.۸۵ است و در مثال ما، آن را روی ۰.۹ تنظیم کرده‌ایم.
  3. مدل را به صورت ناهمزمان بارگذاری کنید.
  4. بررسی را به صورت ناهمزمان طبقه‌بندی کنید. کد ما پیش‌بینی‌هایی را که از آستانه ۰.۹ برای هر دسته‌بندی تجاوز می‌کنند، شناسایی می‌کند.

این مدل می‌تواند سمیت را در قالب حمله به هویت، توهین، فحاشی و موارد دیگر طبقه‌بندی کند.

برای مثال:

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، می‌توانید مدل‌های زبانی بزرگ (LLM) را به‌طور کامل در مرورگر اجرا کنید.

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

  1. رابط برنامه‌نویسی کاربردی استنتاج MediaPipe LLM را نصب و وارد کنید .
  2. دانلود یک مدل . در اینجا، ما از Gemma 2B که از Kaggle دانلود شده است استفاده می‌کنیم. Gemma 2B کوچکترین مدل از مدل‌های وزن-باز گوگل است.
  3. کد را با استفاده از FilesetResolver به فایل‌های مدل صحیح ارجاع دهید. این مهم است زیرا مدل‌های هوش مصنوعی مولد ممکن است ساختار دایرکتوری خاصی برای دارایی‌های خود داشته باشند.
  4. مدل را با رابط LLM مدیاپایپ بارگذاری و پیکربندی کنید. مدل را برای استفاده آماده کنید: مکان مدل، طول ترجیحی پاسخ‌ها و سطح ترجیحی خلاقیت با دما را مشخص کنید.
  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 کوچک است، برای تولید نتایج رضایت‌بخش به یک اعلان دقیق نیاز دارد - به ویژه دقیق‌تر از آنچه که برای API Gemini لازم است.

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

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

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

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

مراحل بعدی

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