Aiutare i programmatori nello sviluppo codice. È in questa direzione che OpenAI ha lavorato, recentemente, per l’evoluzione applicativa di GPT-3, (Generative Pre-trained Transformer 3), che è uno strumento capace di generare in modo automatico testi in accordo a delle richieste specifiche dell’utente.
Cos’è Codex di Open AI, per sviluppare codice in automatico
Il risultato è un sistema chiamato Codex. L’obiettivo alla base di Codex è molto semplice ed è quello di facilitare il lavoro di un programmatore o, in futuro, persino sostituirlo. L’idea è quella di poter spiegare al computer in linguaggio naturale il funzionamento di un programma che si vuole scrivere e lasciare che il computer, tramite l’AI, scriva il programma in modo autonomo al posto del programmatore.
Un semplice esempio è quello di una applicazione capace di creare sfondi per il computer sulla base delle immagini preferite di un utente. Invece di scrivere il codice dell’applicazione attraverso un linguaggio di programmazione, il programmatore può spiegare alla macchina cosa vuole che il programma faccia e Codex generare il programma.
Com’è stato addestrato Codex
Codex è stato addestrato con un enorme quantità di testo in linguaggio naturale e codice informatico, ed è in grado di lavorare con 12 diversi linguaggi di programmazione. Di fatto, Codex interpreta quanto espresso dall’umano in linguaggio naturale, creando una sua rappresentazione astratta interna che descrive il funzionamento dell’algoritmo tramite l’uso di blocchi elementari di codice. Dal punto di vista concreto, questa rappresentazione definisce il flusso logico del programma, specificando quelle che sono le variabili, i parametri e le funzioni elementari. Il passaggio successivo svolto da Codex è quello di tradurre questa rappresentazione astratta nel linguaggio di programmazione scelto.
Come funziona Codex
Questa ultima parte risulta una semplice applicazione di GPT-3. Infatti, la generazione di testo tramite GPT-3 richiede che venga definito il linguaggio in termini di regole sintattiche di composizione delle frasi.
GPT-3 non conosce propriamente il linguaggio, ma usa delle regole che definiscono quando le frasi sono ben formate. La stessa cosa può essere svolta con un linguaggio di programmazione. E’ possibile cioè definire le regole sintattiche del linguaggio di programmazione e lasciare che GPT-3 generi istruzioni che soddisfino quelle regole.
Da Eliza a Gpt-3, la lenta corsa del Natural language processing
Lo sviluppo di strumenti per la comprensione del linguaggio naturale e la generazione di testo rappresentano una delle prime sfide che la comunità scientifica di intelligenza artificiale (AI) ha accolto a partire dalla sua nascita nel 1956. lI chatbot ELIZA, creato nel 1966, è comunemente considerato il primo artefatto di AI di successo.
Nel corso degli anni, molti ricercatori accademici e aziende si sono occupati di sviluppare sistemi di elaborazione del linguaggio naturale. Attualmente, uno degli attori più attivi in tema di linguaggio naturale è OpenAI, un laboratorio privato di ricerca di San Francisco, fondato nel 2015 da Elon Musk per oltre un miliardo di dollari e rifinanziato successivamente nel 2019 da Microsoft per lo stesso ammontare. Oggi OpenAI è composta da quasi 200 scienziati che si occupano di fare ricerca in AI studiando nuove tecniche e algoritmi.
Nel 2020, OpenAI ha rilasciato GPT-3 (Generative Pre-trained Transformer 3), uno strumento capace di generare in modo automatico testi in accordo a delle richieste specifiche dell’utente, ad esempio come risposta a una domanda che gli è stata fornita. GPT-3 è capace di generare un testo che in molti casi può essere scambiato per un testo prodotto da un umano. Ad esempio, GPT-3 è stato utilizzato in un esperimento sociale nel 2020 per dialogare con migliaia di persone tramite messaggi di testo sul forum Reddit. I post pubblicati da GPT-3 hanno ricevuto centinaia di apprezzamenti (likes) da parte degli utenti, senza che nessuno capisse che si trattava di un’intelligenza artificiale. Dal punto di vista tecnico, GPT-3 sfrutta strumenti basati su reti neurali (noti in gergo tecnico con il nome di Deep Neural Networks) per elaborare una immane quantità di testi, imparare a calibrare oltre 100 miliardi di parametri, e utilizzare quanto appreso per generare un nuovo test.
Le versioni precedenti di GPT-3 prodotte da OpenAI e software simili prodotti da altri laboratori di ricerca sfruttavano un numero di parametri che era di un ordine di grandezza più piccolo. La forza di GPT-3 è stata proprio quella di incrementare in modo importante il numero di parametri.
Le applicazioni (teoriche) di Codex
Qualora Codex fosse affidabile al 100%, permetterebbe ad una azienda di software un importante risparmio di tempo. Infatti, Codex sostituirebbe non solo il lavoro di scrittura del codice ma anche di progettazione, che costituisce l’aspetto più critico del processo di sviluppo di un sistema software. La progettazione e la scrittura del codice di grandi applicazioni richiedono il lavoro di centinaia, se non migliaia, di programmatori.
A cosa serve davvero (per ora) Codex
Allo stato attuale, Codex funziona bene per applicazioni molto semplici ed elementari. La stima resa nota dai ricercatori di OpenAI è che il codice prodotto da Codex sia corretto il 37% delle volte. In molti casi però, gli errori sono minimi e facilmente correggibili da un programmatore esperto. Per quanto la presenza degli errori impedisca l’utilizzo diretto del codice prodotto da Codex, il risparmio di tempo per un programmatore può comunque essere considerevole.
Da molti anni infatti si lavora, nel campo dell’Ingegneria del Software, a strumenti automatici di generazione del software che aiutino nella progettazione. Nessuno di questi strumenti però è in grado di produrre codice in automatico per un compito richiesto da un programmatore e solo l’AI può occuparsi di questi aspetti.
Il codice di Codex può infatti risultare la base di partenza del lavoro di un programmatore, che così può anche correggere gli errori e migliorare il codice stesso.
Riduce i tempi di prototipazione e permette di arrivare più velocemente al rilascio sul mercato del sistema software.
Cosa non può fare
Codex, come tutti gli strumenti basati sulle reti neurali, è capace di apprendere dagli esempi che popolano la sua base di conoscenza, ma non è in grado di costruire in modo autonomo programmi per rispondere a obiettivi che non conosce.
Questo richiede quindi che il programmatore fornisca a Codex sempre maggiore conoscenza nel tempo per permettere a Codex di far crescere le sue capacità. Il ruolo dell’umano non verrà mai sostituito quindi, ma rimarrà in qualità di insegnante al sistema di AI.