AI Cookbook // Ricetta #17: Come valutare la qualità di un LLM con delle evals fatte in casa

Testare i modelli linguistici con un sistema su misura e gratuito

Ogni volta che viene rilasciato un nuovo modello linguistico (LLM), il primo problema è sempre lo stesso: come capire rapidamente se funziona meglio o peggio di quello che già utilizziamo?

Testare i prompt, confrontare le performance e valutare le differenze è un lavoro lungo e ripetitivo.

Non essendo un esperto di valutazione automatica, mi serviva un sistema fatto in casa: qualcosa di semplice, flessibile e gratuito, senza aggiungere nuovi abbonamenti mensili alla mia lista di spese aziendali.

Dopo vari esperimenti (e qualche mal di testa), sono riuscito a costruire un metodo pratico per creare e gestire test automatizzati sui modelli linguistici.

In questo articolo ti spiego i principi di base, come iniziare velocemente e ti lascio il codice completo su GitHub.

In fondo all’articolo ti spiego come ho fatto a generare tutto il codice con Roo Code, un plugin che… aiuta ma fa venire parecchi mal di testa.


Perché creare eval personalizzate?

Le valutazioni standard disponibili sul mercato spesso non si adattano alle esigenze specifiche di chi lavora con più fornitori di modelli (OpenAI, Anthropic, modelli locali) e configurazioni personalizzate.

Avere un sistema di eval su misura permette di:

✅ Mantenere il controllo sulla logica di valutazione.

✅ Evitare costi ricorrenti legati a tool di terze parti.

✅ Personalizzare le metriche in base al tuo progetto.

✅ Testare modelli locali, che spesso richiedono configurazioni speciali.


Ingredienti

Per costruire il sistema di eval personalizzate servono:

  • Modelli linguistici (OpenAI, Anthropic, modelli locali)
  • RooCode (plugin per Cursor/VS Studio, utile per automatizzare parte del codice)
  • Python, JSON, API provider LLM

Livello di difficoltà

5/5 Doppio Espresso, in tazza grande, lungo

Complesso, alto contenuto di caffeina per chi vuole affrontare argomenti impegnativi.


Tempo di preparazione

  • Da zero: circa 8 ore
  • Usando il codice già pronto: circa 1 ora per iniziare (ma preparati a dedicarci molto tempo per adattarlo alle tue esigenze!)

Procedura (in sintesi)

Il codice è disponibile su GitHub con una Quick Start Guide dettagliata. Qui riassumo i passaggi fondamentali.

Per iniziare rapidamente con questo sistema puoi seguire la Quick Start Guide inclusa nel repository. Qui ti riassumo i passaggi fondamentali in modo semplice e immediato:

  1. Installazione:
    • Assicurati che Python sia installato sul tuo computer.
    • Installa tutte le dipendenze necessarie aprendo un terminale e digitando:
      pip install -r requirements.txt
      
  2. Configurazione:
    • Apri il file config.json e inserisci le tue chiavi API personali dei fornitori LLM che utilizzerai (ad esempio OpenAI).
    • Definisci quale modello utilizzerai come “analyzer” per la valutazione (ad esempio GPT-3.5).
  3. Preparazione delle Test Suite:
    • Una test suite è un semplice file JSON in cui definisci i casi di test che userai per valutare i modelli linguistici.
    • Ogni test deve contenere:
      • test_id: un identificativo univoco per il test.
      • prompt: la domanda o richiesta da sottoporre al modello.
      • expected: la risposta attesa.
      • evaluation_type: indica come valutare la risposta del modello, ad esempio:
        • exact_match (corrispondenza esatta): ideale per domande con una sola risposta precisa.
        • contains_all (contiene tutte le parole): verifica che la risposta includa specifiche parole chiave.
        • functional_equivalence (equivalenza funzionale): adatta per valutazioni più complesse, ad esempio risposte che devono fornire lo stesso risultato ma con formulazioni diverse.
      • Eventuali evaluation_hint: indizi per guidare ulteriormente la valutazione.

    Esempio di test suite:

    {
      "test_suite_id": "mia_test_suite",
      "test_cases": [
        {
          "test_id": "test_001",
          "prompt": "Qual è la capitale dell’Italia?",
          "expected": "Roma",
          "evaluation_type": "exact_match",
          "weight": 1.0
        }
      ]
    }
    
    
  4. Esecuzione delle valutazioni:
    • Usa lo script Python fornendo il modello e la test suite che desideri valutare (Consiglio: parti con i modelli più economici):
      python llm_eval_runner.py --provider openai --model gpt-3.5-turbo --test-suite mio_test_suite.json
      
  5. Analisi dei risultati:
    • Troverai i risultati delle valutazioni nella cartella results/evaluations/ sotto forma di file JSON, che includono una sintesi accurata della performance dei modelli.

Seguendo questi semplici passi, potrai iniziare a valutare i tuoi modelli linguistici in modo preciso e personalizzato.

