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à.