GPT-3 ha due nuove funzionalità: modifica e inserimento
GPT-3 possiede due nuove funzionalità: la modifica (edit) e l'inserimento (insert). Consentono rispettivamente di modificare un input in base a delle istruzioni, e di inserire contenuto ad un input in una determinata posizione. Come funzionano? Quanto sono affidabili?
GPT-3 è un modello di linguaggio che utilizza il deep learning per produrre testo simile a quello umano. Il suo acronimo significa Generative Pre-trained Transformer (di terza generazione).
Il termine "Generative" indica che si tratta di un algoritmo che genera contenuti, infatti si sono visti molti esempi di come, partendo da un input (prompt), GPT-3 sia in grado di completarlo con del testo originale. Tuttavia, esistono altre modalità di completamento, ad esempio le funzionalità di EDIT (modifica) e INSERT (inserimento). Tali nuove capacità saranno disponibili sia per GPT-3, sia per Codex.
Queste nuove funzionalità rendono pratico l'utilizzo delle API di OpenAI per delle revisioni di un contenuto esistente, ad esempio per la ri-scrittura di un paragrafo o il refactoring di un blocco di codice.
Nell'immagine che segue, è possibile vedere come le due nuove modalità sono state aggiunte al Playground di GPT-3.
La prima icona rappresenta la modalità di "Completamento" (il metodo che era già presente), la seconda di "Inserimento" e la terza di "Modifica". Le nuove funzioni sono in versione beta, e finché lo saranno l'utilizzo rimarrà gratuito.
L'obiettivo, infatti è quello di raccogliere il maggior numero possibile di feedback per il miglioramento delle funzionalità.
L'inserimento nel testo (insert)
La nuova funzionalità di inserimento permette di aggiungere del testo, mantenendo il contesto, all'interno di un contenuto esistente. Questo approccio può essere utile quando, ad esempio si utilizza GPT-3 per generare un testo di una certa lunghezza, e successivamente si decide di ampliare alcune parti.
Provare l'inserimento all'interno del Playground è davvero semplice. L'interfaccia presenta una sola area di testo all'interno della quale è possibile incollare il contenuto da elaborare. Attraverso il placeholder "[insert]", successivamente, si va ad indicare all'algoritmo deve procedere con l'inserimento.
Un esempio per l'inserimento in un testo
Nell'esempio che segue, ho inserito nell'area di testo a disposizione i primi tre paragrafi di questo post. Il testo evidenziato in verde è la parte aggiunta da GPT-3.
Come si può notare, il contenuto è allineato al contesto: non solo continua ed espande il paragrafo precedente, ma va anche ad introdurre un argomento che viene trattato successivamente.
Un esempio per l'inserimento di codice
L'INSERT è particolarmente utile per scrivere codice. Proprio per questo, l'idea di tale funzionalità deriva proprio da Codex. Nell'esempio che segue, in cui ho scritto un frammento di una semplicissima funzione PHP, vediamo come il modello va a completare in maniera perfetta la parte mancante.
La funzionalità di inserimento è disponibile via API, come parte dell'endpoint "completions" e attraverso il Playground.
La modifica del testo (edit)
La modifica funziona specificando un testo come prompt e delle istruzioni su come modificarlo. L'endpoint di "edit" può essere utilizzato, ad esempio, per modificare il tone of voice del testo o apportare modifiche mirate come la correzione dell'ortografia.
È interessante anche l'utilizzo senza specificare un input, ma solo le istruzioni. Questo, di fatto, diventa molto simile all'utilizzo di GPT-3 per azioni di completamento.
Un esempio di modifica di testo
Ho inserito come testo di input il primo paragrafo di questo post, dando le seguenti istruzioni: "Riscrivilo come fosse GPT-3 a parlare". Quello che segue è il testo rielaborato dell'algoritmo.
Ciao, sono un modello di linguaggio che utilizza il deep learning per produrre testo simile a quello umano. Il mio acronimo significa Generative Pre-trained Transformer (di terza generazione).
Alcuni esempi di modifica del codice
In questo caso vediamo un test in cui fornisco all'algoritmo delle istruzioni senza specificare un input. L'istruzione: "Scrivi una funzione PHP che restituisce la somma di due parametri al quadrato". L'output è stato il seguente.
Di certo possono esserci stili di sviluppo diversi, ma il fatto che generi la funzione correttamente è davvero sbalorditivo.
Vediamo un altro esempio, invece, in cui avviene la trasformazione da una serie di dati al JSON corrispondente. Da notare che nei dati non viene specificata un'intestazione per i valori numerici. Tuttavia, nel JSON, tutti i dati sono etichettati.
L'endpoint di modifica è particolarmente utile per scrivere codice. Funziona molto bene per attività come il refactoring, l'aggiunta di documentazione, la traduzione di istruzioni da un linguaggio di programmazione ad un altro.
Anche la funzionalità di EDIT è disponibile via API, come parte dell'endpoint "completions" e attraverso il Playground.
Conclusioni
GPT-3 e i modelli simili stanno diventando sempre più potenti, e svolgono compiti sempre più complessi.
Queste due nuove funzionalità ci presentano il modello in un'altra veste rispetto a quella alla quale siamo abituati (completamento). Il risultato non cambia ed è sbalorditivo come riesca a mantenere il contesto in fase di INSERT, ad esempio, ma anche come "comprende" le parti mancanti di un blocco di codice.
Di certo, siamo solo all'inizio, e la tecnologia e gli algoritmi sono destinati a migliorare: di questo possiamo essere certi.