Uno strumento di supporto allo sviluppo basato su AI per ottenere suggerimenti di completamento del codice in real time.
Copilot è uno strumento di supporto allo sviluppo di codice, distribuito come estensione, che si integra direttamente con i principali editor di codice (Visual Studio, Neovim, VS Code e tool della suite di JetBrains). È quindi un tool rivolto principalmente ai pro-coder come integrazione al lavoro degli sviluppatori.
L’utilizzo più immediato di Copilot è relativo all’autocompletamento del codice: scrivendo all’interno di un editor di testo, Copilot suggerisce la riga di codice successiva, confermabile semplicemente con la pressione di un TAB. È possibile però utilizzare Copilot anche per generare file interi di codice: partendo da un commento o dall’intestazione di un metodo, Copilot è in grado di dedurre e completare l’intera implementazione della funzione.
In Reply, riteniamo che Copilot rappresenti un supporto efficace per gli sviluppatori e, per questo motivo, abbiamo iniziato ad utilizzarlo durante le nostre attività di sviluppo quotidiane, approfondendone i casi d’uso e le possibilità di utilizzo. Abbiamo testato, ad esempio, l’utilizzo di Copilot allo scopo di automatizzare la scrittura di modelli di codice ripetitivi, in modo da concentrarsi solo sul codice che fornisce valore ad una soluzione. In questo modo, è possibile generare classi di accesso ai dati a partire dalla struttura di un database, esporre queste classi tramite servizi API Rest o generare automaticamente gli unit test per il proprio codice.
Grazie all’esperienza maturata nell’utilizzo di Copilot, possiamo fornire supporto ai clienti nelle fasi di installazione e configurazione dello strumento, ed aiutarli a comprendere come poterlo applicare efficacemente ai casi d’uso di loro interesse. Attualmente, è in corso una sperimentazione con un cliente in ambito manufacturing, che impiega molti team di sviluppo su vari progetti: abbiamo fornito accesso a Copilot ai membri dei vari team, introducendoli al suo utilizzo, e valutando inoltre gli impatti che ha l’utilizzo di Codex durante le normali attività di sviluppo in un ambito in cui la qualità del codice e l’efficienza dei processi di sviluppo sono rigorosamente monitorati.
Copilot non si limita a fornire suggerimenti in base a regole predefinite, ma tiene in considerazione il contesto all'interno del quale il codice è inserito, e interpreta ciò che lo sviluppatore intende ottenere. In questo modo, il codice generato rispetta lo stile e le convenzioni del team di sviluppo e si integra senza soluzione di continuità nel progetto nel quale è utilizzato.
Lo sviluppatore rimane comunque in totale controllo sul codice generato: è sempre possibile, infatti, visualizzare i suggerimenti forniti ed avere più opzioni di suggerimento tra cui scegliere, potendo confermare quella che si ritiene più adatta.
Nonostante Copilot sia uno strumento basato sul cloud, e fornito come software as a service, il codice che genera è sempre e comunque di proprietà dello sviluppatore: la licenza d'uso di Copilot non pone limitazioni alla diffusione o alla modalità di utilizzo e distribuzione del codice generato.
Il motore di funzionamento di Copilot è basato su Codex. Rilasciato dalla compagnia di ricerca sull’intelligenza artificiale OpenAI, Codex è un modello di generazione codice derivato da GPT-3, uno dei più grandi modelli di linguaggio basati sul deep learning. Mentre GPT-3 è un modello di linguaggio general purpose, Codex è stato addestrato e tarato esplicitamente per lavorare sul codice.
Recentemente, tutti i principali player nel settore dell’intelligenza artificiale hanno rilasciato o annunciato modelli di generazione del codice: per questo motivo, riteniamo che sia fondamentale avere a disposizione gli strumenti necessari per valutare l’efficacia di un modello. Analizzando le metodologie presenti in letteratura, abbiamo sviluppato un framework che consente di effettuare una valutazione formale dell’accuratezza di questi modelli applicati a differenti linguaggi di programmazione e casi d’uso.
Durante queste analisi, abbiamo rilevato che Codex fornisce ottimi risultati anche rispetto a modelli più grandi, indice di una buona ottimizzazione rispetto ai linguaggi di programmazione più utilizzati. Abbiamo inoltre sviluppato un approccio che consente di combinare la generazione del codice a criteri di validazione che verifichino la correttezza del codice generato, così da assicurare la qualità dei risultati ottenuti.