approfondimento

Introduzione al Code Interpreter di OpenAI: quale utilità in azienda



Indirizzo copiato

Realizzato da OpenAI, è un’estensione di ChatGPT che demanda all’AI il compito di scrivere codice utile allo svolgimento di diverse attività. Una funzionalità a cui può fare ricorso anche chi non ha capacità avanzate di programmazione, ma che non sostituisce l’uomo e non è esente da criticità

Pubblicato il 29 gen 2024



Code Interpreter

ChatGPT ha contribuito a sdoganare l’uso delle AI, facendone toccare con mano a tutti le capacità reali e lasciando intuire quelle potenziali. Attorno all’AI generativa di OpenAI ruota un ecosistema di plugin ed estensioni, per lo più disponibili agli abbonati a ChatGPT Plus. Tra queste spicca il Code Interpreter di OpenAI, strumento prezioso nella scrittura e nell’esecuzione di codice.

Un aiuto prezioso per programmatori e professionisti in genere, che può essere impiegato in diversi linguaggi di programmazione e adatto in molti ambiti di applicazione. Code Interpreter di OpenAI è progettato per fornire risposte più accurate soprattutto in materia di calcoli e analisi dei dati.

Il funzionamento del Code Interpreter

Il Code Interpreter si basa su un interprete Python all’interno di un ambiente sandbox posto dietro firewall e dotato di uno spazio disco utilizzabile per tutta la durata della sessione. Permette l’upload di file e la sovrapposizione delle interrogazioni, affinché i risultati restituiti siano più centrati e approfonditi.

Nello specifico, quando viene interrogato, il Code Interpreter scrive ed esegue una porzione di codice informatico utile a trovare la risposta.

Un cambiamento di paradigma sostanziale: chiedendo il risultato di un calcolo (per esempio, il risultato di 25 al quadrato) ChatGPT cerca la risposta tra i dati con cui è stata addestrata o tra le precedenti interazioni con altri utenti mentre, nel caso del Code Interpreter, viene scritto ed eseguito il codice utile a identificare la risposta esatta.

Per quanto sia una definizione stentata e grossolana, si può dire che il Code Interpreter di OpenAI traduce il mondo in codice informatico.

Code Interpreter

L’innovazione dell’esecuzione di codice AI-assistita

È un tema enorme che non può essere letto soltanto in modo esegetico, soprattutto perché risponde a bisogni ben più essenziali e insoddisfatti.

Le soluzioni di assistenza alla scrittura di codice sono molteplici e, se è vero che sono ingegnerizzate per aiutare gli sviluppatori a lavorare meglio (e più in fretta) è anche vero che suppliscono alle difficoltà delle aziende nel trovare personale altamente qualificato. Il codice, soprattutto oggi, espone il fianco a diverse criticità, soprattutto quando si parla di applicazioni raggiungibili via web o usufruibili in Cloud. È in corso una trasformazione totale che può essere supportata soltanto con altre trasformazioni sostanziali. Infatti, l’esecuzione di codice AI-assistita può:

  • ridurre la complessità delle applicazioni (e con essa i rischi a cui queste prestano il fianco)
  • fornire codice di qualità che necessita meno manutenzione
  • eseguire test pre-produttivi
  • trovare e risolvere bug
  • facilitare la stesura di analisi e procedure
  • ridurre i costi di sviluppo e di manutenzione del software
  • facilitare la crescita professionale dei programmatori.

Tuttavia, come vedremo, le criticità non sono del tutto assenti, ed è un altro tema di spessore perché, con l’aumentare della facilità d’uso delle tecnologie, aumenta anche la complessità dei problemi che possono insorgere (e delle soluzioni da applicare).

Come il Code Interpreter trasforma le query in codice

Usa dei Large Language Model (LLM) addestrati alla scrittura e all’esecuzione di codice integrandoli con Python per rispondere alle richieste degli utenti.

Usa modelli RLHF (Reinforcement learning) che vengono addestrati in modo preliminare usando ampi corpus di testo e usando diversi linguaggi di programmazione. Il pre-addestramento è fondamentale per allineare le query alle risposte restituite, la cui qualità aumenta con l’uso e con le interazioni con gli utenti.

