עידוד ביקורות מועילות על מוצרים באמצעות AI לאינטרנט במכשיר

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

ביקורות חיוביות ושליליות יכולות לעזור לקונה לקבל החלטה בנוגע לרכישה.

לפי מחקר חיצוני, 82% מהקונים באינטרנט מחפשים באופן פעיל מוצרים שליליים לפני ביצוע רכישה. הביקורות השליליות האלה מועילות ל ללקוחות ולעסקים, כי הזמינות של ביקורות שליליות יכולה לעזור להפחית את שיעורי ההחזרה ולעזור ליצרנים לשפר את המוצרים שלהם.

הנה כמה דרכים לשפר את איכות הביקורת:

  • חשוב לבדוק את מידת הרעילות של כל ביקורת לפני שהיא נשלחת. אנחנו יכולים לעודד משתמשים להסיר שפה פוגענית והערות אחרות לא מועילות, כדי שהביקורת שלהם תעזור למשתמשים אחרים לקבל החלטה טובה יותר בנוגע לרכישה.
    • שלילי: התיק הזה גרוע, ואני שונא אותו.
    • שלילי עם משוב שימושי: הרוכסנים מאוד נוקשים והחומר מרגיש זול. החזרתי את התיק הזה.
  • נוצר דירוג באופן אוטומטי על סמך השפה שבה כתובה הביקורת.
  • קובעים אם הביקורת שלילית או חיובית.
צילום מסך של ביקורת לדוגמה עם סנטימנט ודירוג כוכבים.
בדוגמה הזו, התגובה של כותב הביקורת מקבלת סנטימנט חיובי ודירוג של חמישה כוכבים.

בסופו של דבר, דירוג המוצר צריך להיות המילה הסופית של המשתמש.

ב-Codelab הבא יש פתרונות במכשיר, בדפדפן. אין AI שנדרשים ידע בפיתוח, שרתים או מפתחות API.

דרישות מוקדמות

בעוד ש-AI בצד השרת עם פתרונות (כמו Gemini API או OpenAI API) מציע פתרונות יעילים בהרבה אפליקציות, במדריך הזה נתמקד בבינה מלאכותית לאינטרנט במכשיר. AI בדפדפן במכשיר הוא כשמודלים של AI פועלים בדפדפן, במטרה לשפר את החוויה של משתמשי האינטרנט ללא פעולות הלוך ושוב של השרת.

ב-Codelab הזה, אנחנו משתמשים בשילוב של שיטות כדי להראות לכם מה יש בארגז הכלים שלכם לבינה מלאכותית גנרטיבית במכשיר.

אנחנו משתמשים בספריות ובמודלים הבאים:

  • TensforFlow.js לניתוח רעילות. TensorFlow.js היא ספריית קוד פתוח של למידת מכונה גם להסקת מסקנות וגם לאימון באינטרנט.
  • transformers.js לניתוח סנטימנטים. Transformers.js היא ספריית AI באינטרנט שמבוססת על 'פנים מחבקות'.
  • Gemma 2B לדירוג כוכבים. Gemma היא משפחה של מודלים פתוחים וקלים שנוצרו על בסיס המחקר והטכנולוגיה שבה Google השתמשה כדי ליצור את המודלים של Gemini. כדי להריץ את Gemma בדפדפן, אנחנו משתמשים בה עם ה-API הניסיוני של LLM Inference API של MediaPipe.

שיקולי חוויית משתמש ובטיחות

יש כמה שיקולים שיעזרו לכם להבטיח חוויית משתמש ובטיחות אופטימלית:

  • המשתמשים יכולים לערוך את הדירוג. בסופו של דבר, המשתמש צריך לקבל את מילה על דירוג המוצר.
  • צריך להבהיר למשתמש שהדירוג והביקורות הם אוטומטיים.
  • המשתמשים יכולים לפרסם ביקורת שסווגה כרעילה, אבל כדאי להריץ בדיקה נוספת השרת. הדבר מונע חוויה מתסכלת שבה ביקורת לא רעילה מסווג בטעות כרעיל (חיובי שגוי). הפנייה הזו רלוונטית גם למקרים שבהם מצב שבו משתמש זדוני מצליח לעקוף את הבדיקה בצד הלקוח.
  • בדיקת רעילות בצד הלקוח מועילה, אבל אפשר לעקוף אותה. מוודאים להריץ בדיקה גם בצד השרת.

