İstemci tarafı yapay zeka ile ürün yorum önerilerini inceleyin

Maud Nalpas
Maud Nalpas

Yayınlanma tarihi: 21 Ekim 2024

Online mağazalar, ürün yorumlarını göstererek dönüşümlerde %270 artış elde edebilir. Olumsuz yorumlar da güvenilirlik oluşturması açısından önemlidir. %82 İnternette alışveriş yapan kullanıcıların %47'si, ürün satın almadan önce ürün arıyor.

Müşterileri, özellikle olumsuz yorumlar söz konusu olduğunda faydalı ürün yorumları bırakmaya teşvik etmek zor olabilir. Bu makalede, kullanıcıların diğer kullanıcıların satın alma kararlarına yardımcı olacak bilgilendirici yorumlar yazmasına yardımcı olmak için üretken yapay zekanın nasıl kullanılacağı ele alınmaktadır.

Demo ve kod

Şunlara göz atın: ürün yorumu demosu ve GitHub'da kodlayın.

Bu raporu nasıl oluşturduk?

İstemci tarafı yapay zeka

Bu demoda özelliği aşağıdaki nedenlerle istemci tarafında uyguladık:

  • Gecikme. Önerileri kullanıcılar için hızlı bir şekilde sunmak istiyoruz. yazmayı durdurur. Sunucu gidiş gelişlerini önleyerek bunu sunabiliriz.
  • Maliyet. Bu bir demo olsa da üretimde benzer bir özelliği kullanıma sunmayı düşünüyorsanız özelliğin kullanıcılarınız için uygun olup olmadığını doğrulayana kadar sunucu tarafı maliyeti olmadan deneme yapabilirsiniz.
ziyaret edin.

MediaPipe üretken yapay zeka

Aşağıdaki nedenlerden dolayı MediaPipe LLM Tahmin API (MediaPipe GenAI paketi) üzerinden Gemma 2B modelini kullanmayı tercih ettik:

  • Model doğruluğu: Gemma 2B, boyut ve doğruluk arasında mükemmel bir denge sunar. Zaman bu demo için tatmin edici bulduğumuz sonuçları sağladı.
  • Tarayıcılar arası destek: MediaPipe, WebGPU'yu destekleyen tüm tarayıcılarda desteklenir.

Kullanıcı deneyimi

Performansla ilgili en iyi uygulamaları uygulayın

Gemma 2B küçük bir geniş kapsamlı dil modeli olsa da hâlâ büyük bir indirmedir. Performansla ilgili en iyi uygulamalardan yararlanın. örneğin bir web çalışanı kullanmak.

Özelliği isteğe bağlı hale getirin

Yapay zeka tabanlı yorum önerilerinin, kullanıcının ürün yorumu yayınlama iş akışını iyileştirmesini istiyoruz. Uygulamamızda, model yüklenmemiş olsa bile kullanıcı yorum yayınlayabilir ve bu nedenle iyileştirme ipuçları sunulmaz.

Şekil 1. Yapay zeka olsa bile kullanıcılar yorumlarını yayınlamaya devam edebilir özelliği henüz hazır değil.

Kullanıcı arayüzü durumları ve animasyonlar

Çıkarım, genellikle anlık olarak hissettirilen bir işlemden daha fazla zaman alır. Bu nedenle, kullanıcıya modelin çıkarım veya "düşünme" çalıştırdığını belirtiriz. Beklemeyi yumuşatmak ve kullanıcıya uygulamanın beklendiği gibi çalıştığından emin olmak için animasyonlar kullanıyoruz. Adam Argyle tarafından tasarlanan ve demomuzda uyguladığımız farklı kullanıcı arayüzü durumlarını keşfedin.

Şekil 2. Animasyonlar, modelin yüklenmekte olduğunu gösterir. "düşünerek" ve son olarak da bitti.

Dikkat edilmesi gereken diğer noktalar

