Dipublikasikan: 16 Mei 2024
Ulasan positif dan negatif dapat memengaruhi keputusan pembelian 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 produsen meningkatkan kualitas produk mereka.
Berikut beberapa cara yang dapat Anda lakukan untuk meningkatkan kualitas ulasan:
- Periksa setiap ulasan untuk mengetahui apakah ulasan tersebut mengandung kata-kata tidak sopan sebelum dikirimkan. Kami dapat mendorong pengguna untuk menghapus kata-kata tidak sopan, serta komentar tidak membantu lainnya, sehingga ulasan mereka dapat membantu pengguna lain membuat keputusan pembelian yang lebih baik.
- Negatif: Tas ini jelek, dan saya tidak menyukainya.
- Negatif dengan masukan yang berguna Ritsletingnya sangat kaku dan bahannya terasa murahan. Saya mengembalikan tas ini.
- Membuat rating secara otomatis berdasarkan bahasa yang digunakan dalam ulasan.
- Tentukan apakah ulasan bersifat negatif atau positif.

Pada akhirnya, pengguna harus memiliki kata akhir terkait rating produk.
Codelab berikut menawarkan solusi sisi klien, di perangkat, dan di browser. Tidak memerlukan pengetahuan pengembangan AI, server, atau kunci API.
Prasyarat
Meskipun AI sisi server dengan solusi (seperti Gemini API atau OpenAI API) menawarkan solusi yang andal untuk banyak aplikasi, dalam panduan ini kita berfokus pada AI web sisi klien. Inferensi AI sisi klien terjadi di browser, untuk meningkatkan pengalaman pengguna web dengan menghilangkan perjalanan pulang pergi server.
Dalam codelab ini, kita menggunakan kombinasi teknik untuk menunjukkan apa yang ada di toolbox Anda untuk AI sisi klien.
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 sekumpulan model terbuka yang ringan, dibangun dari riset dan teknologi yang digunakan Google untuk membuat model Gemini. Untuk menjalankan Gemma di browser, kami menggunakannya dengan LLM Inference API eksperimental MediaPipe.
Pertimbangan UX dan keselamatan
Ada beberapa pertimbangan untuk memastikan pengalaman pengguna dan keamanan yang optimal:
- Izinkan pengguna mengedit rating. Pada akhirnya, pengguna harus memiliki kata akhir dalam rating produk.
- Jelaskan kepada pengguna bahwa rating dan ulasan bersifat otomatis.
- Mengizinkan pengguna memposting ulasan yang diklasifikasikan sebagai berbahaya, tetapi menjalankan pemeriksaan kedua di server. Hal ini mencegah pengalaman yang menjengkelkan saat ulasan tidak toksik salah diklasifikasikan sebagai toksik (positif palsu). Hal ini juga mencakup kasus saat pengguna berbahaya berhasil melewati pemeriksaan sisi klien.
- Pemeriksaan toksisitas sisi klien berguna, tetapi dapat dilewati. Pastikan Anda menjalankan pemeriksaan sisi server juga.
Menganalisis toksisitas dengan TensorFlow.js
Anda dapat dengan cepat mulai menganalisis toksisitas ulasan pengguna dengan TensorFlow.js.
- Instal dan impor library TensorFlow.js dan model toksisitas.
- Tetapkan keyakinan prediksi minimum. Nilai defaultnya adalah 0,85, dan dalam contoh ini, kita telah menyetelnya ke 0,9.
- Muat model secara asinkron.
- Mengklasifikasikan ulasan secara asinkron. Kode kami mengidentifikasi prediksi yang melebihi nilai minimum 0,9 untuk kategori apa pun.
Model ini dapat mengategorikan toksisitas di seluruh serangan identitas, penghinaan, kata-kata tidak senonoh, 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(
(predi>ction) = prediction.results[0].m
atch
);
Menentukan sentimen dengan Transformers.js
Instal dan impor library Transformers.js.
Siapkan tugas analisis sentimen dengan pipeline khusus. Saat pipeline digunakan untuk pertama kalinya, model akan didownload dan di-cache. Mulai saat itu, analisis sentimen akan jauh lebih cepat.
Mengklasifikasikan 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 } = sentimentR>esult[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 di browser.
Kemampuan baru ini sangat transformatif mengingat tuntutan memori dan komputasi LLM, yang lebih besar seratus kali lipat daripada model sisi klien. Pengoptimalan di seluruh stack web memungkinkan hal ini, termasuk operasi baru, kuantisasi, caching, dan berbagi bobot. Sumber: "Large Language Models On-Device with MediaPipe and TensorFlow Lite".
- Instal dan impor MediaPipe LLM inference API.
- Download model. Di sini, kita menggunakan Gemma 2B, yang didownload dari Kaggle. Gemma 2B adalah model open-weight terkecil Google.
- Arahkan kode ke file model yang tepat, dengan
FilesetResolver
. Hal ini penting karena model AI generatif mungkin memiliki struktur direktori tertentu untuk asetnya. - Muat dan konfigurasi model dengan antarmuka LLM MediaPipe. Siapkan model untuk digunakan: tentukan lokasi model, panjang respons yang diinginkan, dan tingkat kreativitas yang diinginkan dengan temperatur.
- Beri model perintah (lihat contoh).
- Tunggu respons model.
- Mengurai 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(r
atingAsString);
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 rev
iew you need to assess:
\n
Review: "${review}" \n`;
Poin-poin penting
Tidak diperlukan keahlian AI/ML. Mendesain prompt memerlukan iterasi, tetapi kode lainnya adalah pengembangan web standar.
Model sisi klien cukup akurat. Jika Anda menjalankan cuplikan dari dokumen ini, Anda akan melihat bahwa analisis toksisitas dan sentimen memberikan hasil yang akurat. Sebagian besar rating Gemma cocok dengan rating model Gemini untuk beberapa ulasan referensi yang diuji. Untuk memvalidasi akurasi tersebut, diperlukan lebih banyak pengujian.
Namun, mendesain perintah untuk Gemma 2B memerlukan upaya. Karena Gemma 2B adalah LLM kecil, model ini memerlukan perintah yang mendetail untuk menghasilkan hasil yang memuaskan—terutama yang lebih mendetail daripada yang diperlukan dengan Gemini API.
Inferensi dapat dilakukan dengan sangat cepat. Jika Anda menjalankan cuplikan dari dokumen ini, Anda akan melihat bahwa inferensi dapat berjalan cepat, bahkan mungkin lebih cepat daripada perjalanan pulang pergi server, di sejumlah perangkat. Namun, kecepatan inferensi dapat sangat bervariasi. Benchmarking menyeluruh pada perangkat target diperlukan. Kami berharap inferensi browser akan terus menjadi lebih cepat dengan WebGPU, WebAssembly, dan update library. Misalnya, Transformers.js menambahkan dukungan Web GPU di v3, yang dapat mempercepat inferensi di perangkat berkali lipat.
Ukuran download bisa sangat besar. Inferensi di browser berjalan cepat, tetapi pemuatan model AI bisa menjadi tantangan. Untuk menjalankan AI dalam browser, Anda biasanya memerlukan library dan model, yang akan menambah ukuran download aplikasi web Anda.
Meskipun model toksisitas Tensorflow (model pemrosesan bahasa alami 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 hingga 1,3 GB. Hal ini jauh melebihi median ukuran halaman web 2, 2 MB, yang sudah jauh lebih besar daripada yang direkomendasikan untuk performa terbaik. AI generatif sisi klien dapat diterapkan dalam skenario tertentu.
Bidang AI generatif di web berkembang pesat. Model yang lebih kecil dan dioptimalkan untuk web diharapkan akan muncul pada 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.