L’AI che uso fornisce delle risposte corrette? 
L’AI che ho implementato e configurato da risposte coerenti oppure “a caso”?

Premessa

Utilizzando i modelli AI sia per lavoro che per scopi personali, una delle domande che mi sono posto è se posso considerare attendibili i risultati e, in generale, trovare un modo per valutare le risposte delle varie AI e determinare quale sia la migliore per ogni contesto.

Nel mio caso, dato che utilizzo le AI come supporto sia per le certificazioni Microsoft che per la certificazione PMP, non avevo chiaro se le risposte fornite fossero corrette oppure no.

Il primo obiettivo, quindi, era questo: dato ogni contesto (certificazioni Azure, certificazioni Dynamics, certificazioni PMI, ecc.), qual è il miglior modello AI, ossia quello che risponde correttamente al maggior numero di domande dell’esame?

Lavorativamente, invece, il problema era simile: il chatbot che ho creato per il cliente, che utilizza una determinata knowledge base, risponde correttamente o meno alle domande degli utenti, estraendo la risposta giusta dalla knowledge base?

È così che ho iniziato a usare uno strumento molto potente, ovvero l’AI Evaluator. Di seguito cercherò di inquadrare un esempio tipico.

Un caso reale

Prendiamo ad esempio una domanda dell’esame PMP, domanda che ha una e una sola risposta corretta:

"During the third iteration of a project, the product owner requests another mandatory feature. This also happened in the previous two sprints, which resulted in failure and caused frustration within the team.
What should the project manager do next?
A. Request the scrum team to prioritize the product backlog
B. Ask the product owner to prioritize the backlog with the project team
C. Call for an internal meeting to discuss the changes and their value
D. Incorporate the changes in the last sprint before the first release"

Diamo in pasto questa domanda a Chat GPT e vediamo cosa otteniamo:

Chiediamo una seconda volta la stessa domanda a ChatGPT:

Facciamo la stessa domanda a Claude:

Proviamo a chiedere a DeepSeek:

Ma, dato che siamo confusi, aggiungiamo una domanda:

Ed otteremo, dopo un bel deep seek:

Ok, non so voi, ma io sono confuso, allora chiedo a Google Gemini:

Ora, la mia domanda ha in effetti un difetto di fondo: si tratta di un errore di prompt, poiché non ho descritto il contesto della domanda. Quindi riproviamo a formulare la stessa domanda con un minimo di prompt engineering, che, in realtà, da un certo punto di vista, dovrebbe essere superfluo, perché la domanda dovrebbe avere una risposta giusta, una e una sola, e non una risposta giusta in funzione del contesto.
Riproviamo quindi a formulare la domanda con il contesto e usiamo, per cambiare, Microsoft Copilot:

Cosa ho voluto dimostrare con questo? Che non ci si può fidare!
Ovviamente, mi devo fidare, e mi ha risposto che la risposta corretta è la C, sebbene la B non sia sbagliata, ma, dovendo scegliere una sola risposta, la più corretta è la C. La risposta che mi ha dato questa persona, che io considero certa, la chiamerò ‘Ground Truth‘.

Gli AI Evaluator

Gli AI Evaluator usano vari criteri per valutare la qualità delle risposte di un modello di intelligenza artificiale. Ecco una panoramica dei principali:

Criteri generali di valutazione

Questi sono usati per valutare la qualità linguistica e il contenuto generato dall’AI:

  • Coherence (Coerenza) → La risposta ha senso ed è logicamente strutturata?
  • Fluency (Fluidità) → La risposta è ben scritta, grammaticalmente corretta e scorrevole
  • Relevance (Rilevanza) → La risposta è pertinente alla domanda o al contesto?
  • Similarity (Somiglianza) → Quanto la risposta è simile a una risposta di riferimento o attesa?
Metriche automatiche di valutazione

Queste sono misure numeriche usate soprattutto per la traduzione automatica e il text generation:

  • BLEU (Bilingual Evaluation Understudy) → Valuta la somiglianza tra il testo generato e un testo di riferimento, basandosi su corrispondenze di parole e frasi. Usato nella traduzione automatica.
  • F1 Score → Misura il bilanciamento tra precisione (quante risposte generate sono corrette) e richiamo (quante risposte corrette sono state effettivamente generate).
  • GLEU (Google BLEU) → Variante del BLEU che penalizza maggiormente gli errori e migliora la valutazione della qualità della traduzione automatica.
  • METEOR (Metric for Evaluation of Translation with Explicit ORdering) → Migliora BLEU considerando sinonimi, stemming (radici delle parole) e il significato delle frasi per una valutazione più accurata.

Queste metriche sono spesso combinate per ottenere un quadro più completo della qualità di un sistema AI.

Dopo questo quadretto veniamo al mio problema concreto.
A me non interessano, per la mia problematica, i criteri di fluidità, rilevanza e coerenza ma interessa solo il criterio di “Similarità”.

Delle varie metriche invece la F1 Score è la migliore se c’è da valutare risposte esatte o classificazioni, perché misura il bilanciamento tra precisione (quanto delle risposte AI sono corrette) e richiamo (quanto delle risposte corrette sono state effettivamente restituite).

Concretamente cosa devo fare?

Intanto è necessario creare un file JSONL. Un file JSONL (JSON Lines) è un formato basato su JSON in cui ogni riga del file rappresenta un oggetto JSON separato. È spesso utilizzato per la gestione di dati strutturati in modo efficiente, specialmente in applicazioni di big data, machine learning e logging.

Vediamo un file di esempio:

Questo file associa ad una domanda la risposta data un LLM e la risposta corretta.

Per poter “dare in pasto” questo file ad un AI Evaluator esistono, tre le altre, tre soluzioni che preferisco: tramite Visual Studio Code, tramite portale Azure, tramite codice C#/Java.

Per semplicità vediamo solo i primi due, ovvero Visual Studio Code e il Portale Azure.

Fare una valutazione usando Visual Studio Code

Installiamo l’estensione Microsoft “AI Toolkit”:

Andiamo su Evaluation
Aggiungiamo una nuova valutazione:
Selezioniamo le metriche che ci interessano:
Importo il dataset JSONL.
E’ tutto pronto:
Da notare che per valutare la similarità viene usato un modello AI. IL calcolo di F1 score invece non necessita di un modello AI, quindi non ha costi. Vediamo quindi i risultati:

Fare una valutazione usando il portale Azure

Su Azure AI Fountry, aprire il proprio modello Azure AI o Azure OpenAI e selezionare la nuova voce “Evaluation”.
Creare una nuova valutazione.
Selezionare quindi dataset:
Effettuare l’upload del proprio file JSONL:
Selezionare:
E la metrica F1:
Aspettiamo qualche minuti ed otteniamo quindi il risultato della valutazione:

Conclusioni

In pratica, l’AI Evaluator è uno strumento utilissimo che mi ha permesso di trovare un criterio uniforme e ufficiale per:

  • individuare, per ogni singola situazione, il modello che fornisce i risultati più attendibili quando devo prepararmi per un esame;
  • verificare, nel caso di un modello AI personalizzato, se la knowledge badge è corretta e se i risultati vengono recuperati correttamente.
Picture of Alberto Valenti

Alberto Valenti

MCT/MCP Microsoft Certified Professional

Se vuoi maggiori informazioni

Se vuoi maggiori informazioni​

Tags
Share this blog
Latest Posts
Categories
Solutions
Share this blog
What do you think?

What to read next

Got a project? Let’s talk!

Got a project?
Let’s talk!