Non bisogna però credere che il Code Interpreter comprenda il codice così come farebbe un operatore umano, si limita a identificare modelli e strutture tra i dati mediante i quali è stato addestrato. Genera codice partendo dal linguaggio naturale ed è questa facoltà che lo rende utilizzabile anche da utenti che hanno poche o limitate nozioni di scripting o di programmazione.

Code Interpreter

Applicazioni pratiche del Code Interpreter

Le applicazioni sono molteplici, proprio perché il Code Interpreter è flessibile ed è in grado di gestire più linguaggi di programmazione e più formati di file.

Tra gli usi più immediati figurano:

  • la soluzione di problemi matematici, possibilità appannaggio di chiunque sia confrontato con cifre e numeri non solo nella propria sfera professionale
  • l’analisi dei dati nel senso più ampio: dall’individuazione di relazioni fino alla visualizzazione.
  • l’automazione di alcuni compiti di codifica.

Queste tre peculiarità sono in realtà dei passepartout, considerando che si declinano a qualsivoglia settore o attività in cui l’analisi dei dati ha un peso specifico.

Più che concentrarsi su un elenco delle applicazioni pratiche di Code Interpreter, appare sensato elencare ciò con cui ha dimestichezza. Le sue capacità si snodano attraverso la lettura di file tipicamente di testo (txt, doc, docx, pdf, …) ma anche audio e video (jpeg, png, mp4, avi, …) e, non da ultimo, di interfacciarsi con file dati quali csv, json, db e SQLite. Non di meno, si destreggia con i formati cpp, html, py, eccetera.

A tutto ciò va aggiunto che il Code Interpreter può fare ricorso a oltre 300 pacchetti (package) Python, arrivando così a coprire una variegata facoltà di impiego.

Analisi dei dati finanziari con precisione

L’analisi dei dati finanziari è disciplina adiacente alla matematica e alle sue declinazioni in campo statistico. Il Code Interpreter offre strumenti di analisi che, nel caso specifico, sono adatti a esaminare le quotazioni dei titoli azionari. I dataset sono ovviamente fondamentali: dati di qualità consentono analisi e previsioni attendibili. La medesima logica si adatta ad altri tipi di analisi, per esempio quelle relative al comportamento dei consumatori o, più in generale, le tendenze di un mercato.

Tutto ciò è facilitato dall’uso di librerie Python come Pandas o Matplotlib, utili anche alla visualizzazione dei dati.

Visualizzazione dei dati e creazione di grafici

La visualizzazione dei dati è da intendere come un linguaggio universale facilmente comprensibile a qualsiasi livello aziendale. Il Code Interpreter può avvalersi di diversi formati di file dati e, dopo un’analisi dei medesimi, proporre delle visualizzazioni che possono essere perfezionate indicando quali parametri o valori mettere in evidenza a discapito di altri.

L’aspetto delle visualizzazioni restituisce una chiara immagine anche dei limiti del Code Interpreter: in assenza di ordini chiari (e quindi in assenza di una conoscenza della materia) non riesce a dare il meglio di sé.

Il Code Interpreter e il linguaggio Python

Come detto sopra, il Code Interpreter consente il dialogo con l’interprete Python in un ambiente sandbox, ossia uno spazio virtuale isolato dal resto di un sistema tipicamente usato per testare ed eseguire applicazioni, file e software senza apportare danni al sistema stesso.

How to use ChatGPT's new “Code Interpreter” feature

Per essere didascalici, va evidenziato che il Code Interpreter di ChatGPT supporta ufficialmente soltanto il Python ma ci sono versioni Open source mediante le quali è possibile fare in modo che Code Interpreter gestisca altri linguaggi di programmazione.

Esempi di scripting Python con il Code Interpreter

Supponiamo di volere usare delle immagini per ottenere un video che le proponga in sequenza, si può usare il Code Interpreter e chiedere espressamente di “converti in video mp4 le immagini jpg salvate nella cartella Imago”.

def immagini_in_video(Imago, nome_video_output, fps):

immagini = [img for img in os.listdir(cartella_immagini) if img.endswith(“.jpg”)]

immagini.sort()

frame = cv2.imread(os.path.join(Imago, immagini[0]))

altezza, larghezza, _ = frame.shape

video = cv2.VideoWriter(nome_video_output, cv2.VideoWriter_fourcc(*”mp4v”), fps, (larghezza, altezza))

for img in immagini:

