Zachęcaj do tworzenia przydatnych opinii o produktach za pomocą internetowej AI na urządzeniu

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

Pozytywne i negatywne recenzje mogą wpłynąć na decyzję o zakupie.

Według badań zewnętrznych 82% kupujących online aktywnie poszukuje negatywnych wyników opinie przed zakupem. Te negatywne opinie są przydatne w przypadku: klientów i firmy, ponieważ negatywne opinie mogą zwiększyć obniżyć wskaźniki zwrotów i pomóc twórcom ulepszyć produkty.

Oto kilka sposobów na poprawę jakości opinii:

  • Przed przesłaniem każdej opinii sprawdź pod kątem toksyczności. Możemy zachęcać użytkowników do usuwania obraźliwego języka i innych nieprzydatnych uwag, aby jak najlepiej wykorzystać ich opinie, tak aby pomogli innym użytkownikom w podjęciu lepszej decyzji o zakupie.
    • Negatywna torba: Ta torba jest do bani.
    • Kwestie negatywne z przydatnymi opiniami: zamki są bardzo sztywne, a materiał sprawia wrażenie niedrogiego. Zwróciłem tę torbę.
  • Automatycznie wygeneruj ocenę na podstawie języka użytego w opinii.
  • Określ, czy opinia jest negatywna czy pozytywna.
.
Zrzut ekranu przedstawiający przykładową opinię z nastawieniem i oceną.
W tym przykładzie komentarz recenzenta jest pozytywny i otrzymuje 5 gwiazdek.

Ostatecznie to użytkownik powinien przekazać ocenę produktu.

Podane niżej ćwiczenia z programowania oferują rozwiązania w przeglądarce na urządzeniu. Bez AI niezbędna jest wiedza programistyczna, serwery lub klucze interfejsu API.

Wymagania wstępne

Chociaż rozwiązania AI po stronie serwera (takie jak Gemini API lub OpenAI API) oferują solidne rozwiązania w wielu aplikacjach, w tym przewodniku skupiamy się na internetowej AI na urządzeniu. Internetowa AI na urządzeniu jest działanie modeli AI działających w przeglądarce, bez konieczności przesyłania danych w obie strony.

W tym ćwiczeniu w programowaniu stosujemy połączenie różnych technik, aby pokazać Ci, co masz w zestawie narzędzi. w przypadku internetowej AI na urządzeniu.

Używamy tych bibliotek i modeli:

  • TensforFlow.js służy do analizy toksyczności. TensorFlow.js to biblioteka systemów uczących się typu open source do wnioskowania i trenowania w internecie.
  • transformers.js. Transformers.js to biblioteka internetowa AI od Hugging Face.
  • Gemma 2B do oceny w postaci gwiazdek. Gemma to rodzina lekkich, otwartych modeli powstałych na podstawie badań i technologii użytych przez Google do stworzenia modeli Gemini. Aby uruchomić Gemma w przeglądarce, używamy jej w połączeniu z eksperymentalnym interfejsem LLM Inference API opracowanym przez MediaPipe.

Kwestie UX i bezpieczeństwa

Aby zapewnić optymalną wygodę i bezpieczeństwo użytkowników, warto wziąć pod uwagę kilka kwestii:

  • Zezwalaj użytkownikowi na edytowanie oceny. Użytkownik powinien mieć ostateczną zgodę na ocenę produktu.
  • Poinformuj użytkownika, że oceny i opinie są generowane automatycznie.
  • Zezwalaj użytkownikom na publikowanie opinii sklasyfikowanych jako toksyczne, ale przeprowadź drugą weryfikację serwera. Zapobiega to frustracji, gdy nietoksyczna opinia jest omyłkowo sklasyfikowany jako toksyczny (fałszywie pozytywny). Dotyczy to również przypadków w którym szkodliwy użytkownik próbuje ominąć kontrolę po stronie klienta.
  • Sprawdzanie toksyczności po stronie klienta jest pomocne, ale można je pominąć. Upewnij się, że: możesz też sprawdzić po stronie serwera.

Analizowanie toksyczności za pomocą TensorFlow.js

Możesz szybko rozpocząć analizę toksyczności opinii użytkownika za pomocą TensorFlow.js.

  1. Zainstaluj i importowanie z biblioteką TensorFlow.js i modelem toksyczności.
  2. Ustaw minimalny poziom ufności prognozy. Wartość domyślna to 0,85.W tym przykładzie ustawiliśmy jako 0,9.
  3. ładować model asynchronicznie,
  4. Asynchronicznie sklasyfikuj opinię. Nasz kod identyfikuje prognozy przekraczające próg 0,9 dla każdej kategorii.

Ten model może klasyfikować toksyczność według tożsamości, obrażania, nieprzyzwoitych itp.

Na przykład:

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

