Mit Web-KI auf dem Gerät zu hilfreichen Produktrezensionen motivieren

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

Positive und negative Rezensionen können die Kaufentscheidung eines Käufers beeinflussen.

Laut externen Untersuchungen wünschen 82% der Onlinekäufer aktiv negative Rezensionen, bevor sie einen Kauf abschließen. Diese negativen Rezensionen sind für Kunden und Unternehmen nützlich, da die Verfügbarkeit negativer Rezensionen dazu beitragen kann, die Rückgabequoten zu senken und Herstellern dabei zu helfen, ihre Produkte zu verbessern.

Hier sind einige Möglichkeiten, wie Sie die Qualität von Rezensionen verbessern können:

  • Prüfen Sie jede Rezension auf unangemessene Inhalte, bevor Sie sie einreichen. Wir könnten Nutzer dazu ermutigen, anstößige oder nicht hilfreiche Aussagen zu entfernen, damit ihre Rezension anderen Nutzern bei der Kaufentscheidung am besten hilft.
    • Negativ: Die Tasche ist ätzend und ich hasse sie.
    • Negativ mit nützlichem Feedback: Die Reißverschlüsse sind sehr steif und das Material fühlt sich billig an. Ich habe diese Tasche zurückgegeben.
  • Sie erhalten automatisch eine Bewertung anhand der Sprache, die in der Rezension verwendet wird.
  • Bestimmen Sie, ob die Rezension negativ oder positiv ist.
Screenshot einer Beispielrezension mit einer Stimmung und einer Bewertung.
In diesem Beispiel wird der Kommentar des Rezensenten positiv bewertet und mit fünf Sternen bewertet.

Letztendlich sollten die Nutzenden das letzte Wort zur Produktbewertung haben.

Im folgenden Codelab findest du Lösungen direkt auf dem Gerät und im Browser. Es sind keine KI-Entwicklungskenntnisse, Server oder API-Schlüssel erforderlich.

Voraussetzungen

Während serverseitige KI mit Lösungen (z. B. der Gemini API oder der OpenAI API) robuste Lösungen für viele Anwendungen bieten, konzentrieren wir uns in diesem Leitfaden auf Web-KI auf dem Gerät. Bei der On-Device-Web-KI werden KI-Modelle im Browser ausgeführt, um die Nutzung für Webnutzer ohne Server-Roundtrips zu verbessern.

In diesem Codelab nutzen wir eine Mischung aus verschiedenen Techniken, um Ihnen zu zeigen, was sich in Ihrer Toolbox für Web-KI auf dem Gerät befindet.

Wir verwenden die folgenden Bibliotheken und Modelle:

  • TensforFlow.js für die Analyse toxischer Inhalte. TensorFlow.js ist eine Open-Source-Bibliothek für maschinelles Lernen für Inferenz und Training im Web.
  • transformers.js für die Sentimentanalyse. Transformers.js ist eine KI-Web-Bibliothek von „Hugging Face“.
  • Gemma 2B für Bewertungen. Gemma ist eine Familie leichter, offener Modelle, die auf der Forschung und Technologie basieren, mit der Google die Gemini-Modelle erstellt hat. Um Gemma im Browser auszuführen, verwenden wir die experimentelle LLM Inference API von MediaPipe.

UX- und Sicherheitsaspekte

Um die Nutzerfreundlichkeit und Sicherheit zu optimieren, sollten Sie einige Punkte beachten:

  • Nutzern erlauben, die Bewertung zu bearbeiten. Letztendlich sollten die Nutzenden das letzte Wort zur Produktbewertung haben.
  • Machen Sie für Nutzer deutlich, dass die Bewertung und die Rezensionen automatisiert sind.
  • Nutzern erlauben, eine als unangemessen eingestufte Rezension zu posten, aber eine zweite Prüfung auf dem Server durchzuführen. So vermeiden Sie frustrierende Erfahrungen, wenn eine Rezension einer nicht unangemessenen Rezension fälschlicherweise als unangemessen eingestuft wird (falsch positives Ergebnis). Dies gilt auch für Fälle, in denen es einem böswilligen Nutzer gelingt, die clientseitige Prüfung zu umgehen.
  • Eine clientseitige Überprüfung auf Toxizität ist hilfreich, kann aber umgangen werden. Sorgen Sie dafür, dass Sie auch serverseitig eine Prüfung ausführen.

Toxizität mit TensorFlow.js analysieren

Die unangemessenen Inhalte einer Nutzerrezension lassen sich schnell mit TensorFlow.js analysieren.

  1. Installieren und import Sie die TensorFlow.js-Bibliothek und das Toxicity-Modell.
  2. Legen Sie eine minimale Vorhersagekonfidenz fest. Der Standardwert ist 0, 85 und in unserem Beispiel haben wir 0,9 festgelegt.
  3. Laden Sie das Modell asynchron.
  4. Klassifizieren Sie die Rezension asynchron. Unser Code identifiziert Vorhersagen, die für eine Kategorie einen Schwellenwert von 0,9 überschreiten.

Dieses Modell kann unangemessene Äußerungen in Kategorien wie Identitätsangriffe, Beleidigung, Obszönität und mehr einordnen.

Beispiel:

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
);

