Fomenta opiniones útiles sobre productos con la IA web integrada en el dispositivo

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

Las opiniones positivas y negativas pueden influir en la decisión de compra de un comprador.

Según una investigación externa, el 82% de los compradores en línea buscan activamente opiniones antes de realizar una compra. Estas opiniones negativas son útiles para a los clientes y a las empresas, ya que la disponibilidad de opiniones negativas puede ayudar reducir la tasa de devoluciones y ayudar a los fabricantes a mejorar sus productos.

Estas son algunas maneras de mejorar la calidad de las opiniones:

  • Revisa todas las opiniones para detectar contenido tóxico antes de enviarla. Podríamos alentar a los usuarios a que eliminen el lenguaje ofensivo, así como otros comentarios poco útiles, para que su opinión ayude mejor a otros usuarios a tomar una mejor decisión de compra.
    • Negativo: Este bolso es pésimo y lo odio.
    • Elementos negativos con comentarios útiles: Las cremalleras son muy rígidas y el material parece económico. Devolví esta bolsa.
  • Genera automáticamente una calificación en función del idioma de la opinión.
  • Determinar si la opinión es negativa o positiva.
Captura de pantalla de una opinión de ejemplo con una opinión y una calificación por estrellas.
En este ejemplo, el comentario del revisor recibe una opinión positiva y una calificación de cinco estrellas.

En última instancia, el usuario debe tener la última palabra sobre la calificación del producto.

En el siguiente codelab, se ofrecen soluciones integradas en el dispositivo y en el navegador. Sin IA se requieren conocimientos de desarrollo, servidores o claves de API.

Requisitos previos

Mientras que la IA del servidor con soluciones (como API de Gemini o OpenAI API) ofrecen soluciones sólidas para muchas aplicaciones, en esta guía nos enfocamos en la IA web en dispositivos. IA web en el dispositivo es cuando se ejecutan modelos de IA en el navegador para mejorar la experiencia de los usuarios de la Web sin recorridos de servidor.

En este codelab, usamos una combinación de técnicas para mostrarte lo que hay en tu caja de herramientas. para la IA web en el dispositivo.

Usamos las siguientes bibliotecas y modelos:

  • TensforFlow.js para el análisis de toxicidad. TensorFlow.js es una biblioteca de aprendizaje automático de código abierto para inferencias y entrenamientos en la Web.
  • transformers.js para el análisis de opiniones. Transformers.js es una biblioteca web de IA de Hugging Face.
  • Gemma 2B para obtener calificaciones por estrellas. Gemma es una familia de modelos abiertos y ligeros creados a partir de la investigación y la tecnología que Google usó para crear los modelos de Gemini. Para ejecutar Gemma en el navegador, la usamos con la API experimental de inferencia de LLM de MediaPipe.

Consideraciones de UX y seguridad

Hay algunas consideraciones para garantizar una experiencia del usuario y una seguridad óptimas:

  • Permite que el usuario edite la calificación. En última instancia, el usuario debe tener la última palabra en la calificación del producto.
  • Explícale al usuario que la calificación y las opiniones son automáticas.
  • Permitir que los usuarios publiquen una opinión clasificada como tóxica, pero realizar una segunda revisión en el servidor. Esto evita una experiencia frustrante cuando una opinión no es tóxica clasificado erróneamente como tóxico (falso positivo). Esto también abarca casos en la que un usuario malicioso logra evadir la comprobación del cliente.
  • Hacer una verificación de toxicidad del cliente es útil, pero se puede evadir. Asegúrate de ejecuta una verificación en el servidor.

Analiza la toxicidad con TensorFlow.js

Comenzar a analizar la toxicidad de una opinión de usuario con TensorFlow.js es rápido.

  1. Instalar y, luego, importar la biblioteca de TensorFlow.js y el modelo de toxicidad.
  2. Establece una confianza mínima para la predicción. El valor predeterminado es 0.85 y, en nuestro ejemplo, lo establecimos en 0.9.
  3. Carga el modelo de forma asíncrona.
  4. Clasificar la opinión de forma asíncrona Nuestro código identifica predicciones que superan un umbral de 0.9 para cualquier categoría.

Este modelo puede categorizar la toxicidad en ataques de identidad, insultos, obscenidades y mucho más.

Por ejemplo:

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