Określ nastawienie za pomocą Transformers.js

  1. Zainstaluj i zaimportować bibliotekę Transformers.js.

  2. Konfigurowanie analizy nastawienia zadanie za pomocą dedykowanego potoku. Przy pierwszym użyciu potoku model jest pobierany i buforowany. Od tego momentu analiza nastawienia powinna być znacznie szybsza.

  3. Asynchronicznie sklasyfikuj opinię. Użyj niestandardowego progu, aby ustawić poziom w przeszłości, które uważasz za przydatne w swojej aplikacji.

Na przykład:

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
}

Zasugeruj ocenę w gwiazdkach dzięki Gemmie i MediaPipe

Za pomocą interfejsu LLM Inference API możesz uruchamiać duże modele językowe (LLM) całkowicie w przeglądarce.

Ta nowa możliwość jest szczególnie przełomowa, biorąc pod uwagę pamięć potrzeby obliczeniowe LLM, które są ponad sto razy większe niż na tradycyjnych modelach urządzeń. Optymalizacje w całym stosie na urządzeniu w tym nowe operacje, kwantyzację, buforowanie i udostępnianie wagi. Źródło: „Large Language Models On-Device with MediaPipe and TensorFlow Lite” (Duże modele językowe na urządzeniu z MediaPipe i TensorFlow Lite”.

  1. Instalowanie i importowanie za pomocą interfejsu MediaPipe LLM wnioskowania API.
  2. Pobierz model. Używamy Gemma 2B, pobrane z Kaggle. Gemma 2B to najmniejszy model otwarty przez Google.
  3. Korzystając z FilesetResolver, skieruj kod na odpowiednie pliki modelu. To jest ważne, ponieważ modele generatywnej AI mogą mieć określoną strukturę katalogów dla swoich aktywów.
  4. Wczytaj i skonfiguruj model za pomocą interfejsu LLM MediaPipe. Przygotuj model do użycia: określ lokalizację modelu, preferowaną długość odpowiedzi, Kreatywność zależy od temperatury.
  5. Wyślij prompt do modelu (zobacz przykład).
  6. Oczekiwanie na odpowiedź modelu.
  7. Analizuj ocenę: wyodrębnia ocenę w gwiazdkach z odpowiedzi modelu.
.
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);

Przykładowy prompt

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

Wnioski

Nie musisz mieć specjalistycznej wiedzy z zakresu AI/ML. Zaprojektowanie promptu wymaga iteracji, ale reszta kodu to standardowe tworzenie stron internetowych.

Modele na urządzeniu są dość dokładne. Jeśli uruchomisz fragmenty kodu z tego zobaczysz, że zarówno analiza toksyczności, jak i nastawienia dokładne wyniki. Oceny Gemma w większości odpowiadały modelowi Gemini w kilku sprawdzonych recenzji referencyjnych. Aby potwierdzić tę dokładność, wymagane jest więcej testów.

Dlatego zaprojektowanie promptu dla Gemma 2B wymaga pracy. Gemma 2B to do małych LLM, potrzebuje szczegółowego promptu, aby uzyskać satysfakcjonujące wyniki. bardziej szczegółowe, niż jest to wymagane w Gemini API.

Wnioski mogą być bardzo szybkie. Jeśli uruchomisz fragmenty kodu z tego dokumentu, powinieneś zauważyć, że wnioskowanie może przebiegać szybko i potencjalnie szybciej niż serwer w obie strony na wielu urządzeniach. Pamiętaj jednak, że szybkość wnioskowania może być różna. bardzo. Wymagane są dokładne testy porównawcze na urządzeniach docelowych. Spodziewamy się, że na urządzeniu wnioskowania w celu dalszego szybszego działania dzięki aktualizacjom GPU, WebAssembly i biblioteka. Na przykład Transformers.js dodaje obsługę GPU w wersji 3, które mogą wielokrotnie przyspieszyć wnioskowanie na urządzeniu.

Pobrane pliki mogą być bardzo duże. Wnioskowanie w przeglądarce jest szybkie, ale wczytywanie modeli AI może być wyzwaniem. Żeby wykonać AI w przeglądarce, muszą zawierać bibliotekę i model, które zwiększają rozmiar pobieranej aplikacji internetowej.

Model toksyczności Tensorflow (klasyczny model przetwarzania języka naturalnego) to tylko kilka kilobajtów, modele generatywnej AI, takie jak domyślna wersja Transformers.js model analizy nastawienia osiąga 60 MB. Duże modele językowe, takie jak Gemma, nawet 1,3 GB. Ta wartość przekracza medianę 2,2 MB, czyli już znacznie większy niż zalecane, aby zapewnić optymalną wydajność. Na urządzeniu ale generatywna AI jest możliwa w określonych sytuacjach.

Dziedzina generatywnej AI w internecie gwałtownie się rozwija. Mniejszy, Zoptymalizowane pod kątem internetu modele spodziewane w przyszłości.

Dalsze kroki

Chrome eksperymentuje z innym sposobem uruchamiania generatywnej AI w przeglądarce. Możesz zarejestrować się do programu wczesnej wersji przedpremierowej. aby ją przetestować.