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 araştırmalara göre, internetten alışveriş yapanların% 82'si bir şey satın almadan önce aktif olarak olumsuz yorumlar arıyor. Olumsuz yorumların bulunması iade oranlarının azalmasına ve üreticilerin ürünlerini iyileştirmelerine yardımcı olabileceğinden bu olumsuz yorumlar müşteriler ve işletmeler için yararlıdır.

Yorum kalitesini iyileştirmenin birkaç yolu vardır:

  • Göndermeden önce her yorumun kötü niyetli olup olmadığını kontrol edin. Kullanıcıları rahatsız edici dilin yanı sıra faydalı olmayan diğer yorumları da kaldırmaya teşvik edebiliriz. Böylece incelemeleri, diğer kullanıcıların daha iyi bir satın alma kararı vermesine en iyi şekilde yardımcı olur.
    • Negatif: Bu çanta iğrenç ve nefret ediyorum.
    • Faydalı geri bildirim ile olumsuz: Fermuarlar çok sert ve malzeme ucuz görünüyor. Bu çantayı iade ettim.
  • Yorumda kullanılan dile göre otomatik olarak puan oluşturun.
  • Yorumun olumsuz mu yoksa olumlu mu olduğunu belirleyin.
Duygu ve yıldız puanı içeren örnek yorum ekran görüntüsü.
Bu örnekte, yorumcunun yorumuna olumlu duygu verilmiş ve beş yıldız verilmiş.

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

Aşağıdaki codelab'deki çözümler cihaz üzerinde ve tarayıcıda sunulmaktadır. AI geliştirme bilgisi, sunucu veya API anahtarı gerektirmez.

Ön koşullar

Çözüm içeren sunucu tarafı AI (Gemini API veya OpenAI API gibi) birçok uygulama için güçlü çözümler sunarken bu kılavuzda cihaz üzerinde web AI'ya odaklanıyoruz. Cihaz üzerinde web AI, AI modellerinin sunucu gidiş gelişleri olmadan web kullanıcılarının deneyimini iyileştirmek için tarayıcıda çalıştırılmasıdır.

Bu codelab'de, cihaz üzerinde web AI'ı için kullanabileceğiniz araçlar yardımıyla çeşitli tekniklerden yararlanacağız.

Aşağıdaki kitaplıkları ve modelleri kullanırız:

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

Kullanıcı deneyimi ve güvenlikle ilgili dikkat edilmesi gerekenler

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 ver. Sonuç olarak, ürün puanıyla ilgili son söz kullanıcı olmalıdır.
  • Kullanıcı puanın 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 verin, ancak sunucuda ikinci bir kontrol yapın. Bu, zehirli olmayan bir incelemenin hatalı bir şekilde zehirli (yanlış pozitif) olarak sınıflandırıldığı sinir bozucu bir deneyimi önler. Bu ayrıca, kötü amaçlı bir kullanıcının istemci taraflı denetimi atlamayı başardığı durumları da kapsar.
  • İstemci taraflı toksisite kontrolü faydalı olmakla birlikte atlayabilirsiniz. Sunucu tarafında da kontrol işlemi yaptığınızdan emin olun.

TensorFlow.js ile kirlilik analizi yapma

TensorFlow.js ile bir kullanıcı yorumundaki olumsuzlukları analiz etmeye hızlıca başlayabilirsiniz.

  1. TensorFlow.js kitaplığını ve toksiklik modelini yükleyin ve import.
  2. Minimum tahmin güvenini 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. İncelemeyi eşzamansız olarak sınıflandırın. Kodumuz, herhangi bir kategori için 0,9 eşiğini aşan tahminleri tanımlar.

Bu model kimlik saldırısı, hakaret, müstehcenlik ve diğer içeriklerdeki kirliliği kategorilere ayırabilir.

Ö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 yaklaşımı belirleme

  1. Transformers.js kitaplığını yükleyin ve içe aktarın.

  2. Özel bir ardışık düzen ile yaklaşım analizi görevini ayarlayın. Ardışık düzen ilk kez kullanıldığında model indirilir ve önbelleğe alınır. Sonrasında yaklaşım analizi çok daha hızlı olacaktır.

  3. İncelemeyi eşzamansız olarak sınıflandırın. Uygulamanız için kullanılabilir olduğunu düşündüğünüz güven düzeyini ayarlamak için özel bir eşik kullanın.

Ö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 yıldızlı değerlendirme öner

LLM Inference API ile büyük dil modellerini (LLM) tarayıcıda eksiksiz şekilde çalıştırabilirsiniz.

