I modelli linguistici di grandi dimensioni (LLM) possono essere integrati nelle applicazioni Go per abilitare funzionalità avanzate di linguaggio naturale come il completamento del testo, la generazione di codice e l'analisi semantica. Questo articolo spiega come connettersi a un LLM tramite API REST, utilizzando la libreria standard di Go.
Prerequisiti
Assicurati di avere:
- Go installato (versione 1.18 o superiore)
- Una chiave API valida da un provider LLM (come OpenAI)
Esempio di chiamata a un LLM
Ecco un esempio di codice Go che invia una richiesta POST a un LLM (es. OpenAI GPT) e stampa la risposta:
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)
func main() {
apiKey := os.Getenv("OPENAI_API_KEY")
if apiKey == "" {
fmt.Println("OPENAI_API_KEY non impostata")
return
}
url := "https://api.openai.com/v1/chat/completions"
payload := map[string]interface{}{
"model": "gpt-3.5-turbo",
"messages": []map[string]string{
{"role": "user", "content": "Ciao, cosa puoi fare?"},
},
}
jsonData, err := json.Marshal(payload)
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 "+apiKey)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}
Interpretazione della risposta
La risposta JSON include un campo choices
contenente il messaggio generato dal modello. Puoi usare encoding/json
per decodificarlo e accedere direttamente al contenuto.
Conclusioni
Usando Go è possibile interagire facilmente con un LLM tramite API HTTP. Questo approccio ti consente di integrare potenti funzionalità linguistiche in qualsiasi servizio o applicazione backend scritta in Go.