← Ultimi articoli
🤖 AI

Specification and Detection of LLM Code Smells

Questo articolo introduce il concetto di "LLM code smells" formalizzando cinque ricorrenti pratiche di codifica problematiche per l'inferenza di LLM, estende lo strumento SpecDetect4AI per rilevarle e dimostra, attraverso uno studio su 200 sistemi open-source, che tali smell interessano oltre il 60% di tali sistemi con un'elevata precisione di rilevamento.

Autori originali: Brahim Mahmoudi, Zacharie Chenail-Larcher, Naouel Moha, Quentin Stiévenart, Florent Avellaneda

Pubblicato 2026-07-10
📖 5 min di lettura🧠 Approfondimento

Autori originali: Brahim Mahmoudi, Zacharie Chenail-Larcher, Naouel Moha, Quentin Stiévenart, Florent Avellaneda

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Immagina di aver appena costruito un assistente robotico super intelligente (un Large Language Model, o LLM) e di averlo invitato a vivere all'interno del tuo software. È come assumere un mago geniale per aiutarmi a lanciare incantesimi nel mio codice. Ma ecco la cattiva notizia: se non dai al mago regole chiare, una mano ferma e una mappa, le cose possono diventare disordinate. Il robot potrebbe confondersi, esaurire la magia o iniziare a urlare nonsense.

Questo articolo è come una guida per investigatori per individuare le "cattive abitudini" che gli sviluppatori prendono accidentalmente quando invitano questi maghi nel loro codice. Gli autori, Brahim, Zacharie, Naouel, Quentin e Florent, si sono resi conto che, sebbene tutti sappiano scrivere codice, nessuno aveva ancora scritto una lista formale dei problemi specifici (quei "bad smells" o cattivi odori — quelle sottili cattive abitudini che non causano un crash immediato ma rendono il software malato in seguito) che accadono specificamente quando si usano gli LLM.

Le Cinque "Cattive Abitudini" (Gli Odori)

Il team ha scavato tra articoli di ricerca, blog tecnologici e codice del mondo reale per trovare cinque problemi ricorrenti. Pensali come ai "Top 5 Modi per Rovinare il Lavoro del tuo Mago":

  1. L'odore dell' "Budget Infinito" (Unbounded Max Metrics): Immagina di dire al tuo mago: "Vai a scrivere una storia, ma non fermarti finché non finisci la carta o il tempo". Nel mondo reale, le API hanno dei limiti. Se non stabilisci un limite su quante parole (token) il mago può sputare fuori, o su quanto tempo può pensare (timeout), potresti ottenere una storia a metà, o peggio, il tuo computer potrebbe rimanere bloccato ad aspettare per sempre mentre paghi una fortuna. La soluzione? Stabilisci sempre un arresto netto sulla lunghezza e sul tempo.
  2. L'odore dell "Obiettivo Mobile" (No Model Version Pinning): Immagina che il tuo mago si chiami "GPT-4". Ma cosa succederebbe se l'azienda dietro al mago scambiasse segretamente il cervello all'interno del corpo "GPT-4" con uno diverso domani? Se non vincoli il tuo codice a una versione specifica (come "GPT-4 del 20 novembre 2024"), il tuo software potrebbe funzionare oggi e comportarsi in modo totalmente strano domani perché il mago è cambiato. La soluzione? Blocca il mago a una versione specifica e immutabile.
  3. L'odore del "Nessun Capo" (No System Message): Immagina di mandare il tuo mago in una stanza senza dirgli chi è o quali sono le regole. Potrebbe comportarsi come un comico quando volevi un insegnante, o come un poeta quando volevi un programmatore. Senza un "Messaggio di Sistema" per impostare il tono e il ruolo, i risultati sono imprevedibili e difficili da controllare. La soluzione? Dai sempre al mago una descrizione chiara del suo lavoro prima che inizi a lavorare.
  4. L'odore della "Scrivania Disordinata" (No Structured Output): Immagina di chiedere al tuo mago una lista di ingredienti, ma lui ti consegna un paragrafo di testo sconclusionato invece di una lista ordinata. Se il tuo software si aspetta una lista ordinata (come un JSON) per fare il suo lavoro, andrà in crash cercando di leggere quel disordine. La soluzione? Forza il mago a scrivere in un formato rigoroso, come una checklist, in modo che il tuo software possa leggerlo facilmente.
  5. L'odore delle "Montagne Russe" (Temperature Not Explicitly Set): Immagina il "dial della creatività" del tuo mago. Se non lo imposti, il mago potrebbe essere super serio un giorno e totalmente caotico il giorno dopo, a seconda di quale sia l'impostazione predefinita. Questo rende il tuo software inaffidabile perché la stessa domanda ottiene una risposta diversa ogni volta. La soluzione? Ruota sempre la manopola su un numero specifico in modo che il mago si comporti sempre nello stesso modo.

Cosa Hanno Trovato (Le Prove)

Per vedere quanto fossero comuni queste cattive abitudini, il team ha costruito uno strumento speciale chiamato SpecDetect4LLM. Immaginalo come un correttore ortografico che cerca solo questi cinque specifici errori legati ai maghi. Hanno eseguito questo strumento su 200 diversi progetti di software open-source che utilizzano LLM.

Ecco la grande rivelazione: il 60,50% di quei 200 progetti presentava almeno una di queste cattive abitudini. È più della metà!

Lo strumento è stato piuttosto bravo a individuare i problemi reali, con una precisione dell'86,06%. Ciò significa che quando lo strumento diceva: "Ehi, hai una cattiva abitudine qui", ci azzeccava 86 volte su 100.

Hanno anche analizzato quanto spesso appariva ogni "odore":

  • No Structured Output (NSO): Il più comune, trovato nel 40,50% dei sistemi.
  • Unbounded Max Metrics (UMM): Trovato nel 38,00% dei sistemi.
  • No Model Version Pinning (NMVP): Trovato nel 36,00% dei sistemi.
  • LLM Temperature Not Explicitly Set (TNES): Trovato nel 36,50% dei sistemi.
  • No System Message (NSM): Trovato nel 34,50% dei sistemi.

Cosa Non Sanno (I Limiti)

È importante notare cosa questo articolo non ha fatto. Gli autori non hanno cercato di contare quanti cattivi odori hanno mancato (non hanno misurato la "recall"). Hanno solo controllato quanto fosse accurato il loro strumento quando trovava qualcosa. Inoltre, il loro strumento analizza il codice presente sulla pagina (analisi statica), quindi non può vedere cosa succede quando il codice è effettivamente in esecuzione e sta parlando con il mago in tempo reale. Suggeriscono che il lavoro futuro potrebbe osservare questi effetti durante l'esecuzione, ma per ora, hanno misurato solo il codice così come risiede nei file.

La Conclusione

Il punto principale non è che questi sistemi siano irrimediabilmente rovinati. È che gli sviluppatori spesso trattano questi potenti strumenti di IA come scatole magiche senza leggere il manuale di istruzioni. Definendo questi cinque "odori" e costruendo uno strumento per trovarli, gli autori stanno fornendo agli sviluppatori una checklist per rendere il loro software integrato con l'IA più affidabile, meno costoso da gestire e più facile da riparare in seguito. Non stanno dicendo di aver risolto l'intero problema della sicurezza dell'IA, ma hanno sicuramente trovato i primi cinque dossi sulla strada e hanno messo dei cartelli in modo che tutti gli altri possano evitarli.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →