Khuyến khích các bài đánh giá sản phẩm hữu ích bằng AI web trên thiết bị

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

Các bài đánh giá tích cực và tiêu cực có thể giúp người mua biết quyết định mua hàng.

Theo nghiên cứu bên ngoài, 82% người mua sắm trực tuyến chủ động tìm kiếm những cụm từ tiêu cực bài đánh giá trước khi mua hàng. Những bài đánh giá tiêu cực này sẽ giúp ích cho khách hàng cũng như doanh nghiệp, vì nếu có các bài đánh giá tiêu cực, giảm tỷ lệ trả lại hàng và giúp nhà sản xuất cải thiện sản phẩm.

Sau đây là một số cách giúp bạn cải thiện chất lượng của bài đánh giá:

  • Hãy kiểm tra mỗi bài đánh giá để đảm bảo tính độc hại trước khi gửi. Chúng tôi có thể khuyến khích người dùng xoá ngôn từ gây phản cảm cũng như những nhận xét không hữu ích khác để bài đánh giá của họ có thể hỗ trợ tốt nhất cho những người dùng khác đưa ra quyết định mua hàng sáng suốt hơn.
    • Tiêu cực: Chiếc túi này tệ và tôi không thích nó.
    • Tiêu cực nếu phản hồi hữu ích: Khoá kéo rất cứng và chất liệu rẻ. Tôi đã trả lại chiếc túi này.
  • Tự động tạo điểm xếp hạng dựa trên ngôn ngữ dùng trong bài đánh giá.
  • Xác định xem bài đánh giá là tiêu cực hay tích cực.
Ảnh chụp màn hình một bài đánh giá mẫu kèm theo ý kiến và điểm xếp hạng theo sao.
Trong ví dụ này, nhận xét của người đánh giá được thể hiện thiện cảm và được xếp hạng 5 sao.

Sau cùng, người dùng phải là người đưa ra quyết định cuối cùng về điểm xếp hạng sản phẩm.

Lớp học lập trình sau đây cung cấp các giải pháp trên thiết bị và trong trình duyệt. Không dùng AI kiến thức phát triển, máy chủ hoặc khoá API.

Điều kiện tiên quyết

Mặc dù AI phía máy chủ với các giải pháp (chẳng hạn như Gemini API hoặc OpenAI API) cung cấp các giải pháp mạnh mẽ cho nhiều ứng dụng, nhưng trong hướng dẫn này, chúng tôi sẽ tập trung vào AI web trên thiết bị. AI (trí tuệ nhân tạo) trên web trên thiết bị là khi các mô hình AI chạy trong trình duyệt, để cải thiện trải nghiệm cho người dùng web mà không có trả về máy chủ.

Trong lớp học lập trình này, chúng tôi kết hợp nhiều kỹ thuật để cho bạn thấy bộ công cụ của mình AI trên web trên thiết bị.

Chúng tôi sử dụng các thư viện và mô hình sau:

  • TensforFlow.js để phân tích độc tính. TensorFlow.js là một thư viện máy học nguồn mở cho cả suy luận và huấn luyện trên web.
  • transformers.js để phân tích quan điểm. Transformers.js là một thư viện trí tuệ nhân tạo (AI) trên web của Ôm Face.
  • Gemma 2B cho điểm xếp hạng theo sao. Gemma là một tập hợp các mô hình mở, gọn nhẹ được xây dựng dựa trên nghiên cứu và công nghệ mà Google sử dụng để tạo ra các mô hình Gemini. Để chạy Gemma trong trình duyệt, chúng tôi sử dụng Gemma với API suy luận LLM thử nghiệm của MediaPipe.

Những điều cần cân nhắc về trải nghiệm người dùng và sự an toàn