Bir üretim ortamında şunları yapmak isteyebilirsiniz:

  • Geri bildirim mekanizması sağlayın. Önerilerin kalitesi düşükse veya anlamlı değilse ne olur? Hızlı bir geri bildirim mekanizması (ör. beğenme ve beğenmeme) tıklayabilir ve kullanıcıların ne bulduklarını belirlemek için buluşsal yöntemlere güvenebilirsiniz. faydalı olur. Örneğin, kaç kullanıcınızın ve kapatma durumları hakkında.
  • Devre dışı bırakmaya izin ver. Kullanıcı kelime kullanmadan kendi kelimelerini bu özelliği rahatsız edici buluyor mu? Kullanıcının kapsam dışında kalmayı seçmesine ve istediğiniz gibi tekrar etkinleştirebilirsiniz.
  • Bu özelliğin neden bulunduğunu açıklayın. Kısa bir açıklama sizi ve geri bildirim aracını kullanmaya başlar. Örneğin, “Daha iyi geri bildirim diğer insanların alışveriş yapanlar ne alacaklarına karar veriyor ve istediğiniz ürünleri oluşturmamıza yardımcı oluyor." Siz özelliğin nasıl çalıştığına ve bunu neden geliştirdiğinize dair bir bağlantıyla daha fazla bilgi edinebilirsiniz.
  • Uygun durumlarda yapay zeka kullanımı hakkında bilgi verin. İstemci tarafı yapay zeka sayesinde kullanıcının içeriği işlenmek üzere bir sunucuya gönderilmez ve bu nedenle gizli tutulabilir. Ancak, sunucu tarafı yedeği derlerseniz veya yapay zeka ile başka şekilde bilgi toplarsanız, gizlilik politikanıza, hizmet şartlarınıza veya başka yerlere ekleyebilirsiniz.

Uygulama

Ürün yorumu öneren aracımız, çok çeşitli kullanım alanları için işe yarayabilir. Aşağıdaki bilgileri geleceğiniz için temel olarak kullanabilirsiniz istemci tarafı yapay zeka özellikleri hakkında daha fazla bilgi edinin.

Bir web çalışanındaki MediaPipe

MediaPipe LLM çıkarımı ile AI kodu yalnızca birkaç satırdan oluşur: Ona bir model URL'si ileterek bir dosya çözümleyici ve bir LLM çıkarım nesnesi oluşturun, ardından bu LLM çıkarım örneğini kullanarak bir yanıt oluşturun.

Ancak kod örneğimiz biraz daha kapsamlı. Bunun nedeni, bir web işçisinde uygulanmış olmasıdır. Bu nedenle, ana komut dosyasıyla iletileri özel mesaj kodları üzerinden iletir. Bu model hakkında daha fazla bilgi edinin.

// Trigger model preparation *before* the first message arrives
self.postMessage({ code: MESSAGE_CODE.PREPARING_MODEL, payload: null });
try {
  // Create a FilesetResolver instance for GenAI tasks
  const genai = await FilesetResolver.forGenAiTasks(MEDIAPIPE_WASM);
  // Create an LLM Inference instance from the specified model path
  llmInference = await LlmInference.createFromModelPath(genai, MODEL_URL);
  self.postMessage({ code: MESSAGE_CODE.MODEL_READY, payload: null });
} catch (error) {
  self.postMessage({ code: MESSAGE_CODE.MODEL_ERROR, payload: null });
}

// Trigger inference upon receiving a message from the main script
self.onmessage = function (message) {
  if (!llmInference) {
    // Just in case. This condition shouldn't normally be hit because
    // the inference UI button is disabled until the model is ready
    throw new Error("Can't run inference, the model is not ready yet");
  }
  (async function () {
    // Run inference = Generate an LLM response
    try {
    const response = await llmInference.generateResponse(
      // Create a prompt based on message.data, which is the actual review
      // draft the user has written. generatePrompt is a local utility function.
      generatePrompt(message.data)
    );
    } catch (error) {
      self.postMessage({ code: MESSAGE_CODE.INFERENCE_ERROR, payload: null });
    }
    // Parse and process the output using a local utility function
    const reviewHelperOutput = generateReviewHelperOutput(response);
    // Post a message to the main thread
    self.postMessage({
      code: MESSAGE_CODE.RESPONSE_READY,
      payload: reviewHelperOutput,
    });
  })();
};

export const MESSAGE_CODE ={
  PREPARING_MODEL: 'preparing-model',
  MODEL_READY: 'model-ready',
  GENERATING_RESPONSE: 'generating-response',
  RESPONSE_READY: 'response-ready',
  MODEL_ERROR: 'model-error',
  INFERENCE_ERROR: 'inference-error',
};

Giriş ve çıkış

Şekil 3. Ham LLM çıktısına çıkarım yoluyla istemin işlenmesini gösteren ve bu çıkış daha sonra okuma için gösterme önerisine ayrıştırılan bir şema.

İstemimiz şununla oluşturulmuştur: birkaç atış isteme. Kullanıcının görüşlerini veya başka bir deyişle kullanıcının yorum taslağını içerir emin olabilirsiniz.

