Cosa significa “programmatore di coppia AI” di OpenAI e GitHub per l’industria del software
OpenAI ha ancora una volta fatto notizia, questa volta con Copilot , uno strumento di programmazione basato sull’intelligenza artificiale creato congiuntamente con GitHub. Costruito sulla base di GPT-3 , il famoso modello linguistico di OpenAI, Copilot è uno strumento di completamento automatico che fornisce suggerimenti pertinenti (e talvolta lunghi) durante la scrittura del codice.
Copilot è attualmente disponibile per selezionare i candidati come estensione in Visual Studio Code, lo strumento di programmazione di punta di Microsoft, la società madre di GitHub.
Sebbene il generatore di codice basato sull’intelligenza artificiale sia ancora in fase di sviluppo, fornisce alcuni suggerimenti interessanti sul business dei modelli linguistici di grandi dimensioni e sulle direzioni future dell’industria del software.
Non è l’uso previsto per GPT-3
Il sito web ufficiale di Copilot lo descrive come un “programmatore di coppia AI” che suggerisce “intere righe o intere funzioni direttamente all’interno del tuo editor”. A volte, è sufficiente fornire una firma o una descrizione della funzione per generare un intero blocco di codice.
Dietro Copilot c’è un modello di deep learning chiamato Codex, che è fondamentalmente una versione speciale di GPT-3 ottimizzata per le attività di programmazione. Il funzionamento dello strumento è molto simile a GPT-3: richiede un prompt come input e genera una sequenza di byte come output. Qui, il prompt (o il contesto) è il file del codice sorgente su cui stai lavorando e l’output è il suggerimento del codice che ricevi.
La cosa interessante in tutto questo sono le svolte inaspettate che può prendere la gestione dei prodotti AI. Secondo CNBC : “… quando OpenAI stava per addestrare per la prima volta [GPT-3], la start-up non aveva intenzione di insegnargli come aiutare a programmare, ha detto [OpenAI CTO Greg] Brockman. Era inteso più come un modello linguistico di uso generale [enfasi mia] che potrebbe, ad esempio, generare articoli, correggere grammatiche errate e tradurre da una lingua all’altra”.
Le applicazioni linguistiche di uso generale si sono rivelate molto difficili da inchiodare . Ci sono molte complessità coinvolte quando si applica l’elaborazione del linguaggio naturale ad ambienti ampi. Gli umani tendono a usare molte astrazioni e scorciatoie nel linguaggio quotidiano. Il significato di parole, frasi e frasi può variare in base all’esperienza sensoriale condivisa, all’ambiente di lavoro, alle conoscenze pregresse, ecc. Queste sfumature sono difficili da cogliere con modelli di deep learning che sono stati addestrati per cogliere le regolarità statistiche di un set di dati molto ampio di tutto e niente.
Al contrario, i modelli linguistici funzionano bene quando vengono forniti con il contesto giusto e la loro applicazione è ristretta a una o poche attività correlate. Ad esempio, i chatbot basati sul deep learning addestrati o perfezionati su un ampio corpus di chat dei clienti possono essere un complemento decente per gli agenti del servizio clienti, assumendo la maggior parte delle semplici interazioni con i clienti e lasciando richieste complicate agli operatori umani. Esistono già molti modelli di deep learning speciali per compiti linguistici diversi.
Pertanto, non è molto sorprendente che le prime applicazioni per GPT-3 siano state qualcosa di diverso dalle attività linguistiche di uso generale.
Utilizzo di modelli linguistici per la codifica
Poco dopo che GPT-3 è stato reso disponibile tramite un’interfaccia di programmazione di applicazioni Web beta, molti utenti hanno pubblicato esempi di utilizzo del modello linguistico per generare codice sorgente. Questi esperimenti hanno mostrato un lato inesplorato di GPT-3 e un potenziale caso d’uso per il modello del grande linguaggio.
E curiosamente , le prime due applicazioni che Microsoft, il detentore della licenza esclusiva dei modelli linguistici di OpenAI , ha creato su GPT-3 sono legate alla programmazione di computer. A maggio, Microsoft ha annunciato uno strumento basato su GPT-3 che genera query per le sue Power Apps . E ora sta testando le acque con Copilot.
Le reti neurali sono molto brave a trovare e suggerire modelli da grandi set di dati di addestramento. In questa luce, ha senso utilizzare GPT-3 o una sua versione perfezionata per aiutare i programmatori a trovare soluzioni nel corpus molto ampio di codice sorgente pubblicamente disponibile in GitHub.
Secondo la homepage di Codepilot, Codex è stato addestrato su “una selezione di lingua inglese e codice sorgente da fonti pubblicamente disponibili, incluso il codice in repository pubblici su GitHub”.
Se gli fornisci il contesto giusto, sarà in grado di fornire un blocco di codice che assomiglia a quello che altri programmatori hanno scritto per risolvere un problema simile. E dargli commenti e descrizioni più dettagliati aumenterà le tue possibilità di ottenere un risultato ragionevole da Codepilot.
Generazione di codice e comprensione del software
Secondo il sito web, “GitHub Copilot cerca di capire [enfasi mia] il tuo intento e di generare il miglior codice possibile, ma il codice che suggerisce potrebbe non funzionare sempre, o addirittura avere senso”.
“Capire” potrebbe essere la parola sbagliata qui. I modelli linguistici come GPT-3 non comprendono lo scopo e la struttura del codice sorgente. Non capiscono lo scopo dei programmi. Non possono elaborare nuove idee, scomporre un problema in componenti più piccoli e progettare e costruire un’applicazione nel modo in cui fanno gli ingegneri del software umano.
Per gli standard umani, la programmazione è un compito relativamente difficile (beh, lo era quando stavo imparando negli anni ’90). Richiede un’attenta riflessione, logica e progettazione dell’architettura per risolvere un problema specifico. Ogni linguaggio ha i propri paradigmi e schemi di programmazione. Gli sviluppatori devono imparare a utilizzare diverse interfacce di programmazione delle applicazioni e collegarle insieme in modo efficiente. In breve, è un’abilità che dipende in gran parte dalla manipolazione dei simboli, un’area che non è il forte degli algoritmi di deep learning.
I creatori di Copilot riconoscono che il loro sistema di intelligenza artificiale non è in alcun modo un compagno di programmazione perfetto (non credo nemmeno che “programmazione in coppia”, sia il termine giusto per questo). “GitHub Copilot in realtà non testa il codice che suggerisce, quindi il codice potrebbe non essere nemmeno compilato o eseguito”, avvertono.
GitHub avverte inoltre che Copilot potrebbe suggerire “utilizzi vecchi o deprecati di librerie e lingue”, che possono causare problemi di sicurezza. Ciò rende estremamente importante per gli sviluppatori rivedere a fondo il codice generato dall’intelligenza artificiale.
Quindi, non siamo in una fase per aspettarci che i sistemi di intelligenza artificiale automatizzino la programmazione. Ma abbinarli a umani che sanno cosa stanno facendo può sicuramente migliorare la produttività, come suggeriscono i creatori di Copilot.
E da quando Copilot è stato rilasciato al pubblico, gli sviluppatori hanno pubblicato tutti i tipi di esempi che vanno dal divertente al davvero utile.
“Se sai qualcosa su cosa chiedi a Copilot di codificare per te e hai abbastanza esperienza per ripulire il codice e correggere gli errori che introduce, può essere molto utile e farti risparmiare tempo”, Matt Shumer, co-fondatore e CEO di OthersideAI, ha dichiarato a TechTalks.
Ma Shumer mette in guardia anche sulle minacce di fidarsi ciecamente del codice generato da Copilot.
“Ad esempio, mi ha fatto risparmiare tempo scrivendo codice SQL, ma ha inserito la password del database direttamente nel codice”, ha detto Shumer. “Se non fossi esperto, potrei accettarlo e lasciarlo nel codice, il che creerebbe problemi di sicurezza. Ma poiché sapevo come modificare il codice, sono stato in grado di utilizzare ciò che Copilot mi ha dato come punto di partenza su cui lavorare”.
Il modello di business di Copilot
Secondo me, c’è un’altra ragione per cui Microsoft ha iniziato a programmare come prima applicazione per GPT-3. C’è un’enorme opportunità per tagliare i costi e realizzare profitti.
Secondo GitHub, “Se l’anteprima tecnica avrà successo, il nostro piano è di creare una versione commerciale di GitHub Copilot in futuro”.
Non ci sono ancora informazioni su quanto costerà il Copilot ufficiale. Ma i salari orari per i talenti della programmazione partono da circa $ 30 e possono arrivare fino a $ 150. Anche risparmiare qualche ora di programmazione o dare un piccolo impulso alla velocità di sviluppo sarebbe probabilmente sufficiente per coprire i costi di Copilot. Pertanto, non sarebbe sorprendente se molti sviluppatori e società di sviluppo software si iscrivessero a Copilot una volta rilasciato come prodotto commerciale.
“Se mi restituisce anche solo il 10 percento del mio tempo, direi che ne vale la pena. Entro limiti ragionevoli, ovviamente”, ha detto Shumer.
I modelli linguistici come GPT-3 richiedono risorse estese per l’addestramento e l’esecuzione. E devono anche essere regolarmente aggiornati e perfezionati, il che impone maggiori spese all’azienda che ospita il modello di apprendimento automatico. Pertanto, domini ad alto costo come lo sviluppo di software sarebbero un buon punto di partenza per ridurre il tempo necessario per recuperare l’investimento effettuato sulla tecnologia.
“La capacità di [Copilot] di aiutarmi a utilizzare librerie e framework che non ho mai usato prima è estremamente preziosa”, ha affermato Shumer. “In una delle mie demo, ad esempio, gli ho chiesto di generare una dashboard con Streamlit e lo ha fatto perfettamente in un solo tentativo. Potrei quindi andare a modificare quella dashboard, senza bisogno di leggere alcuna documentazione. Solo questo è abbastanza prezioso da permettermi di pagarlo”.
La codifica automatizzata può rivelarsi un’industria multimiliardaria. E Microsoft si sta posizionando per assumere un ruolo di primo piano in questo settore nascente, grazie alla sua portata sul mercato (tramite Visual Studio, Azure e GitHub), tasche profonde e accesso esclusivo alla tecnologia e al talento di OpenAI.
Il futuro della codifica automatizzata
Gli sviluppatori devono stare attenti a non scambiare Copilot e altri generatori di codice basati sull’intelligenza artificiale per un compagno di programmazione di cui accetti ogni suggerimento. Come programmatore che ha lavorato con scadenze ravvicinate in diverse occasioni, so che gli sviluppatori tendono a tagliare gli angoli quando il tempo sta per scadere (l’ho fatto più di un paio di volte). E se hai uno strumento che ti fornisce una grossa fetta di codice funzionante in un colpo solo, sei incline a sfiorarlo solo se hai poco tempo.
D’altra parte, gli avversari potrebbero trovare modi per tenere traccia dei modelli di codifica vulnerabili nei generatori di codice di deep learning e trovare nuovi vettori di attacco contro il software generato dall’intelligenza artificiale.
Nuovi strumenti di codifica creano nuove abitudini (molte delle quali negative e insicure). Dobbiamo esplorare attentamente questo nuovo spazio e stare attenti ai possibili compromessi derivanti dall’avere agenti di intelligenza artificiale come nostri nuovi partner di codifica.