Connessioni sintetiche

AI Code Assistant, cosa sono e quanto sono sicuri

Un’AI che aiuta gli sviluppatori a scrivere codice, permette di generare software di migliore qualità? Uno studio sistematico pubblicato dalla Stanford University ha provato a rispondere a questa domanda, sottoponendo cinque problemi di programmazione a 47 sviluppatori, che hanno provato a risolverli usando tre differenti linguaggi di programmazione, con e senza il supporto dell’AI. I risultati offrono spunti molto interessanti

Pubblicato il 16 Gen 2023

Veloce. Questo sembra essere l’aggettivo migliore per descrivere lo sviluppo delle abilità delle AI generative a risolvere problemi emulando le capacità umane di pensiero, di espressione e di logica. Ma è appunto un’emulazione, che si porta dietro un bagaglio di vantaggi e limiti ancora in corso di esplorazione. L’assistenza al coding è una delle applicazioni più esplorate negli ultimi mesi, con risultati controversi che dividono la platea degli sviluppatori. L’AI Code Assistant è uno strumento utilizzato dagli sviluppatori per creare componenti software senza scrivere direttamente il codice, semplicemente descrivendone nel dettaglio la funzionalità a un’AI. In altre parole, basta scrivere qualcosa come “scrivimi una funzione in Python che calcola il minimo comune multiplo tra due numeri” per ottenere il relativo codice funzionante, pronto per essere eseguito.

Con l’assistenza dell’intelligenza artificiale, anche chi ha conoscenze di base della programmazione può essere in grado di scrivere semplici software con funzionalità basilari. E per gli sviluppatori esperti il supporto di un’AI può significare un incremento della produttività.

Ma la qualità del codice scritto dall’AI è sufficiente? Gli sviluppatori che si fanno assistere da un modello di intelligenza artificiale scrivono codice migliore o peggiore? Ci sono rischi di sicurezza correlati con il supporto degli AI Code Assistant? Uno studio sistematico pubblicato dalla Stanford University ha provato a rispondere a queste domande, sottoponendo cinque problemi di programmazione a 47 sviluppatori, che hanno provato a risolverli usando tre differenti linguaggi di programmazione, con e senza il supporto dell’AI.

Assistenza al coding, lo studio della Stanford University

AI Code Assistant

Per studiare l’impatto degli assistenti al coding, i ricercatori hanno utilizzato un modello chiamato code-davinci-002, derivato dall’ormai noto GPT-3, che è alla base di ChatGPT. Questa AI è stata addestrata con miliardi di linee di codice, proveniente da progetti Open Source pubblicati su GitHub. L’AI ha imparato a generare codice nella maggior parte dei linguaggi di sviluppo a oggi in uso.

Il modello è in grado di tradurre il linguaggio naturale in codice, e riesce anche a completare codice parzialmente scritto. Inoltre, con lo stesso modello è possibile fare l’operazione opposta, vale a dire generare una spiegazione in linguaggio naturale del funzionamento di una porzione di codice.

I 47 sviluppatori implicati nello studio hanno dovuto risolvere problemi brevi, ma potenzialmente a rischio dal punto di vista della sicurezza.  È stato chiesto loro di scrivere codice per funzioni di crittografia e di gestione dati, che sono soggetti a vulnerabilità molto comuni. Alcuni tra i partecipanti sono stati coadiuvati nella fase di sviluppo da un AI Code Assistant.

Tutte le funzioni scritte durante lo studio sono state analizzate dagli autori dello studio, che le hanno classificate come “Sicure”, “Parzialmente Sicure” o “Insicure”. Ma il risultato non è la sola cosa che conta: il processo assistito dall’intelligenza artificiale è diverso dal normale processo di sviluppo. Per questa ragione, alcuni autori hanno analizzato le registrazioni dello schermo dei partecipanti per comprendere in quali fasi lo sviluppatore interpellava l’AI e come il prompt (il testo scritto all’AI per spiegare il compito da svolgere) avesse influenzato la qualità del risultato finale.

