Codex OpenAI: cos’è e come sviluppa codice in automatico

Traduce il linguaggio naturale nel codice di un linguaggio di programmazione; le API a disposizione permettono di costruire prodotti evoluti che sfruttano i suggerimenti su come scrivere il codice: chi sviluppa scrive cosa desidera e Codex fornisce l’implementazione nel linguaggio scelto [...]
Paolo Dotti

Aton It

Codex
  1. Home
  2. Intelligenza Artificiale
  3. Codex OpenAI: cos’è e come sviluppa codice in automatico

Nato per supportare il lavoro degli sviluppatori, Codex è uno strumento che traduce il linguaggio naturale nel codice di un linguaggio di programmazione; le API a disposizione permettono di costruire prodotti evoluti che sfruttano i suggerimenti su come scrivere il codice; chi sviluppa scrive cosa desidera e Codex fornisce l’implementazione nel linguaggio scelto.

Cos’è Codex OpenAI?

Codex OpenAI, è un prodotto di OpenAI, derivato da GPT-3, il modello pre-addestrato con linguaggio naturale i cui discendenti stanno cambiando la storia dei modelli in grado di conversare come se fossero esseri umani e in alcuni contesti anche meglio.

OpenAI Codex ha lo scopo di tradurre il linguaggio naturale, costituito da semplici istruzioni in lingua inglese, nei più popolari e utilizzati linguaggi di programmazione. L’intento primario è dare un supporto agli sviluppatori per migliorarne la produttività. Come detto dalle stesse persone di OpenAI, Codex aiuta i computer a capire meglio le intenzioni degli utenti, i quali a loro volta aiutano le persone ad essere più produttive coi computer; una intelligenza artificiale con lo scopo di fornire benefici al genere umano.

Come prodotto di intelligenza artificiale e come derivato di GPT-3, Codex è stato addestrato sulla base di un dataset composto sia da testi in linguaggio naturale, sia da codici sorgenti in diversi linguaggi disponibili pubblicamente, compresi i sorgenti pubblici su GitHub. Codex è particolarmente “abile” nella produzione di codice Python tra la molteplicità di linguaggi disponibili, mentre alcuni prodotti basati sulle funzionalità disponibili tramite le API di Codex ne estendono le capacità in alcuni linguaggi di programmazione come javascript, rust.

Le capacità di Codex

Codex ha molte caratteristiche di GPT-3, fondamentali per la comprensione del linguaggio naturale, ma a differenza di questo, invece di produrre risposte in linguaggio naturale, produce codice funzionante in un linguaggio di programmazione scelto. Nell’attività di un programmatore, ci sono diverse fasi, dalla comprensione del problema alla scomposizione in componenti di un sistema per procedere alla scrittura del codice; è in questa parte del lavoro che Codex viene in aiuto con diversi suggerimenti per scrivere o migliorare il codice seguendo le istruzioni o le richieste dell’utente. Un vincolo importante è che le istruzioni devono essere fornite in lingua inglese.

GitHub Copilot

OpenAI, usando Codex come modello e motore, ha creato GitHub Copilot in partnership con GitHub, Con questo nuovo prodotto si inizia a costruire un’interfaccia in linguaggio naturale per interagire con le applicazioni esistenti. Copilot padroneggia un elevato numero di linguaggi di programmazione, interpreta dei semplici comandi in linguaggio naturale e li esegue come se fosse l’utente.

Alcune funzionalità di Codex trasferite poi in Copilot sono:

  • Tradurre commenti in codice: scrivendo un commento che descrive la logica del programma, si può ottenere un suggerimento sul codice.
  • Approcci alternativi: si possono ottenere più suggerimenti e implementazioni per uno stesso scenario, quindi accettare o modificare il codice proposto.
  • Fare i test senza fatica: Si sa quanto sia importante il test per la produzione di un software efficiente; si possono ottenere suggerimenti sui test da eseguire in base all’implementazione del codice.
  • Inserimento automatico di codice ripetitivo: parti di codice standard e codice ripetitivo possono essere automatizzati partendo da pochi esempi e il risultato rispetta lo stile di scrittura del codice del programmatore.
WHITEPAPER
Cloud pubblico: ecco la strada verso una maggiore sicurezza, scopri di più!
Cloud
ERP

Codex è il componente principale di Copilot. In modo analogo OpenAI rende disponibili le API per interagire con Codex e sviluppare, sulla base di questo motore, applicazioni in diversi contesti che sfruttino l’apprendimento, la produttività, la risoluzione di problemi.

Per una semplice dimostrazione si può vedere questo breve video

Creating a Space Game with OpenAI Codex

