Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

ChatGPT: generare codice e comandi da Terminale

Utilizzare ChatGPT da Terminale con Shell GPT e le API di OpenAI per creare codice, cercare comandi ed eseguirli
Utilizzare ChatGPT da Terminale con Shell GPT e le API di OpenAI per creare codice, cercare comandi ed eseguirli
Link copiato negli appunti

Nella lezione precedente abbiamo seguito tutta la procedura necessaria per integrare ChatGPT nel Terminale della nostra distribuzione Linux. Grazie a Python, alla libreria Shell GPT e alle API di OpenAI possiamo infatti interrogare il modello generativo GPT tramite la linea di comando. Scopriamo quindi quali aspetti del nostro lavoro possono essere facilitati grazie a questo nuovo strumento.

Gestire i parametri di input

La versione standard di ChatGPT presenta un semplice modulo nel quale digitare la propria richiesta. Nel caso della nostra integrazione sul Terminale abbiamo invece la possibilità di utilizzare dei parametri con i quali definire il modo in cui deve essere generato un output. Analizziamo di seguito quelli che potrebbero risultare più utili nell'affrontare i task di amministrazioni di sistema e programmazione.

Parametro Descrizione
--chat Permette di inizializzare una sessione di chat associando ad essa un nome e un prompt specifico.
--code Consente di generare output sotto forma di codice.
--shell Permette di generare output sotto forma di istruzioni da linea di comando.
--execute Esegue le istruzioni generate dal parametro precedente.

Questi parametri possono essere utilizzati anche in combinazione tra loro o integrati con altre opzioni messe a disposizione da Shell GPT. Di seguito verranno proposti alcuni esempi, prima di iniziare ricordiamoci però di accedere alla nostra directory di progetto (dirGPT) e di attivare l'ambiente virtuale (TerminaleGPT) dedicato a Shell GPT tramite il comando:

source TerminaleGPT/bin/activate

Inizializzare una sessione di chat

Il modo più semplice di utilizzare il parametro --chat può essere riassunto tramite la seguente istruzione:

sgpt --chat cifra "Registra il numero 8"

Nel caso specifico l'opzione --chat permette di produrre una sessione univoca chiamata cifra. A quest'ultima viene poi associato un prompt ("Registra il numero 8") di cui il chatbot dovrà tenere conto nel prompt successivo. Come riutilizzare le informazioni memorizzate in sessione? Ad esempio in questo modo:

sgpt --chat cifra "Moltiplica il numero registrato per se stesso"

Il sistema ricorderà che il numero registrato è 8, lo moltiplicherà per se stesso restituendo in output il risultato corretto.

È possibile inizializzare più sessioni contemporaneamente con nomi differenti, per visualizzarne una lista basta usare l'istruzione:

sgpt --list-chat

Nello stesso modo è possibile visualizzare tutte le iterazioni relative ad una specifica sessione di chat tramite l'opzione --show-chat. In questo modo:

sgpt --show-chat cifra

Generare codice con --code

Il parametro --code introduce un prompt destinato a generare codice in output, proviamo per esempio a chiedere al nostro chatbot di completare un ciclo for sulla base di un dato intervallo di numeri. Di questi ultimi dovrà essere effettuata la somma dei soli numeri primi presenti.

Volendo è possibile memorizzare il risultato del prompt introdotto da --code in una sessione di chat. Per far questo è necessario innanzitutto inizializzare la sessione attribuendole un nome che sarà seguito nell'ordine da --code e dal prompt. Come nell'esempio proposto di seguito:

sgpt --chat for_py --code "Usa il ciclo for di Python per sommare.."

Fatto questo il codice prodotto rimarrà residente in sessione (for_py) e potrà essere richiamato per un richiesta successiva. Potremmo chiedere ad esempio al chatbot di mostrarci una struttura iterativa alternativa, basata questa volta sul ciclo while:

sgpt --chat for_py --code "Sostituisci il ciclo for con il while"

Il risultato dei due prompt può essere utile per confrontare le due espressioni generate dal sistema e utilizzare quella più performante per l'economia della propria applicazione.

Comandi da Terminale con --shell

La linea di comando di Linux prevede un numero enorme di istruzioni e combinazioni tra parametri, impossibile ricordarle tutte. A questo proposito il nostro chatbot e l'opzione --shell potrebbero rivelarsi più pratici da utilizzare rispetto a comandi come apropos, whatis e man. Anche perché abbiamo l'ulteriore parametro --execute che ci permette di eseguire i comandi generati in output.

Cominciamo con qualcosa di semplice, chiedendo ad esempio al sistema quale sia il comando per visualizzare la lista dei file e delle cartelle presenti nella directory corrente:

sgpt --shell "Elenca i file e le cartelle della directory corrente"

L'output in figura è corretto: ls -a. Si tratta di un'istruzione molto semplice, in genere nota anche ai neofiti delle distribuzioni Linux, quindi in linea generale non dovrebbe essere necessario far ricorso ad un'Intelligenza Artificiale per venirne a conoscenza. Vale però la pena di notare come il chatbot sia pienamente cosciente del sistema operativo in cui si trova ad operare. Questo significa che produrrà una risposta diversa a seconda della piattaforma di riferimento.

Esattamente come accade con --code, --shell può essere utilizzato unitamente a --chat per archiviare un prompt e il suo output.

L'immagine precedente mostra ad esempio la creazione di una sessione di chat, a cui è stato attribuito il nome CMD. Nella sessione è stata usata l'opzione --shell per ottenere l'istruzione da linea di comando richiesta in precedenza (ls -a). Fatto questo è stato possibile utilizzare l'informazione allocata in sessione per richiedere lo stesso comando per i sistemi operativi Windows (dir) e macOS (sempre ls -a come in Linux in quanto derivato anch'esso da Unix).

Eseguire comandi da Terminale con --execute

Il parametro --execute nasce per essere utilizzato in associazione con --shell. Ciò che --shell genera --execute esegue, chiaramente parliamo di istruzioni da linea di comando. La sintassi prevista è in questo caso la seguente, dove "prompt" può essere sostituito con qualsiasi richiesta relativa ai comandi da Terminale che desideriamo inviare al chatbot:

sgpt --shell --execute "prompt"

Immaginiamo per esempio di voler creare nella directory corrente una cartella chiamata chat contenente una sottocartella chiamata bot. Formulando la richiesta del comando necessario tramite l'opzione --shell avremmo un output come quello raffigurato nell'immagine proposta di seguito:

Ora, se volessimo ripetere lo stesso comando richiedendo inoltre al chatbot di eseguirlo per noi, dovremmo agire in questo modo:

Il sistema richiederà di confermare il comando da Shell, quindi per lanciarne l'esecuzione sarà sufficiente premere il tasto "y". A questo punto potremo verificare che la nostra operazione abbia avuto successo, magari lanciando al chatbot una richiesta come:

sgpt --shell --execute "Mostra cartelle e sottocartelle della directory corrente"

Conclusioni

Integrare il modello generativo GPT nel proprio Terminale Linux permette di creare rapidamente codice e comandi da Shell. Scopriremo presto altri ambiti in cui utilizzare questo strumento per incrementare la nostra produttività.

Ti consigliamo anche