frame = cv2.imread(os.path.join(Imagoi, img))

video.write(frame)

cv2.destroyAllWindows()

video.release()

Si possono passare ulteriori parametri raffinando la scrittura e l’esecuzione dello script, per esempio indicando il formato e il nome del video, la larghezza e l’altezza in pixel e i frame per second.

Allo stesso modo è possibile, per esempio, calcolare l’ammortamento mensile di un credito di 100.000 euro ripagabile in 5 anni al tasso di interesse del 5% annuo:

Certamente, ecco un esempio di codice Python per calcolare l’ammortamento di un prestito:

def calcola_ammortamento(prestito, tasso_interesse_annuo, anni):

tasso_interesse_mensile = tasso_interesse_annuo / 12 / 100

numero_rate = anni * 12

rata_mensile = (prestito * tasso_interesse_mensile) / (1 – math.pow(1 + tasso_interesse_mensile, -numero_rate))

ammortamento = []

saldo_residuo = prestito

for _ in range(numero_rate):

interessi_mensili = saldo_residuo * tasso_interesse_mensile

capitale_rata = rata_mensile – interessi_mensili

saldo_residuo -= capitale_rata

ammortamento.append({

‘Rata Mensile’: round(rata_mensile, 2),

‘Interessi Mensili’: round(interessi_mensili, 2),

‘Capitale Rata’: round(capitale_rata, 2),

‘Saldo Residuo’: round(saldo_residuo, 2)

})

return ammortamento

Anche in questo caso, modificando le variabili “prestito”, “tasso di interesse annuo” e “anni”, si possono variare e raffinare le operazioni che il codice dovrà eseguire.

Come personalizzare il Code Interpreter per progetti specifici

È un tema ostico che, in qualche modo, divide gli esperti. Tutto ruota attorno all’ambiente sandbox che, essendo preconfigurato, lascia poco spazio all’installazione di librerie al di là di quelle a cui fornisce accesso.

Tuttavia, facendo leva su alcuni accorgimenti Open source, è possibile eseguire codice Python in un ambiente del tutto simile a quello del Code Interpreter di ChatGPT.

La personalizzazione è appannaggio di chi ha una conoscenza approfondita dei modelli di linguaggio e delle dinamiche dell’apprendimento automatico.

Rischi e limitazioni del Code Interpreter

Ogni risorsa di Intelligenza artificiale generativa specifica in modo chiaro che può commettere errori. Ciò significa, in modo persino sbrigativo, che chi ne fa uso si espone a un pericolo difficilmente ponderabile.

Affermazione che apre una prospettiva lapalissiana, perché il Code Interpreter non ha la medesima conoscenza del codice di un operatore umano, ne consegue che quest’ultimo non è sostituibile e, benché il suo lavoro ne goda in efficacia e velocità, gli spettano compiti di controllo e verifica.

Questi due brevi antefatti consentono di circoscrivere rischi e limiti, ossia:

  • errori: muovendosi nel mondo del calcolo probabilistico, con l’aumentare della complessità del compito che il codice deve assolvere, aumenta la probabilità che questo il codice stesso sia imperfetto
  • precisione: laddove il Code Interpreter è chiamato a essere particolarmente minuzioso (si pensi all’analisi finanziaria) occorre prendere in considerazione l’ipotesi che può non essere preciso come un software specifico del settore in cui ci si muove
  • interpretazione: la contestualizzazione del Code Interpreter è limitata e non comprende appieno ciò che sta facendo, al contrario di un operatore umano.

Il Code Interpreter è un valido aiuto ma non può sostituire né l’uomo né software specifici.

L’importanza del giudizio umano nell’interpretazione dei risultati

L’interpretazione dell’uomo è capitale e non può essere in alcun modo messa in discussione. Le AI generative sono la parte più spendibile e visibile dell’immenso lavoro svolto nel campo delle Intelligenze artificiali.

In nessun settore le AI sono lasciate a loro stesse, si pensi tipicamente alla sanità laddove le diagnosi sono vieppiù lasciate alle capacità delle Intelligenze artificiali ma vengono validate dall’uomo.

Più è rilevante l’ambiente in cui vengono usate le AI e più i risultati a cui queste giungono sono vitali, maggiore sarà la necessità della supervisione dell’uomo con le sue capacità e il suo bagaglio di esperienze.

Articoli correlati