Ho incluso anche un piano d’azione (web_ui_plan.md) generato automaticamente da RooCode per creare una web UI per questa app. Buona fortuna!

Risultato

Avrai un report dettagliato e automatizzato delle prestazioni dei modelli, valutato con la precisione e l’adattabilità di un altro modello linguistico.

Ma avrai anche i rischi di una valutazione errata dovuta al prompt che valuta il risultato.

Insomma… ho scoperchiato un vaso di Pandora, uno dei dark side di questo mondo degli LLM.

Conclusioni

Considera questo progetto come punto di partenza: creare eval personalizzate non è banale e richiederà impegno. Inoltre, tieni presente che anche il modello-analyzer può sbagliare.

Attenzione particolare nell’uso di RooCode: l’agente generativo ha infestato il progetto con file inutili, e durante le revisioni rischia di sovrascrivere codice utile senza controllo. Ho lasciato volutamente il codice così com’è proprio per mostrare questi rischi.

Inoltre, troverai nel codice un sistema aggiuntivo di valutazione non basato su LLM. È molto complesso, ma può essere interessante per chi volesse approfondire ulteriormente.

Bonus

Prova a valutare i file JSON direttamente con ChatGPT: ne usciranno spunti davvero interessanti! Qui trovi un’analisi dei risultati

Link utili

Fammi sapere se hai creato il tuo sistema di eval, se hai incontrato problemi o trovato soluzioni innovative!

A presto! Massimiliano

PS: se questo articolo ti è piaciuto, condividilo! Scopri di più su @maxturazzini o su https://maxturazzini.com


Dietro le quinte – Roo Code

Questo è stato probabilmente il post più difficile che ho scritto.

Per facilitarmi il lavoro, ho utilizzato Roo Code, un plugin disponibile per Cursor e VS Studio, che utilizza agenti generativi per automatizzare la scrittura di codice.

Sembrava facile ma… ci sono concetti inattesi. Di seguito ti racconto cosa è Roo Code

Roo Code: il plugin AI che semplifica la programmazione (e ti dice quanto spendi)

Immagina di avere un sous-chef AI nel tuo editor di codice, che non solo ti assiste nella scrittura del codice, ma ti informa anche in tempo reale sui costi associati alle API che utilizzi. Questo è esattamente ciò che fa Roo Code, un plugin per Visual Studio Code progettato per rendere la programmazione più efficiente, riducendo la complessità della gestione del codice e del budget.

Roo Code è un agente di codifica autonomo alimentato dall’intelligenza artificiale, capace di comunicare in linguaggio naturale, leggere e scrivere file nel tuo spazio di lavoro, eseguire comandi nel terminale e automatizzare azioni nel browser. Si integra perfettamente con qualsiasi API o modello compatibile con OpenAI, offrendo strumenti avanzati per gli sviluppatori di tutti i livelli.

Ma non è solo un aiuto generico alla scrittura del codice: gestisce anche la context window, un problema enorme per chi lavora con codebase complesse. Grazie alla sua capacità di analizzare la struttura dei file, eseguire ricerche avanzate e ottimizzare il contesto, Roo Code assicura che il modello AI abbia sempre accesso alle informazioni più rilevanti, senza sovraccaricare la memoria disponibile.

La versatilità di Roo Code lo rende un assistente ideale per qualsiasi tipo di progetto software. Offre diverse modalità operative, tra cui:

  • Code Mode: per le attività di codifica quotidiane.
  • Architect Mode: per supportare la pianificazione e le decisioni tecniche di alto livello.
  • Ask Mode: per ottenere risposte rapide e dettagliate.
  • Custom Modes: per personalizzare l’AI in base alle esigenze del team, ad esempio per il QA o il product management.

Inoltre, Roo Code affronta una delle principali preoccupazioni degli sviluppatori che usano strumenti AI: quanto sto spendendo? Il plugin monitora in tempo reale i costi associati alle API utilizzate, evitando sorprese in bolletta e permettendoti di ottimizzare il budget del progetto senza sacrificare produttività e qualità.

Funzionalità principali

Ecco cosa rende Roo Code un plugin indispensabile:

  • Monitoraggio dei costi in tempo reale: Sai esattamente quanto spendi mentre lavori.
  • Gestione intelligente della context window: Ottimizza le informazioni accessibili al modello AI per ridurre il sovraccarico di contesto.
  • Integrazione con VS Code o Cursor: Legge e scrive file, esegue comandi nel terminale e interagisce con il browser.
  • Personalizzazione avanzata: Modalità customizzabili per adattarsi a ogni esigenza.
  • Utilizzo di strumenti esterni: Compatibilità con API e modelli OpenAI grazie al Model Context Protocol (MCP).

Queste caratteristiche consentono agli sviluppatori di automatizzare attività ripetitive, migliorare la qualità del codice e aumentare la produttività, senza perdere il controllo su costi e complessità.

Lo trovi qui


Se questo articolo ti è piaciuto e vuoi rimanere sempre informato sulle novità tecnologiche

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome