Cihaz üzerinde web yapay zekasıyla faydalı ürün yorumlarını teşvik edin

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

Olumlu ve olumsuz yorumlar, alıcının satın alma kararını şekillendirebilir.

Harici bir araştırmaya göre, internetten alışveriş yapanların% 82'si aktif olarak olumsuz sonuçlar elde etmeyi incelemelerini isteyin. Bu olumsuz yorumlar şunun için yararlıdır: hem de işletmeler açısından değerlidir. Olumsuz yorumların olması, iade oranlarını düşürebilir ve üreticilerin ürünlerini iyileştirmelerine yardımcı olabilirsiniz.

Yorum kalitesini iyileştirmek için kullanabileceğiniz birkaç yöntemi aşağıda bulabilirsiniz:

  • Göndermeden önce her yorumda kirlilik olup olmadığını kontrol edin. Kullanıcıları, rahatsız edici ifadelerin yanı sıra diğer faydalı olmayan yorumları kaldırmaya teşvik edebiliriz. Böylece, yorumlarının diğer kullanıcıların daha iyi bir satın alma kararı vermesine yardımcı olur.
    • Negatif: Bu çanta berbat ve nefret ediyorum.
    • Faydalı geri bildirim içeriyor: Fermuarlar çok sert ve malzemesi ucuz görünüyor. Bu çantayı iade ettim.
  • Yorumda kullanılan dile göre otomatik olarak bir puan oluşturun.
  • İncelemenin olumsuz mu yoksa olumlu mu olduğunu belirleyin.
ziyaret edin.
Duygu ve yıldız puanının yer aldığı örnek yorum ekran görüntüsü.
Bu örnekte, yorumcunun yorumuna olumlu bir düşünce verilmiş ve beş yıldız verilmiş.

Sonuç olarak, ürün puanı hakkında son söz kullanıcı olmalıdır.

Aşağıdaki codelab'de, cihaz üzerinde ve tarayıcıda çözümler sunulmaktadır. Yapay zeka yok veya API anahtarları gerektirir.

Ön koşullar

Sunucu tarafı yapay zeka çözümleri (ör. Gemini API veya OpenAI API) sunduğu tüm uygulamalar bu kılavuzda cihaz üzerinde web yapay zekasına odaklanacağız. Cihaz üzerinde web yapay zekası Web kullanıcılarının deneyimini iyileştirmek için yapay zeka modellerinin tarayıcıda çalışması sorun yaşıyordu.

Bu codelab'de, araç kutunuzda neler olduğunu göstermek için çeşitli tekniklerden yararlanıyoruz. web AI'ı kullanıma sunuyoruz.

Kullandığımız kitaplık ve modeller:

  • Toksiklik analizi için TensforFlow.js. TensorFlow.js, web'de hem çıkarım hem de eğitim için açık kaynaklı bir makine öğrenimi kitaplığıdır.
  • transformers.js'yi kullanmaları gerekir. Transformers.js, Hugging Face'in web yapay zeka kitaplığıdır.
  • Yıldız puanları için Gemma 2B'yi seçin. Gemma, Google'ın Gemini modellerini oluşturmak için kullandığı araştırma ve teknolojiyle oluşturulmuş hafif, açık modeller ailesidir. Tarayıcıda Gemma'yı çalıştırmak için bunu MediaPipe'in deneysel LLM Inference API'si ile kullanırız.

Kullanıcı deneyimi ve güvenlikle ilgili dikkat edilmesi gereken noktalar

En iyi kullanıcı deneyimini ve güvenliği sağlamak için dikkat edilmesi gereken birkaç nokta vardır:

  • Kullanıcının puanı düzenlemesine izin verin. Sonuç olarak kullanıcı, kelime.
  • Kullanıcıya, derecelendirmenin ve yorumların otomatik olduğunu açıkça belirtin.
  • Kullanıcıların zararlı olarak sınıflandırılmış bir yorum yayınlamasına izin ver, ancak şurada ikinci bir kontrol daha yap: sunucu üzerinde çalışır. Böylece, rahatsız edici olmayan bir yorumun istenmeyen yanlışlıkla toksik olarak sınıflandırıldı (yanlış pozitif). Bu, aynı zamanda Burada kötü amaçlı bir kullanıcı, istemci taraflı kontrolü atlamayı başarabilir.
  • İstemci tarafında yapılan toksisite kontrolü faydalı olsa da atlanabilir. Aşağıdakileri yaptığınızdan emin olun: sunucu tarafında da kontrol edebilirsiniz.

TensorFlow.js ile toksisiteyi analiz edin

TensorFlow.js ile kullanıcıların yorumlarının kirliliğini analiz etmeye hemen başlayabilirsiniz.

  1. Yükle ve içe aktarma TensorFlow.js kitaplığı ve toksisite modeli.
  2. Minimum tahmin güvenilirliğini belirleyin. Varsayılan değer 0,85'tir ve örneğimizde 0,9 olarak ayarladık.
  3. Modeli eşzamansız olarak yükleyin.
  4. Yorumu eşzamansız olarak sınıflandırın. Kodumuz, 10.000'den az olan tahminlerin eşik 0,9 olabilir.

Bu model; kimlik saldırısı, hakaret, müstehcenlik ve diğer türlerde toksikliği kategorize edebilir.

