Mendorong ulasan produk yang berguna dengan AI web di perangkat

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

Ulasan positif dan negatif dapat memengaruhi keputusan pembelian oleh pembeli.

Menurut riset eksternal, 82% pembeli online secara aktif mencari ulasan negatif sebelum melakukan pembelian. Ulasan negatif ini berguna bagi pelanggan dan bisnis, karena ketersediaan ulasan negatif dapat membantu mengurangi rasio pengembalian dan membantu developer meningkatkan kualitas produk mereka.

Berikut adalah beberapa cara untuk meningkatkan kualitas ulasan:

  • Periksa toksisitas pada setiap ulasan sebelum dikirimkan. Kami dapat mendorong pengguna untuk menghapus kata-kata menyinggung, serta komentar tidak membantu lainnya, sehingga ulasan mereka dapat membantu pengguna lain membuat keputusan pembelian yang lebih baik.
    • Negatif: Tas ini menyebalkan, dan saya tidak suka.
    • Negatif dengan masukan yang berguna: Ritsleting sangat kaku dan bahannya terasa murah. Saya mengembalikan tas ini.
  • Otomatis membuat rating berdasarkan bahasa yang digunakan dalam ulasan.
  • Tentukan apakah ulasan tersebut negatif atau positif.
Screenshot contoh ulasan dengan sentimen dan rating bintang.
Dalam contoh ini, komentar pengulas diberi sentimen positif dan rating bintang lima.

Pada akhirnya, pengguna harus memiliki kata akhir tentang rating produk.

Codelab berikut menawarkan solusi di perangkat, di browser. Tidak diperlukan pengetahuan pengembangan AI, server, atau kunci API.

Prasyarat

Meskipun AI sisi server dengan solusi (seperti Gemini API atau OpenAI API) menawarkan solusi andal untuk banyak aplikasi, dalam panduan ini kami berfokus pada AI web di perangkat. AI web di perangkat adalah saat model AI berjalan di browser untuk meningkatkan pengalaman pengguna web tanpa perjalanan bolak-balik server.

Dalam codelab ini, kami menggunakan gabungan teknik untuk menunjukkan apa yang ada di toolbox untuk AI web di perangkat.

Kami menggunakan library dan model berikut:

  • TensforFlow.js untuk analisis toksisitas. TensorFlow.js adalah library machine learning open source untuk inferensi dan pelatihan di web.
  • transformers.js untuk analisis sentimen. Transformers.js adalah library AI web dari Hugging Face.
  • Gemma 2B untuk rating bintang. Gemma adalah kumpulan model yang ringan dan terbuka yang dibuat dari penelitian dan teknologi yang digunakan Google untuk membuat model Gemini. Untuk menjalankan Gemma di browser, kami menggunakannya dengan API Inferensi LLM eksperimental MediaPipe.

Pertimbangan UX dan keamanan

Ada beberapa pertimbangan untuk memastikan pengalaman dan keamanan pengguna yang optimal:

  • Izinkan pengguna mengedit rating. Pada akhirnya, pengguna harus memiliki kata terakhir tentang rating produk.
  • Jelaskan kepada pengguna bahwa rating dan ulasan tersebut dilakukan secara otomatis.
  • Izinkan pengguna memposting ulasan yang diklasifikasikan sebagai negatif, tetapi jalankan pemeriksaan kedua di server. Hal ini mencegah pengalaman yang menjengkelkan saat ulasan tidak negatif salah diklasifikasikan sebagai negatif (positif palsu). Hal ini juga mencakup kasus saat pengguna berbahaya berhasil mengabaikan pemeriksaan sisi klien.
  • Pemeriksaan toksisitas sisi klien sangat membantu, tetapi hal ini dapat diabaikan. Pastikan Anda juga menjalankan pemeriksaan di sisi server.

Menganalisis toksisitas dengan TensorFlow.js

Anda dapat mulai menganalisis toksisitas ulasan pengguna dengan cepat menggunakan TensorFlow.js.

  1. Instal dan import library TensorFlow.js dan model toksisitas.
  2. Tetapkan keyakinan prediksi minimum. Defaultnya adalah 0,85, dan dalam contoh kita, kita tetapkan ke 0,9.
  3. Muat model secara asinkron.
  4. Klasifikasikan ulasan secara asinkron. Kode kami mengidentifikasi prediksi yang melebihi batas 0,9 untuk kategori apa pun.

Model ini dapat mengkategorikan toksisitas di seluruh serangan identitas, penghinaan, kecabulan, dan lainnya.

Contoh:

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

