HomePage

La Guida dell’Intraprendente per Costruire un CLI Golang con ChatGPT e Generare Comandi del Terminale Unix: Un Viaggio Lastricato di Risate, Sarcasmo ed Efficienza

Nel regno della programmazione, un coraggioso sviluppatore di nome Bob si è imbarcato in un viaggio per costruire un CLI Golang con l’assistenza di ChatGPT. Questo viaggio non riguardava solo la programmazione, ma anche l’abbracciare le stranezze, ridere delle assurdità e trovare gioia nel processo. Bob ha iniziato con un semplice programma “Hello, World!”, apprezzando la semplicità di Golang. Costruire un CLI in Golang era come giocare con i blocchi LEGO, assemblando pacchetti predefiniti nel giusto ordine.

Bob ha deciso di integrare ChatGPT nel suo CLI, un compito tanto impegnativo quanto insegnare a un gatto a miagolare. ChatGPT, un modello di intelligenza artificiale super-intelligente, può imitare il discorso umano e generare risposte significative e contestualmente appropriate. Il risultato è stato un CLI che non solo poteva eseguire compiti, ma anche partecipare a battute argute, lanciando citazioni casuali e dando consigli di programmazione.

Questo viaggio ha portato a un nuovo caso d’uso per il modello GPT di OpenAI: trasformare le istruzioni in inglese in comandi del terminale Unix. L’obiettivo era migliorare l’approccio tradizionale alla scrittura di script e alla navigazione del terminale, riducendo il tempo speso per configurare moduli e funzioni o risolvere problemi con librerie obsolete. Lo strumento CLI potrebbe migliorare l’efficienza negli ambienti che si basano pesantemente sui comandi Unix, in particolare in DevOps, ingegneria dei sistemi e amministrazione dei server.

Il programma Go ha iniziato importando i pacchetti necessari e dichiarando le variabili per i flag della riga di comando. La funzione main gestiva i flag della riga di comando, caricava o salvava la chiave API e impostava il prompt di input per generare comandi. La funzione getCommandFromAPI era responsabile per fare richieste HTTP all’API di OpenAI, passando il prompt di input nella richiesta e elaborando la risposta per estrarre il comando generato.

Chiamata API:

    url := "https://api.openai.com/v1/completions"

	promptData := Prompt{
		Model:            "text-davinci-003",
		Prompt:           fmt.Sprintf("Translate the following English instruction into a Unix terminal command: '%s'", prompt),
		Temperature:      1.0,
		MaxTokens:        256,
		TopP:             1.0,
		FrequencyPenalty: 0.0,
		PresencePenalty:  0.0,
		Stop:             []string{"\\n"},
	}

	jsonData, err := json.Marshal(promptData)
	if err != nil {
		panic(err)
	}

	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		panic(err)
	}

	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("Authorization", "Bearer "+key)

	client := &http.Client{}

	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

Esecuzione del commando generato:

func executeCommand(cmd string) {
	command := exec.Command("bash", "-c", cmd)
	var out bytes.Buffer
	var stderr bytes.Buffer
	command.Stdout = &out
	command.Stderr = &stderr
	err := command.Run()
	if err != nil {
		log.Println(fmt.Sprint(err) + ": " + stderr.String())
		return
	}
	log.Println(out.String())
}
Github Repo completa

Questo progetto ha dimostrato come l’IA può assistere gli sviluppatori nelle attività quotidiane. Traducendo le istruzioni in inglese in comandi Unix, questo strumento CLI Go potrebbe migliorare l’efficienza. Tuttavia, richiedeva una solida comprensione dei comandi Unix per essere utilizzato in modo efficace e interpretare correttamente i risultati.

In conclusione, costruire un CLI Golang con ChatGPT non riguarda solo la programmazione. Si tratta di rendersi conto che, nel grande schema delle cose, stiamo tutti cercando di dare un senso a questo vasto universo digitale, una riga di codice alla volta. E come disse il grande filosofo René Descartes

“Io programmo, quindi sono”. Quindi, ecco a Bob, a Golang e a ChatGPT. Possa il tuo codice compilare senza errori, e possa il tuo CLI essere divertente come uno spettacolo di stand-up comedy. E ricorda, nelle sagge parole di Yoda, “Programma o non programmare, non c’è provare.”

2023-06-13
Supervisore per le goroutine, fault tolerance in Golang

Stai cercando un modo semplice per riavviare le tue goroutine in caso di arresto anomalo? Questo post ti mostra il modo più semplice per farlo! E forse chiamarla tolleranza agli errori è un po' troppo.Learn more