Có một vài yếu tố bạn cần cân nhắc để đảm bảo sự an toàn và trải nghiệm tối ưu cho người dùng:

  • Cho phép người dùng chỉnh sửa điểm xếp hạng. Cuối cùng, người dùng phải có quyền về xếp hạng sản phẩm.
  • Giúp người dùng hiểu rõ rằng điểm xếp hạng và bài đánh giá là hệ thống tự động.
  • Cho phép người dùng đăng bài đánh giá được phân loại là độc hại nhưng chạy yêu cầu kiểm tra lần thứ hai máy chủ. Điều này giúp tránh gây ra trải nghiệm khó chịu khi bài đánh giá không độc hại bị phân loại nhầm là độc hại (dương tính giả). Điều này cũng bao gồm các trường hợp trong đó người dùng độc hại tìm cách bỏ qua việc kiểm tra phía máy khách.
  • Kiểm tra độc tính phía máy khách rất hữu ích nhưng có thể bỏ qua. Đảm bảo rằng bạn cũng chạy kiểm tra phía máy chủ.

Phân tích tính độc hại bằng TensorFlow.js

Bạn nên nhanh chóng bắt đầu phân tích tính độc hại của một bài đánh giá của người dùng bằng TensorFlow.js.

  1. Cài đặtnhập thư viện TensorFlow.js và mô hình độc hại.
  2. Đặt độ tin cậy tối thiểu cho thông tin dự đoán. Giá trị mặc định là 0, 85 và trong ví dụ của chúng ta, chúng tôi đã đặt thành 0,9.
  3. Tải mô hình không đồng bộ.
  4. Phân loại bài đánh giá theo cách không đồng bộ. Mã của chúng tôi xác định các truy vấn dự đoán vượt quá ngưỡng 0,9 cho bất kỳ danh mục nào.

Mô hình này có thể phân loại sự độc hại trên hành vi tấn công vào danh tính, sự xúc phạm, nội dung tục tĩu, v.v.

Ví dụ:

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

Xác định cảm nhận bằng Transformers.js

  1. Cài đặt và nhập thư viện Transformers.js.

  2. Thiết lập tính năng phân tích quan điểm việc cần làm bằng một quy trình chuyên dụng. Khi một quy trình được sử dụng lần đầu tiên, mô hình sẽ được tải xuống và lưu vào bộ nhớ đệm. Từ đó trở đi, việc phân tích quan điểm sẽ diễn ra nhanh hơn nhiều.

  3. Phân loại bài đánh giá theo cách không đồng bộ. Sử dụng ngưỡng tuỳ chỉnh để đặt mức mà bạn cho rằng có thể sử dụng cho ứng dụng của mình.

Ví dụ:

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
}

Đề xuất điểm xếp hạng theo sao bằng Gemma và MediaPipe

Với API suy luận LLM, bạn hoàn toàn có thể chạy các mô hình ngôn ngữ lớn (LLM) trong trình duyệt.

Khả năng mới này đặc biệt mang tính biến đổi khi xem xét bộ nhớ và nhu cầu tính toán của các LLM lớn hơn hàng trăm lần so với trên thiết bị truyền thống. Tối ưu hoá trong ngăn xếp trên thiết bị điều này có thể thực hiện được, bao gồm hoạt động mới, định lượng, lưu vào bộ nhớ đệm và chia sẻ trọng số. Nguồn: "Các mô hình ngôn ngữ lớn trên thiết bị sử dụng MediaPipe và TensorFlow Lite".

  1. Cài đặt và nhập API suy luận LLM MediaPipe.
  2. Tải mô hình xuống. Ở đây, chúng ta sử dụng Gemma 2B, đã tải xuống từ Kaggle. Gemma 2B là mô hình nhỏ nhất trong số các mô hình trọng lượng mở của Google.
  3. Trỏ mã vào đúng tệp mô hình bằng FilesetResolver. Đây là là rất quan trọng vì các mô hình AI tạo sinh có thể có cấu trúc thư mục cụ thể cho tài sản của họ.
  4. Tải và định cấu hình mô hình bằng giao diện LLM (mô hình ngôn ngữ lớn) của MediaPipe. Chuẩn bị mô hình để sử dụng: chỉ định vị trí mô hình, độ dài ưu tiên của phản hồi, và mức độ sáng tạo ưa thích với nhiệt độ.
  5. Đưa ra một câu lệnh cho mô hình này (xem ví dụ).
  6. Hãy chờ phản hồi của mô hình.
  7. Phân tích cú pháp điểm xếp hạng: Trích xuất điểm xếp hạng theo sao từ phản hồi của mô hình.
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);

