Come utilizzare ChatGPT di OpenAI per l’operatività quotidiana, dai commit Git alla shell

0

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/bash

All’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 npm@9.5.1 to update!
npm notice

root@c95b9cfb3840:/myrepo# echo 'OPENAI_KEY=<TOKEN GENERATO IN PRECEDENZA>' > ~/.aicommits

Per 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 "rasca@mmul.it"

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

Quindi, 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 <rasca@mmul.it>
Date:   Mon Feb 27 10:30:55 2023 +0000

    Add README file and Hello World program

Il 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 <rasca@mmul.it>
Date:   Mon Feb 27 10:34:11 2023 +0000

    Update message to "My NEW MESSAGE !"

commit e0f4746d12ea51ecfac320d3a83c90690a9e8f10
Author: RaSca <rasca@mmul.it>
Date:   Mon Feb 27 10:30:55 2023 +0000

    Add README file and Hello World program

Utilizzare 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.14

Al 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 PIPPO

E 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 
PIPPO

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