Örneğin:

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

Transformers.js ile duyarlılığı belirleme

  1. Yükle ve Transformers.js kitaplığını içe aktaracağız.

  2. Yaklaşım analizini ayarlama görev özel bir ardışık düzen ile. Bir ardışık düzen ilk kez kullanıldığında model indirilir ve önbelleğe alınır. Bu noktadan itibaren yaklaşım analizi çok daha hızlı olacaktır.

  3. Yorumu eşzamansız olarak sınıflandırın. Düzeyi belirlemek için özel eşik kullanın. bu güven düzeyini artırmanız gerekir.

Örneğin:

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
}

Gemma ve MediaPipe ile bir yıldız puanı önerin

LLM Inference API ile büyük dil modellerini (LLM) tamamen çalıştırabilirsiniz. tıklayın.

Bu yeni özellik, özellikle de hafıza ve performans açısından iki kat daha büyüktür. Bu, LLM'lerin model üzerinde çalışıyor. Cihaz üzerinde yığın oluşturmada optimizasyonlar (yeni işlemler, miktar belirleme, önbelleğe alma ve ağırlık paylaşımı dahil olmak üzere) bunu mümkün kılıyor. Kaynak: "MediaPipe ve TensorFlow Lite ile Cihazdaki Büyük Dil Modelleri".

  1. Yükleme ve içe aktarma inceleyebilirsiniz.
  2. Bir model indirin. Burada Gemma 2B kullanıyoruz. Kaggle'dan indirildi. Gemma 2B, Google'ın açık ağırlıklı modellerinin en küçüğüdür.
  3. FilesetResolver ile kodu doğru model dosyalarına yönlendirin. Bu Önemli çünkü üretken yapay zeka modellerinin belirli bir dizin yapısı olabilir sahip olacaksınız.
  4. Modeli MediaPipe'in LLM arayüzüyle yükleyin ve yapılandırın. model: model konumunu, tercih edilen yanıt süresini ve ve sıcaklıkla birlikte tercih edilen yaratıcılık düzeyini ifade eder.
  5. Modele bir istem sunun (örneğe bakın).
  6. Modelin yanıtını bekleyin.
  7. Derecelendirme için ayrıştır: Modelin yanıtından yıldız puanını ayıklayın.
ziyaret edin.
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);

Örnek istem

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

Çıkarımlar

AI/makine öğrenimi uzmanlığı gerekmez. İstem tasarlamak için iterasyonlar gerekir ancak kodun geri kalanı standart web geliştirmedir.

Cihaz üzerindeki modeller oldukça doğrudur. Bu snippet'leri hem toksiklik hem de hassasiyet analizinin doğru sonuçlar. Gemma derecelendirmeleri çoğunlukla Gemini modeliyle eşleşti test edilmiş birkaç referans yorumunun derecelendirmesi. Bu doğruluğu doğrulamak için daha fazla test yapılması gerekir.

Bununla birlikte, Gemma 2B'nin istemini tasarlamak çalışma gerektirir. Çünkü Gemma 2B, memnun edici sonuçlar üretmek için ayrıntılı bir isteme ihtiyacı vardır. Özellikle de küçük gerekenden daha ayrıntılı olduğundan emin olun.

Çıkarım son derece hızlı olabilir. Bu dokümandaki snippet'leri çalıştırırsanız çıkarımın sunucudan veya sunucudan çok daha hızlı olabileceğini çeşitli cihazlarda kullanılabilir. Bununla birlikte çıkarım hızı farklı çok teşekkür ederim. Hedef cihazlarda kapsamlı karşılaştırmalar yapmak gerekir. Cihazda kullanılmasını bekleriz çıkarımdan yararlanarak web GPU, WebAssembly ve kitaplık güncellemeleriyle hızlanmaya devam edebilirsiniz. Örneğin, Transformers.js, v3'te web GPU desteği, Bu da cihaz üzerinde çıkarımı birçok kat hızlandırabilir.

İndirme boyutları çok büyük olabilir. Tarayıcıdaki çıkarım hızlıdır ancak yapay zeka modellerinin yüklenmesi zor olabilir. Tarayıcı içi yapay zeka gerçekleştirmek için genellikle için hem kitaplık hem de model gerekir. Bunlar web uygulamanızın indirme boyutuna eklenir.

Tensorflow toksisite modeli (klasik bir doğal dil işleme modeli) yalnızca birkaç kilobayttır. Transformers.js gibi üretken yapay zeka modelleri, yaklaşım analizi modeli 60 MB'a ulaştığında. Gemma gibi büyük dil modelleri, depolama alanına sahip olursunuz. Bu değer, ortanca değeri aşıyor 2, 2 MB web sayfası boyutu: önerilenden çok daha yüksek olabilir. Cihazda Üretken yapay zeka belirli senaryolarda kullanılabilir.

Web'de üretken yapay zeka alanı hızla gelişiyor. Daha küçük, web için optimize edilmiş modellerin ortaya çıkması bekleniyor daha avantajlı bir konumda olursunuz.

Sonraki adımlar

Chrome, üretken yapay zekayı tarayıcıda çalıştırmanın farklı bir yolunu deniyor. Erken önizleme programına kaydolabilirsiniz .