Menentukan sentimen dengan Transformers.js

  1. Instal dan impor library Transformers.js.

  2. Siapkan tugas analisis sentimen dengan pipeline khusus. Saat pipeline digunakan untuk pertama kalinya, model akan didownload dan di-cache. Sejak saat itu, analisis sentimen harus jauh lebih cepat.

  3. Klasifikasikan ulasan secara asinkron. Gunakan nilai minimum kustom untuk menetapkan tingkat keyakinan yang Anda anggap dapat digunakan untuk aplikasi Anda.

Contoh:

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
}

Sarankan rating bintang dengan Gemma dan MediaPipe

Dengan LLM Inference API, Anda dapat menjalankan model bahasa besar (LLM) sepenuhnya di browser.

Kemampuan baru ini sangat transformatif mengingat permintaan memori dan komputasi LLM, yang seratus kali lebih besar daripada model tradisional di perangkat. Pengoptimalan di seluruh stack di perangkat memungkinkan hal ini, termasuk operasi baru, kuantisasi, caching, dan berbagi bobot. Sumber: "Large Language Models On-Device with MediaPipe and TensorFlow Lite".

  1. Instal dan impor API inferensi LLM MediaPipe.
  2. Download model. Di sini, kita menggunakan Gemma 2B, yang didownload dari Kaggle. Gemma 2B adalah model open-weight terkecil dari Google.
  3. Arahkan kode ke file model yang tepat, dengan FilesetResolver. Hal ini penting karena model AI generatif mungkin memiliki struktur direktori tertentu untuk asetnya.
  4. Muat dan konfigurasi model dengan antarmuka LLM MediaPipe. Siapkan model untuk digunakan: tentukan lokasi modelnya, panjang respons yang diinginkan, dan tingkat kreativitas yang diinginkan dengan suhu.
  5. Berikan perintah kepada model (lihat contoh).
  6. Tunggu respons model.
  7. Uraikan rating: Ekstrak rating bintang dari respons model.
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);

Contoh perintah

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

Takeaway

Tidak memerlukan keahlian AI/ML. Mendesain prompt memerlukan iterasi, tetapi sisa kode adalah pengembangan web standar.

Model di perangkat cukup akurat. Jika menjalankan cuplikan dari dokumen ini, Anda akan mengamati bahwa toksisitas dan analisis sentimen memberikan hasil yang akurat. Rating Gemma, sebagian besar, cocok dengan rating model Gemini untuk beberapa ulasan referensi yang diuji. Untuk memvalidasi akurasi itu, diperlukan pengujian lainnya.

Meskipun demikian, merancang prompt untuk Gemma 2B membutuhkan upaya. Karena Gemma 2B adalah LLM yang kecil, diperlukan perintah mendetail untuk memberikan hasil yang memuaskan—terutama lebih mendetail daripada yang diperlukan dengan Gemini API.

Inferensi bisa sangat cepat. Jika menjalankan cuplikan dari dokumen ini, Anda harus mengamati bahwa inferensi dapat berlangsung dengan sangat cepat, berpotensi lebih cepat daripada perjalanan bolak-balik server, di sejumlah perangkat. Meskipun begitu, kecepatan inferensi dapat sangat bervariasi. Memerlukan benchmark menyeluruh pada perangkat target. Kami memperkirakan inferensi di perangkat dapat terus menjadi lebih cepat dengan Web GPU, WebAssembly, dan update library. Misalnya, Transformers.js menambahkan Dukungan GPU Web di v3, yang dapat mempercepat inferensi di perangkat sebanyak-banyaknya.

Ukuran download bisa sangat besar. Inferensi di browser cepat, tetapi memuat model AI dapat menjadi tantangan. Untuk menjalankan AI dalam browser, Anda biasanya memerlukan library dan model, yang ditambahkan ke ukuran download aplikasi web Anda.

Sementara model toksisitas Tensorflow (model natural language processing klasik) hanya berukuran beberapa kilobyte, model AI generatif seperti model analisis sentimen default Transformers.js mencapai 60 MB. Model bahasa besar seperti Gemma dapat berukuran 1,3 GB. Ukuran ini melebihi median ukuran halaman web sebesar 2, 2 MB, yang sejauh ini sudah jauh lebih besar daripada yang direkomendasikan untuk mendapatkan performa terbaik. AI generatif di perangkat dapat digunakan dalam skenario tertentu.

Teknologi AI generatif di web berkembang dengan pesat. Model yang lebih kecil dan dioptimalkan untuk web diperkirakan akan muncul di masa mendatang.

Langkah berikutnya

Chrome bereksperimen dengan cara lain untuk menjalankan AI generatif di browser. Anda dapat mendaftar ke program pratinjau awal untuk mengujinya.