Esistono modi diversi di utilizzare ChatGPT, il bot prodotto da OpenAI (che di fatto è controllata da Microsoft), rispetto alle semplici chat interattive con cui fare screenshot da pubblicare sui social per poi vantarsi di aver “battuto” una intelligenza artificiale? In effetti sì e questo articolo cerca di portare qualche esempio.
Come iniziare ad usare ChatGPT
La prima questione da risolvere è basilare: capire come accedere a ChatGPT è il passo fondamentale per iniziare ad utilizzarlo. Il servizio è fornito da OpenAI e per iniziare ad utilizzarlo va creato un account presso il sito (si possono usare login Google o Microsoft se ne si possiede già una).
Una volta che l’account è creato la schermata iniziale consente di accedere alla chat cliccando sul tasto “New chat” per iniziare ad interagire con il bot e da qui è quindi possibile ragionare in termini di domande. Dalla lista dei presidenti italiani fino a come compilare un sorgente in Go, le domande a cui ChatGPT potrà rispondere sono potenzialmente infinite. Come abbiamo raccontato è possibile anche fargli scrivere dei racconti o dei romanzi.
È importante ricordare come ciò di cui stiamo parlando sia il servizio gratuito offerto da OpenAI, che molte volte a causa dell’enorme quantità di richieste, potrebbe non essere disponibile. Esiste anche la possibilità di effettuare delle subscription a pagamento, proprio per evitare questo genere di indisponibilità.
Generare commit message Git con ChatGPT
Fin qui domande e risposte, ma c’è dell’altro? Stando al progetto AI Commits si direbbe proprio di sì. Si tratta infatti di una CLI (Command Line Interface) che scrive i messaggi di commit in maniera automatica, senza quindi vi sia la necessità di documentare quello che si è modificato nel commit message, lasciando fare tutto a ChatGPT.
Come avviene la magia? In due fasi, la prima è il reperimento della chiave di accesso ad OpenAI che andrà generata cliccando sul bottone “+ Create new secret key” e memorizzata.
La seconda è l’installazione del tool aicommit. Per fare un test veloce sarà possibile avviare un container node in questo modo:
> docker run -it node /bin/bashAll’interno di questo container sarà possibile installare il client aicommit popolando il file ~/.aicommits con la secret key appena generata:
root@c95b9cfb3840:/# npm install -g aicommits added 1 package in 2s npm notice npm notice New patch version of npm available! 9.5.0 -> 9.5.1 npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.5.1 npm notice Run npm install -g [email protected] to update! npm notice root@c95b9cfb3840:/myrepo# echo 'OPENAI_KEY=<TOKEN GENERATO IN PRECEDENZA>' > ~/.aicommitsPer testare il funzionamento di aicommits si dovrà creare un repository Git di test come il seguente, effettuando il primo commit:
root@c95b9cfb3840:/# mkdir /myrepo root@c95b9cfb3840:/# cd /myrepo root@c95b9cfb3840:/myrepo# git config --global init.defaultBranch main root@c95b9cfb3840:/myrepo# git config --global user.email "[email protected]" root@c95b9cfb3840:/myrepo# git config --global user.name "RaSca" root@c95b9cfb3840:/myrepo# git init Initialized empty Git repository in /myrepo/.git/ root@c95b9cfb3840:/myrepo# echo 'My Helloworld project' > README.md root@c95b9cfb3840:/myrepo# cat <<EOF > helloworld.java import java.lang.System; import java.io.IOException; class HelloWorldApp { public static void main (String args[]) throws IOException { System.out.println("Hello World !"); } } > EOF root@c95b9cfb3840:/myrepo# git add . root@c95b9cfb3840:/myrepo# git status On branch main No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README.md new file: helloworld.javaQuindi, riassumendo le operazioni effettuate, nel repository è stato creato un file README.md ed un file helloworld.java, tutto quello che serve per provare a sfruttare aicommits per generare un commit message automatico:
root@c95b9cfb3840:/myrepo# aicommits ┌ aicommits │ ○ Detected 2 staged files: README.md helloworld.java │ ○ Changes analyzed │ ○ Use this commit message? Add README file and Hello World program │ Yes │ └ ✔ Successfully committed! root@c95b9cfb3840:/myrepo# git log commit e0f4746d12ea51ecfac320d3a83c90690a9e8f10 (HEAD -> main) Author: RaSca <[email protected]> Date: Mon Feb 27 10:30:55 2023 +0000 Add README file and Hello World programIl risultato è stato raggiunto, non che ci volesse poi molto a generare un commit message così semplice, ma è chiaro che da qui in poi i test potranno essere molteplici, ad esempio modificando il file Java nel repository di test e ripetendo la sequenza:
root@c95b9cfb3840:/myrepo# cat <<EOF > helloworld.java import java.lang.System; import java.io.IOException; class HelloWorldApp { public static void main (String args[]) throws IOException { System.out.println("My NEW MESSAGE !"); } } EOF root@c95b9cfb3840:/myrepo# git add . root@c95b9cfb3840:/myrepo# aicommits ┌ aicommits │ ○ Detected 1 staged file: helloworld.java │ ○ Changes analyzed │ ○ Use this commit message? Update message to "My NEW MESSAGE !" │ Yes │ └ ✔ Successfully committed! root@c95b9cfb3840:/myrepo# git log commit 410b59feafbcc0fa1efdec5552d012d6445b80a1 (HEAD -> main) Author: RaSca <[email protected]> Date: Mon Feb 27 10:34:11 2023 +0000 Update message to "My NEW MESSAGE !" commit e0f4746d12ea51ecfac320d3a83c90690a9e8f10 Author: RaSca <[email protected]> Date: Mon Feb 27 10:30:55 2023 +0000 Add README file and Hello World programUtilizzare ChatGPT da linea di comando
Un’altra modalità di utilizzo di ChatGPT è mediante linea di comando, attraverso il tool Shell GPT. Il principio di funzionamento è molto simile a quello illustrato precedentemente, ma in questo caso il software è scritto in Python.
La modalità di utilizzo ideale in questo caso è mediante Python Virtual Environment, in questi semplici passi:
asca@catastrofe [~]> mkdir shell-gpt rasca@catastrofe [~]> python3 -m venv shell-gpt/ rasca@catastrofe [~]> source shell-gpt/bin/activate (shell-gpt) rasca@catastrofe [~]> pip3 install shell-gpt Collecting shell-gpt Downloading shell_gpt-0.5.0-py3-none-any.whl (6.1 kB) ... ... Successfully installed certifi-2022.12.7 charset-normalizer-3.0.1 click-8.1.3 idna-3.4 markdown-it-py-2.2.0 mdurl-0.1.2 pygments-2.14.0 requests-2.28.2 rich-13.3.1 shell-gpt-0.5.0 typer-0.7.0 urllib3-1.26.14Al primo avvio verrà richiesta la chiave (o token) generato in precedenza, ma sarà già possibile effettuare le domande interessate:
(shell-gpt) rasca@catastrofe [~]> sgpt "What is Birmania's capital?" Please enter your API secret key The capital of Burma (also known as Myanmar) is Naypyidaw.(inutile che scriva quanto è importante sapere quale sia la capitale della Birmania)
Con potenziale generazione di comandi:
(shell-gpt) rasca@catastrofe [~]> sgpt --shell "Create an empty file named PIPPO" touch PIPPOE relativa effettiva esecuzione:
(shell-gpt) rasca@catastrofe [~]> sgpt --shell --execute "Create an empty file named PIPPO" touch PIPPO Execute shell command? [y/N]: y (shell-gpt) rasca@catastrofe [~]> ls PIPPO PIPPODa qui in poi… Spazio alla fantasia!
Conclusioni
Quanto mostrato ovviamente è solo la punta dell’iceberg, infatti tool come quelli illustrati stanno fiorendo a decine ogni giorno, pertanto è davvero solo una questione di tempo da dedicare alla sperimentazione.
Conclusioni, quelle vere
Che siate affascinati o meno in merito a quanto esposto, che riconosciate quanto ChatGPT possa fare per il vostro lavoro o per l’open-source in generale, va chiarita una cosa assolutamente essenziale: tutti questi automatismi, tutte queste domande, tutti i potenziali comandi che potrete far eseguire in autonomia a ChatGPT sono registrati.
State usando una chiave che è associata al vostro utente, pertanto chi è dall’altra parte della cornetta sa esattamente ciò che state facendo, perché glielo state dicendo voi. Occhio quindi a chiavi, password, ma anche in generale tutto il codice che date in pasto a questi tool, perché, inutile sottolinearlo: NIENTE È GRATIS.
Uomo avvisato…
Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.