Le recensioni positive e negative possono influenzare la decisione di acquisto di un acquirente.
Secondo una ricerca esterna, l'82% degli acquirenti online cerca attivamente recensioni prima di effettuare un acquisto. Queste recensioni negative sono utili per ai clienti e alle attività, poiché la disponibilità di recensioni negative può aiutare ridurre le percentuali di reso e aiutare i produttori a migliorare i propri prodotti.
Ecco alcuni modi per migliorare la qualità delle recensioni:
- Controlla la tossicità di ogni recensione prima di inviarla. Potremmo incoraggiare gli utenti a rimuovere il linguaggio offensivo, nonché altre osservazioni inutili, in modo che la loro recensione aiuti al meglio gli altri utenti a prendere una decisione di acquisto migliore.
- Negativo: questa borsa fa schifo e pessimo.
- Negativo con feedback utile: le cerniere sono molto rigide e il materiale sembra economico. Ho restituito questo bagaglio.
- Genera automaticamente una valutazione in base alla lingua utilizzata nella recensione.
- Determina se la recensione è negativa o positiva.
In definitiva, l'ultima parola sulla valutazione del prodotto dovrebbe essere comunicata all'utente.
Il seguente codelab offre soluzioni on-device, nel browser. Nessuna IA conoscenze di sviluppo, server o chiavi API.
Prerequisiti
Mentre l'IA lato server con soluzioni (come API Gemini oppure API OpenAI) offrono solide soluzioni per molte applicazioni, in questa guida ci concentriamo sull'IA web on-device. IA web sul dispositivo si verifica quando i modelli di IA vengono eseguiti nel browser, per migliorare l'esperienza degli utenti web senza round trip del server.
In questo codelab, utilizziamo un mix di tecniche per mostrarti gli strumenti che hai a disposizione. per l'IA web sul dispositivo.
Utilizziamo le librerie e i modelli seguenti:
- TensforFlow.js per l'analisi della tossicità. TensorFlow.js è una libreria di machine learning open source sia per l'inferenza sia per l'addestramento sul web.
- transformers.js per l'analisi del sentiment. Transformers.js è una libreria di IA web di Hugging Face.
- Gemma 2B per le valutazioni a stelle. Gemma è una famiglia di modelli leggeri e aperti basati sulla ricerca e sulla tecnologia che Google ha utilizzato per creare i modelli Gemini. Per eseguire Gemma nel browser, utilizziamo l'API sperimentale LLM Inference di MediaPipe.
Considerazioni sull'esperienza utente e sulla sicurezza
Per garantire un'esperienza utente e una sicurezza ottimali, è necessario fare alcune considerazioni:
- Consenti all'utente di modificare la valutazione. Essenzialmente, l'utente dovrebbe avere parola sulla valutazione del prodotto.
- Comunica chiaramente all'utente che la valutazione e le recensioni sono automatizzate.
- Consenti agli utenti di pubblicare una recensione classificata come tossica, ma esegui un secondo controllo il server. Ciò impedisce un'esperienza frustrante in cui una recensione non tossica viene erroneamente classificato come tossico (un falso positivo). Sono inclusi anche i casi in cui un utente malintenzionato riesce ad aggirare il controllo lato client.
- Un controllo della tossicità lato client è utile, ma può essere ignorato. Assicurati di eseguire un controllo lato server.
Analizzare la tossicità con TensorFlow.js
Puoi iniziare rapidamente ad analizzare la tossicità di una recensione di un utente con TensorFlow.js.
- Installa e importa la libreria TensorFlow.js e il modello di tossicità.
- Imposta un'affidabilità minima della previsione. Il valore predefinito è 0,85 e, nel nostro esempio, l'abbiamo impostato a 0,9.
- Carica il modello in modo asincrono.
- Classifica la recensione in modo asincrono. Il nostro codice identifica previsioni superiori a una soglia di 0,9 per qualsiasi categoria.
Questo modello può classificare la tossicità attraverso attacchi all'identità, insulti, oscenità e altro ancora.
Ad esempio:
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
);
Determinare il sentiment con Transformers.js
Installa e importare la libreria Transformers.js.
Configura l'analisi del sentiment attività con una pipeline dedicata. Quando una pipeline viene utilizzata per la prima volta, il modello viene scaricato e memorizzato nella cache. Da quel momento in poi, l'analisi del sentiment dovrebbe essere molto più veloce.
Classifica la recensione in modo asincrono. Utilizza una soglia personalizzata per impostare il livello di sicurezza che consideri utilizzabili per la tua applicazione.
Ad esempio:
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
}
Suggerisci una valutazione a stelle con Gemma e MediaPipe
Con l'API LLM Inference, puoi eseguire modelli linguistici di grandi dimensioni (LLM) in modo completo nel browser.
Questa nuova funzionalità è particolarmente trasformativa, se si considerano le risorse della memoria di calcolo degli LLM, oltre 100 volte più grandi rispetto i tradizionali modelli on-device. Le ottimizzazioni nello stack on-device rendono ciò possibile, incluse nuove operazioni, quantizzazione, memorizzazione nella cache e condivisione del peso. Fonte: "Large Language Models On-Device with MediaPipe and TensorFlow Lite".
- Installare e importare l'API di inferenza LLM MediaPipe.
- Scarica un modello. In questo caso usiamo Gemma 2B, scaricato da Kaggle. Gemma 2B è il più piccolo tra i modelli open-weight di Google.
- Indirizza il codice ai file del modello corretti con
FilesetResolver
. Questo è è importante perché i modelli di IA generativa possono avere una struttura di directory specifica per i propri asset. - Carica e configura il modello con l'interfaccia LLM di MediaPipe. Prepara il utilizzare il modello: specifica la posizione del modello, la lunghezza preferita per le risposte, e un livello di creatività preferito con la temperatura.
- Fornisci un prompt al modello (vedi un esempio).
- Attendi la risposta del modello.
- Analizza la valutazione: estrai la valutazione a stelle dalla risposta del modello.
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);
Testo di esempio
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`;
Concetti principali
Non è richiesta alcuna esperienza in IA/ML. La progettazione di un prompt richiede iterazioni, il resto del codice è lo sviluppo web standard.
I modelli on-device sono abbastanza precisi. Se esegui gli snippet da questo osserverai che sia l'analisi della tossicità che l'analisi del sentiment la precisione dei risultati. Le valutazioni di Gemma, per la maggior parte, corrispondevano al modello Gemini le valutazioni di alcune recensioni di riferimento testate. Per convalidare questa precisione, sono necessari altri test.
Detto questo, la progettazione del prompt per Gemma 2B richiede molto lavoro. Perché Gemma 2B è una di dimensioni ridotte, ha bisogno di un prompt dettagliato per produrre risultati soddisfacenti, in particolare rispetto a quanto richiesto dall'API Gemini.
L'inferenza può essere estremamente veloce. Se esegui gli snippet da questo documento, dovresti osservare che l'inferenza può diventare veloce, potenzialmente più veloce del server di andata e ritorno, su una serie di dispositivi. Detto questo, la velocità di inferenza può variare molto. È necessario un attento benchmarking sui dispositivi target. Prevediamo che sul dispositivo l'inferenza per mantenere sempre più velocità grazie agli aggiornamenti di GPU web, WebAssembly e libreria. Ad esempio, Transformers.js aggiunge Supporto GPU web nella versione 3, il che può velocizzare l'inferenza sul dispositivo di molte volte.
Le dimensioni di download possono essere molto grandi. L'inferenza nel browser è veloce, ma il caricamento dei modelli di AI può essere complicato. Per eseguire l'AI nel browser, di solito hanno bisogno sia di una libreria sia di un modello, che si aggiungono alle dimensioni di download dell'app web.
Mentre il modello di tossicità TensorFlow (un classico modello di elaborazione del linguaggio naturale) è di pochi kilobyte, i modelli di IA generativa come quello predefinito di analisi del sentiment raggiunge i 60 MB. Modelli linguistici di grandi dimensioni come Gemma fino a 1,3 GB. Questo valore supera la mediana la dimensione della pagina web di 2,2 MB, ovvero è già molto più grande di quello consigliato per ottenere le migliori prestazioni. Su dispositivo l'IA generativa è attuabile in scenari specifici.
Il campo dell'IA generativa sul web è in rapida evoluzione. Più piccolo i modelli ottimizzati per il web è previsto che emerge in futuro.
Passaggi successivi
Chrome sta sperimentando un altro modo per eseguire l'IA generativa nel browser. Puoi registrarti al programma di anteprima in anteprima per testarlo.