ניתוח רעילות באמצעות 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

באמצעות ממשק ה-API להסקת מסקנות (LLM) אפשר להריץ מודלים גדולים של שפה (LLMs) באופן מלא בדפדפן.

היכולת החדשה הזו מהפכנית במיוחד בהתחשב בזיכרון את הדרישות במחשוב של מודלים גדולים של שפה, שגדולות פי מאה יותר מזה של מודלים גדולים של שפה למודלים מסורתיים במכשיר. האופטימיזציה של כל סטאק המכשיר זה אפשרי, כולל פעולות חדשות, כימות, שמירה במטמון ושיתוף משקולות. מקור: Large Language Models On-Device with MediaPipe ו-TensorFlow Lite

  1. התקנה וייבוא ממשק ה-API להסקת מסקנות (LLM) של MediaPipe LLM.
  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`;

חטיפות דסקית

לא נדרשת מומחיות ב-AI או ב-ML. כדי לעצב הנחיה צריך לבצע איטרציות, שאר הקוד הוא פיתוח סטנדרטי באינטרנט.

המודלים במכשיר מדויקים למדי. אם מריצים את קטעי הקוד תוכלו לראות שגם ניתוח הרעלות וניתוח הסנטימנטים מעניקים תוצאות מדויקות. בדרך כלל, הדירוגים של Gemma תאמו למודל של Gemini לכמה ביקורות שנבדקו. כדי לאמת את רמת הדיוק הזו, נדרשות בדיקות נוספות.

עם זאת, עיצוב ההנחיה ל-Gemma 2B דורש עבודה. כי Gemma 2B מודל שפה גדול (LLM) קטן, הוא צריך הנחיה מפורטת כדי להפיק תוצאות מתאימות – במיוחד מפורט יותר ממה שנדרש עם Gemini API.

ההסקה יכולה להיות מהירה כברק. אם אתם מריצים את קטעי הקוד מהמסמך הזה, שימו לב שההסקה יכולה להתפרסם במהירות, ועשויה להיות מהירה יותר מאשר השרת הלוך ושוב במספר מכשירים. עם זאת, מהירות ההסקה יכולה להשתנות במידה רבה. נדרשת נקודת השוואה קפדנית במכשירי היעד. אנחנו מצפים להציג במכשיר כדי להמשיך להגיע מהר יותר עם Web GPU , WebAssembly ועדכוני ספרייה. לדוגמה, הפונקציה Transformers.js מוסיפה תמיכה ב-GPU באינטרנט בגרסה 3, מה שיכול להאיץ את המסקנות במכשיר להרבה פעמים.

יכול להיות שגודל ההורדה יהיה גדול. המסקנות בדפדפן הן מהירות, טעינת מודלים של AI יכולה להיות מאתגרת. כדי לבצע בינה מלאכותית (AI) בדפדפן, בדרך כלל צריכים גם ספרייה וגם מודל, שנוספו לגודל ההורדה של אפליקציית האינטרנט.

או שמודל הרעילות של Tensorflow (מודל קלאסי של עיבוד שפה טבעית) הוא רק כמה קילובייט (KB), מודלים של בינה מלאכותית גנרטיבית כמו ברירת המחדל של Transformers.js המודל לניתוח סנטימנטים מגיע ל-60MB. מודלי שפה גדולים (LLM), כמו Gemma, יכולים בגודל של עד 1.3GB. הערך הזה חורג מהחציון גודל דף אינטרנט של 2.2MB, כלומר כבר הרבה יותר גדול מהמומלץ להשגת הביצועים הטובים ביותר, במידה רבה. במכשיר אפשר להשתמש ב-AI גנרטיבי בתרחישים ספציפיים.

תחום ה-AI הגנרטיבי באינטרנט מתפתח במהירות! קטן יותר, מודלים שעברו אופטימיזציה לאתרים צפויה להופיע הוא בעתיד.

השלבים הבאים

אנחנו ב-Chrome בוחנים דרך נוספת להפעלת בינה מלאכותית גנרטיבית בדפדפן. אפשר להירשם לתוכנית של טרום-השקה (Preview) כדי לבדוק את זה.