La capacità di un’intelligenza artificiale di scrivere, comprendere e migliorare codice sorgente non è solo una misura della sua potenza, ma anche della sua affidabilità e sicurezza. È in questo contesto che nasce SWE-bench, una piattaforma innovativa progettata per valutare in modo rigoroso e realistico le competenze dei modelli di linguaggio di grandi dimensioni (LLM) nel risolvere problemi concreti di sviluppo software.
SWE-bench (Software Engineering Benchmark) è un framework di valutazione che si distingue per il suo approccio pragmatico e realistico. A differenza di altri benchmark che utilizzano problemi artificiali o eccessivamente semplificati, SWE-bench attinge a veri bug e richieste di nuove funzionalità (issue) segnalati su GitHub, la più grande piattaforma di hosting per progetti software. Questi problemi provengono da repository popolari e attivamente manutenuti, scritti in linguaggio Python e basati su librerie molto note come Django, Matplotlib, scikit-learn e SymPy.
Ogni task proposto alla piattaforma include non solo la descrizione del problema, ma anche l’intero codice sorgente del progetto, la descrizione dell’issue (spesso scritta da umani per altri umani, quindi con ambiguità e dettagli impliciti) e, soprattutto, una serie di test che la soluzione proposta deve superare affinché l’issue possa essere considerata risolta. Il codice generato viene automaticamente testato: se passa i test predefiniti (gli stessi che il software originale utilizza per verificare la correzione del bug o l’implementazione della nuova funzionalità), la soluzione è considerata valida.
L’ingegneria del software è una disciplina complessa che richiede non solo la capacità di scrivere codice funzionante, ma anche di comprendere l’intero sistema, gestire interazioni tra diverse componenti e garantire la sicurezza e l’affidabilità del software. I modelli di linguaggio di grandi dimensioni, come quelli che alimentano ChatGPT o Claude, hanno mostrato notevoli capacità nel generare codice, ma spesso le loro soluzioni mancano di robustezza, sicurezza o comprensione contestuale. SWE-bench offre una valutazione rigorosa e standardizzata che permette di misurare in modo oggettivo le reali capacità di questi modelli nel contesto dell’ingegneria del software.
Le prime valutazioni effettuate con SWE-bench hanno rivelato che, sebbene i modelli di linguaggio avanzati possiedano una certa capacità di generare codice, la loro efficacia nel risolvere problemi complessi di ingegneria del software è ancora limitata. Ad esempio, il modello Claude 2, uno dei più performanti attualmente disponibili, è riuscito a risolvere solo una piccola percentuale dei problemi proposti, evidenziando le sfide e le limitazioni attuali nell’applicazione dell’IA all’ingegneria del software.
Un aspetto cruciale sollevato dall’uso dell’IA nell’ingegneria del software riguarda la sicurezza. Un codice generato o modificato da un’intelligenza artificiale, per quanto funzionale, potrebbe celare vulnerabilità inedite o ereditare debolezze dai dati di addestramento, esponendo i sistemi a rischi difficilmente prevedibili. La velocità con cui l’IA è in grado di produrre o alterare software impone quindi una capacità di validazione rigorosa, per prevenire la creazione involontaria di falle di sicurezza o, peggio, la loro introduzione deliberata tramite la manipolazione dei modelli stessi.