I risultati dello studio: più vulnerabilità con il Code Assistant

Lo studio ha svelato una casistica del tutto particolare legata all’uso di assistenti AI-powered per completare assegnazioni complesse. In media, i partecipanti coadiuvati dall’intelligenza artificiale hanno scritto codice di minore qualità, contenente vulnerabilità di sicurezza anche gravi, relative ai sistemi di crittografia e al controllo dei dati inseriti dagli utenti.

Gli sviluppatori supportati dall’AI, inoltre, si sono dimostrati più propensi a credere di aver scritto codice più sicuro rispetto ai colleghi che facevano affidamento solo sulle proprie capacità. Oltre a ciò, tra gli utilizzatori dell’AI Assistant sono state individuate due differenti categorie: gli utenti più attenti a confezionare un prompt adeguato e a regolare il modello, hanno scritto codice migliore rispetto agli utenti che tendevano a fidarsi del risultato standard proposto dall’AI alle prime interazioni.

I commenti dei partecipanti hanno fornito anche altre indicazioni preziose. È emersa una interessante relazione inversa tra la qualità del codice generato e il livello di fiducia nell’assistente AI-powered. Sembra, inoltre, che gli sviluppatori meno esperti tendano ad affidare la responsabilità della sicurezza del codice all’abilità dell’AI, piuttosto che a una serie di test specifici che riguardano le vulnerabilità di sicurezza.

L’AI come supporto operativo

AI Code Assistant

I ricercatori di Stanford sono riusciti a tracciare un quadro dettagliato delle problematiche degli AI Assistant, così come di alcune possibili soluzioni che ne mitigano l’impatto negativo. Per ottenere un risultato di qualità, il prompt, ossia il testo con cui si impartiscono i comandi all’AI, riveste un ruolo chiave. L’efficacia dei modelli di assistenza risulta massimizzata quando l’utilizzatore effettua modifiche mirate e informate al prompt e alla configurazione del modello per affinare il risultato.

Le questioni poste dai ricercatori vanno oltre il mondo dello sviluppo software. Questa applicazione specifica fa sorgere molte domande relative all’assistenza dell’AI nel generare contenuti di ogni tipo. Questi contenuti saranno sicuri? Conterranno bias di qualche tipo che potrebbero potenzialmente danneggiare i fruitori? Le tecnologie AI-Powered sostituiranno l’uomo nei compiti di routine per consentirgli di applicarsi ad attività più elevate o lo abitueranno ad accettare passivamente la mediocrità?

È difficile, allo stato di cose attuale, dare una risposta definitiva a queste domande, ma di certo possiamo concludere senza remore di smentita che l’AI può essere un valido supporto per velocizzare operazioni anche complesse. Ma il suo output non è un risultato di cui fidarsi ciecamente: le risposte rapide e coerenti dell’AI possono dare un falso senso di sicurezza agli utenti meno esperti.

Conclusioni

Nel futuro, gli ingegneri che progettano questi modelli dovranno tenere conto non solo della qualità dell’output, ma anche del modo in cui gli utenti interagiscono con il modello. Se il giusto tuning dei parametri è un aspetto così importante per il risultato, l’utente dev’essere informato del loro significato, e l’interfaccia grafica deve essere pensata per massimizzare la semplicità di comprensione dell’impatto di ogni impostazione sul risultato cercato.

La prossima generazione di modelli generativi dovrà probabilmente prevedere degli strumenti di miglioramento e manipolazione del prompt, con l’obiettivo di ottimizzare le prestazioni complessive. Quelli che oggi sono parametri forniti a priori potrebbero diventare parte integrante del processo di “comunicazione” con l’AI, fattore che aiuterebbe l’utente a rivedere e riformulare le sue richieste in modo più coerente.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati