GitHub ha lanciato un servizio basato sull’Intelligenza artificiale che aiuterà gli sviluppatori suggerendo come completare il codice che stanno scrivendo.

La nuova intelligenza artificiale (Ai) di GitHub aiuterà nella scrittura di codice di programmazione. Lo strumento appena presentato si chiama GitHub Copilot e può suggerire agli sviluppatori da poche righe di codice a intere funzioni. GitHub ha collaborato con OpenAI per creare questo strumento che, secondo l’azienda, non dovrebbe sostituire gli sviluppatori, ma migliorare la loro produttività e facilitare l’apprendimento del codice. Come dice il nome, il pilota è ancora chi ha le mani sulla tastiera.

Il Ceo di GitHub, Nat Friedman, presentando la novità su Twitter ha scritto che l’azienda ci sta lavorando da un anno e che la funzionalità viene già usata internamente. “È un pezzo di futuro teletrasportato all’indietro nel 2021”, ha commentato in modo entusiasta.

Il modello alla base di GitHub Copilot è stato addestrato su miliardi di righe di codice, molte delle quali sono disponibili pubblicamente su GitHub stesso. Quando si scrive del codice, GitHub Copilot suggerisce come completare la stringa o la funzione durante la digitazione. Si può scorrere i suggerimenti, accettarli o rifiutarli.

Per capire cosa stai attualmente programmando, GitHub Copilot analizza il significato di un commento, il nome della funzione che stai scrivendo o le ultime due righe. Secondo GitHub può risultare molto utile anche quando si inizia a programmare con un nuovo linguaggio.

GitHub Copilot si integra direttamente con Visual Studio Code. Si può installarlo come estensione o utilizzarlo nel cloud con GitHub Codespaces. Attualmente è disponibile come anteprima tecnica, ma GitHub prevede di lanciare un prodotto commerciale basato su GitHub Copilot.

Attualmente i linguaggi di programmazione con cui funziona meglio sono Python, JavaScript, TypeScript, Ruby e Go. Nel tempo, il servizio dovrebbe migliorare in base a come si interagisce con lui, accettando o meno i suoi suggerimenti.

Github Copilot
Sito web di Github 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”.

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/ 
  3. https://www.ai4business.it/intelligenza-artificiale/copilot-lai-che-crea-stessa/#:~:text=Copilot%2C%20il%20software%20che%20sviluppa%20software,-Alex%20Naka&text=Nell’estate%202021%2C%20GitHub%2C,per%20assistere%20gli%20stessi%20sviluppatori.