Copilot, l’AI che crea sé stessa

Sviluppato da GitHub, azienda di Microsoft, il software utilizza l’intelligenza artificiale per assistere gli stessi sviluppatori nella scrittura di codici. Un programma che permette sia di risparmiare tempo, sia di operare come “discriminatore” del codice, con l’obiettivo di captare i bias da cui è affetta l’intelligenza artificiale.

Pubblicato il 22 Set 2021

Luigi Mischitelli

Legal & Data Protection Specialist - Fondazione IRCCS Casa Sollievo della Sofferenza.

Da GitHub Copilot a GitHub Copilot X: come funzionano i software che aiutano a sviluppare software

L’intelligenza artificiale sta segnando un altro traguardo nel suo inarrestabile sviluppo: sviluppatori di software di GitHub stanno “lasciando” che l’AI aiuti a codificare per loro in autonomia. Il nuovo software si chiama Copilot e sta offrendo risvolti interessanti, facendo scoprire che l’intelligenza artificiale ha gli stessi difetti degli esseri umani…

Copilot, il software che sviluppa software

Alex Naka

Nell’estate 2021, GitHub, azienda di Microsoft che aiuta gli sviluppatori a gestire e archiviare i loro codici, ha rilasciato una versione di un programma che utilizza l’intelligenza artificiale per assistere gli stessi sviluppatori. Il professionista digita, ad esempio, una query di comando e il programma Copilot indovina l’intento del programmatore, scrivendo il resto. Secondo il data scientist Alex Naka, di Berkeley (California), tale programma può essere molto utile, perché da un lato permette di lavorare risparmiando molto tempo; dall’altro permette di operare come “discriminatore” del codice, spesso con l’obiettivo di captare i vari bias (pregiudizi) da cui è affetta l’intelligenza artificiale. Naka ha infatti scoperto che gli errori possono insinuarsi nel codice in modi diversi, alcuni persino differenti da quelli “che farebbe l’uomo”. E i rischi di avere un’intelligenza artificiale che generi un codice difettoso possono essere sorprendentemente alti.

I ricercatori della New York University hanno recentemente[1] analizzato il codice generato da Copilot e hanno scoperto che, per alcuni compiti in cui la sicurezza è fondamentale, il codice contiene “difetti di sicurezza” per il 40 percento circa delle volte. E il modo in cui Copilot è stato addestrato non è quello di scrivere un “buon codice”, ma solo di produrre il tipo di testo che avrebbe seguito una data richiesta. Nonostante questi difetti, Copilot si pone come un cambiamento nel modo in cui gli sviluppatori di software programmano. C’è un crescente interesse nell’utilizzo dell’intelligenza artificiale che aiuti nell’automatizzare il lavoro più semplice o routinario. Copilot, d’altronde, evidenzia anche alcune delle insidie tipiche che colpiscono l’intelligenza artificiale. Per GitHub però, la percentuale di codice difettoso citata dai ricercatori della New York University è rilevante solo per un sottoinsieme di codice dove i difetti di sicurezza sono più probabili, e non altrove.

Copilot

Come è fatto il programma di GitHub

Il programma di GitHub è costruito su un modello di intelligenza artificiale sviluppato da OpenAI, importante azienda che opera nel campo del machine learning, a cui si deve l’ormai celebre GPT-3. Il modello, chiamato Codex, consiste in una grande rete neurale artificiale addestrata per prevedere i “prossimi” caratteri sia nel testo che nel codice delle macchine. L’algoritmo dell’organizzazione (OpenAI) fondata dal magnate Elon Musk ha captato miliardi di linee di codice memorizzate su GitHub per imparare a codificare.

Un’altra versione dello stesso programma OpenAI, GPT-3, può generare un testo “coerente” su un dato argomento, ben potendo d’altro canto rigettare un linguaggio offensivo o inappropriato appreso negli angoli più oscuri del web.

Copilot e Codex hanno portato alcuni sviluppatori a chiedersi se l’intelligenza artificiale possa automatizzare realmente il loro lavoro. In realtà, come dimostra l’esperienza di Alex Naka, gli sviluppatori hanno bisogno di una notevole abilità per utilizzare tali programmi, in quanto spesso e volentieri devono verificare o modificare i loro suggerimenti (che ben possono rivelarsi sbagliati). Un ricercatore della New York University coinvolto nell’analisi del codice di Copilot ha affermato che il programma a volte produce un codice “problematico” perché non comprende pienamente ciò che un pezzo di codice sta cercando di fare. Manca, in poche parole, il contesto che lo sviluppatore deve conoscere. Alcuni sviluppatori si preoccupano che l’intelligenza artificiale stia già prendendo “cattive abitudini”. Potrebbe, infatti, essere possibile per i cyber-criminali di “incasinare” un programma come Copilot. In quest’ottica, sarebbe possibile creare progetti di codice vulnerabile su GitHub, aumentare artificialmente la loro popolarità e sperare che diventino parte del “corpus” di GitHub stesso.

Tuttavia, sia da GitHub che da OpenAI, vi sono affermazioni contrarie; essi dichiarano, infatti, che i loro strumenti di codifica possono diventare, col tempo, meno inclini all’errore. OpenAI afferma di controllare ogni suo progetto e codice sia manualmente che mediante strumenti automatici. Mentre GitHub afferma che i recenti aggiornamenti di Copilot dovrebbero aver ridotto la frequenza delle vulnerabilità di sicurezza, pur aggiungendo che il suo team continua a esplorare altri modi per migliorare Copilot. Uno tra questi sarebbe quello di rimuovere i “cattivi esempi” da cui il modello di intelligenza artificiale sottostante “impara”.

Introduzione a GitHub Copilot

Introduzione a GitHub Copilot

Guarda questo video su YouTube

Video “Introduzione a GitHub Copilot” di Emanuele Bartolesi

Conclusioni

Un altro modo potrebbe essere quello di utilizzare l’apprendimento di rinforzo (reinforcement learning), che addestra di modelli di apprendimento automatico (machine learning) per prendere una sequenza di decisioni, per individuare automaticamente “l’output cattivo”. Vedremo nei prossimi mesi quali saranno gli sviluppi in questo particolare settore. [2]

Note

  1. An Empirical Cybersecurity Evaluation of GitHub Copilot’s Code Contributions. https://arxiv.org/pdf/2108.09293.pdf
  2. AI Can Write Code Like Humans—Bugs and All. Wired. https://www.wired.com/story/ai-write-code-like-humans-bugs/

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 2