Determina la opinión con Transformers.js.

  1. Instalar e importaré la biblioteca Transformers.js.

  2. Configura el análisis de opiniones tarea con una canalización dedicada. Cuando se usa una canalización por primera vez, el modelo se descarga y se almacena en caché. A partir de ese momento, el análisis de opiniones debería ser mucho más rápido.

  3. Clasificar la opinión de forma asíncrona Usa un umbral personalizado para establecer el nivel de confianza que consideras útil para tu aplicación.

Por ejemplo:

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
}

Sugerir una calificación por estrellas con Gemma y MediaPipe

Con la API de inferencia de LLM, puedes ejecutar modelos grandes de lenguaje (LLM) completamente en el navegador.

Esta nueva capacidad es especialmente transformadora si se tienen en cuenta la memoria y de procesamiento de los LLM, que son más de cien veces mayores que modelos tradicionales integrados en el dispositivo. Las optimizaciones en la pila integrada en el dispositivo esto es posible, incluidas las nuevas operaciones, la cuantización, el almacenamiento en caché y el uso compartido de peso. Fuente: "Large Language Models On-Device with MediaPipe and TensorFlow Lite" (Modelos grandes de lenguaje en el dispositivo con MediaPipe y TensorFlow Lite).

  1. Cómo instalar e importar la API de inferencia de MediaPipe LLM.
  2. Descarga un modelo. Aquí, usamos Gemma 2B, descargado de Kaggle. Gemma 2B es el modelo de peso abierto más pequeño de Google.
  3. Apunta el código a los archivos del modelo correctos con el FilesetResolver. Este es importante porque los modelos de IA generativa pueden tener una estructura de directorio específica para sus recursos.
  4. Carga y configura el modelo con la interfaz de LLM de MediaPipe. Prepara el modelo para usar: especifica la ubicación del modelo, la longitud preferida de las respuestas, y el nivel preferido de creatividad con la temperatura.
  5. Proporciónale una instrucción al modelo (consulta un ejemplo).
  6. Espera la respuesta del modelo.
  7. Analizar la calificación: Extrae la calificación por estrellas de la respuesta del modelo.
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);

Instrucción de ejemplo

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

Conclusiones

No se requiere experiencia en IA ni AA. Diseñar una instrucción requiere iteraciones, pero el resto del código corresponde al desarrollo web estándar.

Los modelos en el dispositivo son bastante precisos. Si ejecutas los fragmentos de este documento, verás que tanto la toxicidad como el análisis de opiniones resultados precisos. En su mayoría, las calificaciones de Gemma coincidían con el modelo de Gemini. de algunas opiniones de referencia probadas. Para validar esa exactitud, se requieren más pruebas.

Dicho esto, diseñar la instrucción para Gemma 2B requiere trabajo. Como Gemma 2B es un LLM pequeño, necesita una instrucción detallada para producir resultados satisfactorios, sea más detallada que lo que se requiere con la API de Gemini.

La inferencia puede ser muy rápida. Si ejecutas los fragmentos de este documento, deberías observar que la inferencia puede ser rápida, posiblemente más rápida que la velocidad de ida y vuelta en varios dispositivos. Dicho esto, la velocidad de inferencia puede variar de manera significativa. Se necesitan comparativas exhaustivas en los dispositivos de destino. Esperamos que la integración en el la inferencia para seguir acelerando con las GPU web, WebAssembly y las actualizaciones de bibliotecas. Por ejemplo, Transformers.js agrega Compatibilidad con GPU web en v3, lo que puede acelerar la inferencia en el dispositivo muchas veces.

Los tamaños de descarga pueden ser muy grandes. La inferencia en el navegador es rápida, pero cargar modelos de IA puede ser un desafío. Para llevar a cabo la IA en el navegador, normalmente, necesitas una biblioteca y un modelo, que se agregan al tamaño de descarga de la aplicación web.

Mientras que el modelo de toxicidad de TensorFlow (un modelo clásico de procesamiento de lenguaje natural) son de unos pocos kilobytes, los modelos de IA generativa como el de opiniones alcanza los 60 MB. Los modelos grandes de lenguaje, como Gemma, pueden ser hasta 1.3 GB. Esto excede la mediana Tamaño de página web de 2.2 MB, que es ya es mucho más grande de lo recomendado para lograr el mejor rendimiento. En el dispositivo la IA generativa es viable en situaciones específicas.

El campo de la IA generativa en la Web está evolucionando rápidamente. Más pequeña, los modelos optimizados para la Web se se espera que surjan en el futuro.

Próximos pasos

Chrome está probando otra forma de ejecutar la IA generativa en el navegador. Puedes registrarte en el Programa de versión preliminar anticipada. para probarlo.