Bu yeni özellik, geleneksel cihaz üzerinde modellerden yüz kat daha büyük olan LLM'lerin bellek ve işlem talepleri göz önünde bulundurulduğunda özellikle dönüşüm yaratıyor. Yeni işlemler, nicelikselleştirme, önbelleğe alma ve ağırlık paylaşımı da dahil olmak üzere cihaz üzerinde yığın genelinde optimizasyonlar bunu mümkün kılar. Kaynak: "Large Language Models On-Device with MediaPipe and TensorFlow Lite" (MediaPipe ve TensorFlow Lite ile Cihazdaki Büyük Dil Modelleri).

  1. MediaPipe LLM çıkarım API'sini yükleyin ve içe aktarın.
  2. Model indirin. Burada, Kaggle'dan indirilen Gemma 2B'yi kullanıyoruz. Gemma 2B, Google'ın açık ağırlık modellerinin en küçüğüdür.
  3. FilesetResolver ile kodu doğru model dosyalarına yönlendirin. Üretken yapay zeka modelleri, öğeleri için belirli bir dizin yapısına sahip olabileceğinden bu önemlidir.
  4. Modeli MediaPipe'in LLM arayüzüyle yükleyin ve yapılandırın. Modeli kullanıma hazırlayın: Model konumunu, tercih edilen yanıt uzunluğunu ve sıcaklıkla ilgili tercih edilen yaratıcılık düzeyini belirtin.
  5. Modele bir istem gönderin (örneğe bakın).
  6. Modelin yanıtını bekleyin.
  7. Derecelendirme için ayrıştırma: Modelin yanıtından yıldız derecelendirmesini çıkarın.
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`;

Çalmalar

Yapay zeka/makine öğrenimi uzmanlığı gerekmez. İstem tasarlamak için yinelemeler gerekir ama kodun geri kalanı standart web geliştirme sürecidir.

Cihaz üzerindeki modellerin doğruluğu oldukça doğrudur. Bu belgedeki snippet'leri çalıştırırsanız hem toksiklik hem de yaklaşım analizinin doğru sonuçlar verdiğini gözlemlersiniz. Gemma derecelendirmeleri, çoğunlukla test edilmiş birkaç referans yorumu için Gemini modeli derecelendirmeleriyle eşleşmiştir. Bu doğruluğu doğrulamak için daha fazla test yapılması gerekir.

Bununla birlikte, Gemma 2B için istem tasarlamak çok çaba gerektirir. Gemma 2B küçük bir büyük dil modeli (LLM) olduğundan tatmin edici sonuçlar ( özellikle Gemini API ile gerekenden daha ayrıntılı) oluşturmak için ayrıntılı bir istem gerekir.

Çıkarım ışık hızında olabilir. Bu belgedeki snippet'leri çalıştırırsanız çıkarımın bazı cihazlarda sunucu gidiş gelişlerinden potansiyel olarak daha hızlı olabileceğini gözlemlemeniz gerekir. Bununla birlikte, çıkarım hızı büyük ölçüde değişebilir. Hedef cihazlarda kapsamlı karşılaştırma yapılması gerekir. Cihaz üzerinde çıkarımın Web GPU, WebAssembly ve kitaplık güncellemeleri ile hızlanmaya devam etmesini bekliyoruz. Örneğin Transformers.js, v3'te Web GPU desteği eklemektedir. Bu destek, cihaz üzerindeki çıkarımı çok kat hızlandırabilir.

İndirme boyutları çok büyük olabilir. Tarayıcıdaki çıkarım hızlı olsa da AI modellerini yüklemek zor olabilir. Tarayıcı içi yapay zeka gerçekleştirmek için genellikle hem bir kitaplığa hem de bir modele ihtiyacınız vardır. Bunlar web uygulamanızın indirme boyutunu artırır.

Tensorflow toksisite modeli (klasik bir doğal dil işleme modeli) yalnızca birkaç kilobayt büyüklüğünde olsa da Transformers.js'nin varsayılan yaklaşım analizi modeli gibi üretken yapay zeka modelleri 60 MB'a ulaşır. Gemma gibi büyük dil modellerinin boyutu 1,3 GB kadar olabilir. Bu değer, en iyi performans için önerilenden çok daha büyük olan ortanca 2, 2 MB'lık web sayfası boyutunu aşıyor. Cihaz üzerinde üretken yapay zeka, belirli senaryolarda kullanılabilir.

Web'deki üretken yapay zeka alanı hızla gelişiyor. Web için optimize edilmiş daha küçük modellerin gelecekte ortaya çıkması bekleniyor.

Sonraki adımlar

Chrome, tarayıcıda üretken yapay zekayı çalıştırmanın başka bir yolunu deniyor. Test etmek için erken önizleme programına kaydolabilirsiniz.