Stimmung mit Transformers.js bestimmen

  1. Installieren Sie die Transformers.js-Bibliothek und importieren Sie sie.

  2. Richten Sie die Aufgabe für die Sentimentanalyse mit einer dedizierten Pipeline ein. Bei der ersten Verwendung einer Pipeline wird das Modell heruntergeladen und im Cache gespeichert. Von nun an sollte die Sentimentanalyse viel schneller ablaufen.

  3. Klassifizieren Sie die Rezension asynchron. Mit einem benutzerdefinierten Schwellenwert legen Sie den Konfidenzgrad fest, der für Ihre Anwendung geeignet ist.

Beispiel:

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
}

Bewertung mit Gemma und MediaPipe vorschlagen

Mit der LLM Inference API können Sie Large Language Models (LLMs) vollständig im Browser ausführen.

Diese neue Funktion ist in Anbetracht der Speicher- und Rechenanforderungen von LLMs, die über hundertmal größer als herkömmliche On-Device-Modelle sind, besonders transformativ. Dies wird durch Optimierungen im gesamten On-Device-Stack ermöglicht, einschließlich neuer Vorgänge, Quantisierung, Caching und Gewichtungsfreigabe. Quelle: „Large Language Models On-Device with MediaPipe and TensorFlow Lite“.

  1. Installieren und importieren Sie die MediaPipe LLM Inference API.
  2. Modell herunterladen Hier verwenden wir Gemma 2B, das von Kaggle heruntergeladen wurde. Gemma 2B ist das kleinste offene Modell von Google.
  3. Verweisen Sie den Code mit dem FilesetResolver auf die richtigen Modelldateien. Dies ist wichtig, da Generative-AI-Modelle eine bestimmte Verzeichnisstruktur für ihre Assets haben können.
  4. Laden und konfigurieren Sie das Modell mit der LLM-Schnittstelle von MediaPipe. Bereiten Sie das Modell für die Verwendung vor. Geben Sie dazu den Standort des Modells, die bevorzugte Länge der Antworten und das kreative Maß an Kreativität bei der Temperatur an.
  5. Geben Sie dem Modell einen Prompt (siehe Beispiel).
  6. Warten Sie auf die Antwort des Modells.
  7. Parsen Sie nach der Bewertung: Extrahieren Sie die Bewertung aus der Modellantwort.
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);

Beispielaussage

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`;

Takeaways

Es sind keine KI-/ML-Kenntnisse erforderlich. Der Entwurf eines Prompts erfordert Iterationen, der Rest des Codes ist jedoch Standard-Webentwicklung.

On-Device-Modelle sind ziemlich genau. Wenn Sie die Snippets aus diesem Dokument ausführen, werden Sie feststellen, dass sowohl die toxizität als auch die Sentimentanalyse genaue Ergebnisse liefern. Die Gemma-Bewertungen stimmten in einigen getesteten Referenzüberprüfungen größtenteils mit den Gemini-Modellbewertungen überein. Um diese Genauigkeit zu überprüfen, sind weitere Tests erforderlich.

Das Entwerfen des Prompts für Gemma 2B erfordert jedoch Arbeit. Da Gemma 2B ein kleines LLM ist, benötigt es einen detaillierten Prompt, um zufriedene Ergebnisse zu erhalten – insbesondere detaillierter als bei der Gemini API.

Inferenzen können blitzschnell sein. Wenn Sie die Snippets aus diesem Dokument ausführen, sollten Sie beachten, dass die Inferenz auf einer Reihe von Geräten schnell und möglicherweise schneller als Server-Umläufe erfolgen kann. Allerdings kann die Inferenzgeschwindigkeit stark schwanken. Ein gründliches Benchmarking auf den Zielgeräten ist erforderlich. Wir gehen davon aus, dass Inferenzen auf dem Gerät durch Web-GPU-, WebAssembly- und Bibliotheksupdates weiter schneller werden. Durch Transformers.js wird beispielsweise Web GPU-Unterstützung in v3 hinzugefügt, wodurch Inferenzen auf dem Gerät um ein Vielfaches beschleunigt werden.

Downloadgrößen können sehr groß sein. Inferenzen im Browser sind schnell, aber das Laden von KI-Modellen kann eine Herausforderung sein. Zum Ausführen einer browserinternen KI benötigen Sie in der Regel sowohl eine Bibliothek als auch ein Modell, die die Downloadgröße Ihrer Webanwendung erhöhen.

Während das TensorFlow-Modell zur Toxizität in TensorFlow (ein klassisches Natural Language Processing-Modell) nur wenige Kilobyte groß ist, erreichen Generative AI-Modelle wie das standardmäßige Sentimentanalysemodell von Transformers.js 60 MB. Large Language Models wie Gemma können bis zu 1,3 GB groß sein. Dies überschreitet die durchschnittliche Größe der Webseite von 2, 2 MB, die für eine optimale Leistung bei Weitem bereits viel größer ist als empfohlen. Die On-Device-Generative AI ist in bestimmten Szenarien geeignet.

Die generative KI im Web entwickelt sich rasant! In Zukunft werden kleinere, weboptimierte Modelle voraussichtlich verfügbar sein.

Nächste Schritte

Chrome testet eine andere Möglichkeit, Generative AI im Browser auszuführen. Sie können sich für das Vorschauprogramm registrieren, um es zu testen.