İstemimizi kullanıcı girişine göre oluşturmak için çalışma zamanında generatePrompt yardımcı program işlevimizi çağırıyoruz.

İstemci tarafı yapay zeka modelleri ve kitaplıkları, genellikle yardımcı oldu. Örneğin, JSON modu genellikle mevcut değildir. Bu, istenen çıktıyı sunmamız gerektiği anlamına gelir. emin olmanız gerekir. Bu yöntem, model yapılandırması aracılığıyla bir şema sağlamaktan daha az temiz, sürdürülebilir ve güvenilirdir. Ayrıca istemci tarafı modeller daha küçük olma eğilimindedir. Bu da çıktılarında yapısal hatalara daha yatkın oldukları anlamına gelir.

Uygulamada, Gemma 2B'nin JSON veya JavaScript'e kıyasla metin olarak yapılandırılmış bir çıkış sağlama konusunda daha iyi performans gösterdiğini gözlemledik. Bu nedenle, bu demo için metne dayalı bir çıkış biçimi tercih ettik. Model metin oluşturur. Ardından, web sitemizde daha fazla işlenmek üzere çıktıyı bir JavaScript nesnesine ayrıştırın uygulamasını indirin.

İstemimizi iyileştiriyoruz

Gemini Chat arayüzünde istemim ve yanıt.
Şekil 4. Gemini Chat'ten istemimizi iyileştirmesini istedik ve yanıt verdiler ve ne tür iyileştirmeler yapıldığına dair bir açıklama ile etkililik hakkında konuştuk.

İstemimizi iterasyonla işlemek için bir LLM kullandık.

  • Çok görevli istem. Birkaç çekimlik istemlerimize örnek oluşturmak amacıyla Gemini Chat kullanılıyordu. Gemini Chat en çok en güçlü Gemini modellerine sahip olacaksınız. Bu sayede yüksek kaliteli örnekler oluşturduk.
  • İstemleri düzeltme İstemin yapısı hazır olduğunda Gemini Chat ile istemi hassaslaştırın. Bu, çıkış kalitesini iyileştirdi.

Kaliteyi artırmak için bağlamdan yararlanın

İstemimize ürün türünü eklemek, modelin daha fazla bilgi sağlamasına kaliteli öneriler sunmaktır. Bu demoda ürün türü statiktir. Gerçek bir uygulamada, ürünü dinamik olarak istemi görüntülenir.

Review: "I love these."
Helpful: No  
Fix: Be more specific, explain why you like these **socks**.
Example: "I love the blend of wool in these socks. Warm and not too heavy."

İstemimizin birkaç çekim bölümündeki örneklerden biri: Önerilen düzeltme ve örnek yoruma ürün türü ("çoraplar") dahil edilmiştir.

LLM ile ilgili hatalar ve düzeltmeler

Gemma 2B, genellikle daha güçlü ve daha büyük sunucu tarafı modellerden daha fazla mühendislik çalışması gerektirir.

Gemma 2B'de bazı zorluklarla karşılaştık. Aşağıda, sonuç:

  • Çok iyi. Gemma 2B, yorumları "yararlı değil" olarak işaretlemekte zorlandı ve yorumları değerlendirmekte tereddüt etti. Etiket dilini daha nötr hale getirmeye çalıştık ("faydalı" ve "faydalı değil" yerine "belirli" ve "spesifik değil") ve ancak bu, sonuçları iyileştirmedi. Şu sonuçları iyileştiren şey: ısrar ve tekrara yer verir. Düşünce zinciri yaklaşımı da muhtemelen iyileştirmeler sağlayacaktır.
  • Talimatlar net değil. Model bazen istemi fazla yorumladı. İnceleme yerine örnek listeye devam etti. Bunu düzeltmek için İsteme net bir geçiş ekledik:

    I'll give you example reviews and outputs, and then give you one review
    to analyze. Let's go:
    Examples:
    <... Examples>
    
    Review to analyze:
    <... User input>
    

    İstem net bir şekilde yapılandırıldığında model, örnek liste (az sayıda çekim) ile gerçek giriş arasında ayrım yapabilir.

  • Yanlış hedef. Bazen model, yorum metni yerine üründe değişiklik yapılmasını öneriyordu. Örneğin, "Bu şirketlerden nefret ediyorum "Çorapları farklı bir çorapla değiştirmeyi düşünün" gibi bir öneride marka veya stil" olarak adlandırılır. İstem bölünerek görev netleştirildi ve modelin incelemeye odaklanmasını sağladı.