Ví dụ về câu lệnh

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

Cướp lại bóng

Không cần kiến thức chuyên môn về AI/ML. Việc thiết kế câu lệnh cần nhiều lần lặp lại, nhưng phần còn lại của mã là phát triển web tiêu chuẩn.

Các mô hình trên thiết bị khá chính xác. Nếu bạn chạy các đoạn mã từ bạn sẽ quan sát thấy rằng cả độc tính và phân tích cảm tính đều mang lại kết quả chính xác. Điểm xếp hạng của Gemma hầu hết khớp với mô hình Gemini cho một số bài đánh giá tham khảo đã được thử nghiệm. Để xác thực tính chính xác đó, bạn cần kiểm thử thêm.

Tuy nhiên, việc thiết kế câu lệnh cho Gemma 2B cũng phải mất nhiều công sức. Vì Gemma 2B là LLM nhỏ, chương trình này cần một câu lệnh chi tiết để tạo ra kết quả hài lòng, đáng chú ý là chi tiết hơn những yêu cầu đối với Gemini API.

Quá trình suy luận có thể rất nhanh. Nếu bạn chạy các đoạn mã từ tài liệu này, bạn sẽ thấy rằng suy luận có thể diễn ra nhanh, có thể nhanh hơn máy chủ khứ hồi trên một số thiết bị. Tuy vậy, tốc độ suy luận có thể thay đổi rất nhiều. Bạn cần đo lường kỹ lưỡng trên các thiết bị mục tiêu. Chúng tôi kỳ vọng ứng dụng sẽ chạy trên thiết bị suy luận để tiếp tục nhanh hơn nhờ các bản cập nhật thư viện, WebAssembly và Web GPU. Ví dụ: Transformers.js thêm Hỗ trợ GPU web trong phiên bản 3, giúp tăng tốc độ suy luận trên thiết bị.

Kích thước tệp tải xuống có thể rất lớn. Quá trình suy luận trong trình duyệt rất nhanh, nhưng việc tải các mô hình AI có thể là một thách thức. Để thực hiện AI trên trình duyệt, thông thường cần cả thư viện và mô hình. Các thư viện và mô hình này sẽ làm tăng kích thước tải xuống của ứng dụng web của bạn.

Trong khi mô hình độc tính Tensorflow (một mô hình xử lý ngôn ngữ tự nhiên cổ điển) chỉ có vài kilobyte, các mô hình AI tạo sinh như mô hình mặc định của Transformers.js mô hình phân tích cảm nhận đạt 60 MB. Các mô hình ngôn ngữ lớn như Gemma có thể lớn tới 1,3 GB. Giá trị này vượt quá trung bình Kích thước trang web 2,2 mb, tức là lớn hơn nhiều so với khuyến nghị để có hiệu suất tốt nhất cho đến nay. Trên thiết bị AI tạo sinh có thể sử dụng được trong một số tình huống.

Lĩnh vực AI tạo sinh trên web đang phát triển nhanh chóng! Nhỏ hơn, các mô hình được tối ưu hoá cho web đang dự kiến xuất hiện trong tương lai.

Các bước tiếp theo

Chrome đang thử nghiệm một cách khác để chạy AI tạo sinh trong trình duyệt. Bạn có thể đăng ký tham gia chương trình dùng thử sớm để thử nghiệm.