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 mendasari keputusan pembelian pembeli.

Menurut penelitian eksternal, 82% pembeli {i>online<i} secara aktif mencari informasi negatif ulasan sebelum melakukan pembelian. Ulasan negatif ini berguna untuk pelanggan dan bisnis, karena ketersediaan ulasan negatif dapat membantu mengurangi tingkat pengembalian barang dan membantu produsen meningkatkan kualitas produk mereka.

Berikut adalah beberapa cara untuk meningkatkan kualitas ulasan:

  • Periksa toksisitas setiap ulasan sebelum dikirimkan. Kami dapat mendorong pengguna untuk menghapus kata-kata yang menyinggung, serta komentar tidak membantu lainnya, sehingga ulasan mereka akan sangat membantu pengguna lain untuk mengambil keputusan pembelian yang lebih baik.
    • Negatif: Tas ini menyebalkan, dan saya tidak menyukainya.
    • Kekurangan dari masukan yang bermanfaat: Ritsletingnya sangat kaku dan bahannya terasa murah. Saya telah mengembalikan tas ini.
  • Buat rating secara otomatis berdasarkan bahasa yang digunakan dalam ulasan.
  • Tentukan apakah ulasannya negatif atau positif.
Screenshot contoh ulasan dengan sentimen dan rating bintang.
Dalam contoh ini, komentar pengulas diberikan sentimen positif dan rating bintang lima.

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

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

Prasyarat

Meskipun AI sisi server dengan solusi (seperti Gemini API atau OpenAI API) menawarkan solusi yang tangguh 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 bagi pengguna web tanpa bolak-balik server.

Dalam codelab ini, kami menggunakan gabungan teknik untuk menampilkan konten di toolbox Anda 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 rangkaian model ringan dan terbuka yang dibangun dari riset dan teknologi yang digunakan Google untuk membuat model Gemini. Untuk menjalankan Gemma di browser, kami menggunakannya dengan LLM Inference API eksperimental dari 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 pada peringkat produk.
  • Jelaskan kepada pengguna bahwa rating dan ulasan dilakukan secara otomatis.
  • Izinkan pengguna memposting ulasan yang diklasifikasikan sebagai negatif, tetapi menjalankan pemeriksaan kedua server. Hal ini mencegah pengalaman yang menjengkelkan jika ulasan yang tidak negatif salah diklasifikasikan sebagai negatif (positif palsu). Hal ini juga mencakup kasus di mana pengguna yang berbahaya berhasil melewati {i>client-side check<i}.
  • Pemeriksaan toksisitas sisi klien sangat membantu, tetapi pemeriksaan ini dapat diabaikan. Pastikan Anda menjalankan pemeriksaan sisi server.

Menganalisis toksisitas dengan TensorFlow.js

Cepat untuk mulai menganalisis toksisitas ulasan pengguna dengan TensorFlow.js.

  1. Instal dan impor library TensorFlow.js dan model toksisitas.
  2. Tetapkan keyakinan prediksi minimum. Defaultnya adalah 0,85, dan dalam contoh kita, kita telah menyetelnya ke 0.9.
  3. Muat model secara asinkron.
  4. Klasifikasikan ulasan secara asinkron. Kode kami mengidentifikasi prediksi yang melampaui nilai minimum 0,9 untuk kategori apa pun.

Model ini dapat mengategorikan toksisitas pada 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. Menyiapkan analisis sentimen tugas dengan pipeline khusus. Ketika pipeline digunakan untuk pertama kalinya, model akan didownload dan di-cache. Setelahnya, analisis sentimen akan jauh lebih cepat.

  3. Klasifikasikan ulasan secara asinkron. Menggunakan ambang batas khusus untuk menetapkan tingkat yang dianggap dapat digunakan oleh 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
}

Menyarankan rating bintang dengan Gemma dan MediaPipe

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

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

  1. Menginstal dan mengimpor API inferensi LLM MediaPipe.
  2. Download model. Di sini, kita menggunakan Gemma 2B, didownload dari Kaggle. Gemma 2B adalah model kelas terbuka terkecil dari Google.
  3. Arahkan kode ke file model yang tepat, dengan FilesetResolver. Ini adalah penting karena model AI generatif mungkin memiliki struktur direktori tertentu atas aset mereka.
  4. Muat dan konfigurasi model dengan antarmuka LLM MediaPipe. Siapkan untuk digunakan: menentukan lokasi modelnya, panjang respons yang diinginkan, dan pilihan tingkat kreativitas yang sesuai 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 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`;

Poin-poin penting

Keahlian AI/ML tidak diperlukan. Mendesain prompt membutuhkan iterasi, tetapi kode lainnya adalah pengembangan web standar.

Model di perangkat cukup akurat. Jika Anda menjalankan cuplikan dari Anda akan mengamati bahwa baik toksisitas dan analisis sentimen memberikan hasil yang akurat. Sebagian besar rating Gemma cocok dengan model Gemini peringkat untuk beberapa ulasan referensi yang telah diuji. Untuk memvalidasi akurasi tersebut, pengujian tambahan diperlukan.

Meskipun demikian, mendesain prompt untuk Gemma 2B memerlukan kerja keras. Karena Gemma 2B adalah LLM kecil, mereka membutuhkan perintah terperinci untuk memberikan hasil yang memuaskan—terutama lebih detail dari yang diperlukan dengan Gemini API.

Inferensi bisa secepat kilat. Jika Anda menjalankan cuplikan dari dokumen ini, Anda harus mengamati bahwa inferensi bisa menjadi cepat, berpotensi lebih cepat daripada server perjalanan bolak balik, pada sejumlah perangkat. Meskipun demikian, kecepatan inferensi dapat bervariasi secara signifikan. Pembandingan yang menyeluruh pada perangkat target diperlukan. Kami mengharapkan di perangkat inferensi untuk 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 dalam berbagai bentuk.

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

Model toksisitas Tensorflow (model natural language processing klasik) hanya beberapa kilobita, model AI generatif seperti model analisis sentimen mencapai 60 MB. Model bahasa besar seperti Gemma dapat hingga 1,3GB. Jumlah ini melampaui median Ukuran halaman web 2,2 mb, yaitu sejauh ini sudah jauh lebih besar dari yang direkomendasikan untuk kinerja terbaik. Di perangkat AI generatif dapat bertahan dalam skenario tertentu.

Bidang AI generatif di web berkembang pesat. Lebih kecil, yang dioptimalkan untuk web yang diperkirakan akan muncul di masa mendatang.

Langkah berikutnya

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