dove si intuisce facilmente che con le giuste istruzioni anche un non esperto può scrivere codice efficiente e funzionante; una dimostrazione di traduzione dei desideri in codice e poi in un gioco.

Invece per una dimostrazione generale di utilizzo si può vedere questo video

OpenAI Codex Api - Generate Python Code with AI

Le applicazioni di Codex

La prima applicazione è GitHub Copilot sempre di OpenAI, un aiuto programmatore dotato di intelligenza artificiale in grado di inserire intere funzioni nell’editor di codice. Molto velocemente, in modo analogo, sfruttando le API messe a disposizione da OpenAI, sono sorti altri prodotti con diversi scenari applicativi.

Pygma

Pygma lavora con HTML, CSS e React per trasformare i design fatti con Figma in codice di qualità. Pygma utilizza Codex per trasformare i prototipi realizzati con Figma in front end funzionanti secondo le preferenze di stile degli sviluppatori e nel tempo impara a produrre codice secondo lo stile di codifica proprio del team di sviluppo. Pygma è in grado di generare, icone, token, immagini ridimensionate e comporre il tutto seguendo poche istruzioni in un tempo molto più breve della codifica manuale; chi sviluppa potrebbe avere più tempo per la creatività ed essere più produttivo. Come Figma, Pygma è un servizio fruibile via web.

Replit

Replit è una piattaforma collaborativa per sviluppare in diversi linguaggi; permette lo sviluppo distribuito a più mani in tempo reale, anche da dispositivi smart senza bisogno di spazi dedicati, scrivania, monitor; basta uno smartphone connesso. Le premesse di Replit sono:

  • sviluppo rapido con ridotto tempo di setup del progetto
  • velocità nel raggiungere un prodotto finito
  • condivisione immediata e collaborazione real time a un progetto
  • possibilità di imparare sviluppando, sfruttando i suggerimenti di un assistente con intelligenza artificiale
  • possibilità di avere una spiegazione del codice, con la funzionalità “Explain Code”

Warp

Warp è un terminale con alte prestazioni scritto in Rust; il terminale è un editor di testo libero che supporta tutte le comuni operazioni di editing; comando e relativo output sono raggruppati in un unico blocco così che a livello visuale sono sempre collegati e visualizzabili insieme. L’utilizzo del terminale non è tra le attività più facili ma Warp, definito il terminale del 21° secolo, permette di fare ricerche sui comandi digitando testo in linguaggio naturale, ricevere suggerimenti, eseguire il comando ed ottenere il risultato tutto all’interno della sola finestra del terminale senza perdere il focus passando al browser per cercare e quant’altro. Tutto questo è reso possibile dall’utilizzo delle API di Codex da parte di Warp.

Machinet

Machinet è un prodotto che genera in automatico gli unit test sulla base del codice già scritto; è uno strumento costruito per gli sviluppatori Java per aiutarli nella scrittura di metodi per gli unit test. Il funzionamento è molto elementare, dopo aver attivato il plugin basta un click all’interno del codice del metodo e immediatamente viene proposto un codice per il test del metodo indicato. L’utente, come negli altri prodotti, può accettare o modificare il codice proposto. Grazie all’interfaccia con Codex, Machinet è in grado di generare codice chiaro e comprensibile, di suggerire nomi di variabili e relativi valori di input per i test in base al contesto; lo sviluppatore non deve inventare nomi di variabili o valori “dummy”, viene tutto proposto con coerenza di contesto.

codex

Conclusioni

Sembra tutto meraviglioso? C’è ancora qualche possibile inconveniente. Tutti i prodotti costruiti sulla base di Codex non sono perfetti, i loro stessi produttori raccomandano una verifica del codice proposto perché gli errori sono sempre possibili; a volte è esplicitamente dichiarato che si possono ottenere risultati senza senso. Con l’utilizzo questi strumenti si raffinano e diventano sempre più precisi, proprio per la loro natura di modelli di intelligenza artificiale; l’uso e la verifica della bontà del codice prodotto, aumentano il dataset di addestramento e la precisione dei risultati.

Codex è uno strumento potente, non permette solo di generare codice funzionante, ma consente attraverso le sue alternative e le sue estensioni, di migliorare l’architettura e il design del prodotto sviluppato. Tuttavia, Codex da solo non è in grado di sostituire la creatività umana, non è in grado di costruire e sviluppare software senza avere prima le istruzioni; il ruolo dell’essere umano è comunque necessario; infatti, viene presentato come strumento di aiuto al “developer”.

Quello che si può aggiungere è che sembra che sia stata esplorata solo la superficie di un mondo sommerso con grandi potenzialità e tante sorprese.

WHITEPAPER
La Top 5 delle minacce informatiche e come contrastarle
Sicurezza
Cybersecurity

 

FacebookTwitterLinkedIn