ChatGPT nelle tue applicazioni Java (esempio completo)
Premessa
La chat GPT (Generative Pre-trained Transformer) è una tecnologia di intelligenza artificiale
che consente a un computer di comprendere le conversazioni e di rispondere in modo appropriato.
Si tratta di una tecnologia di apprendimento automatico che utilizza reti neurali per apprendere da grandi quantità di dati e fornire risposte più pertinenti. (magari nei prossimi articoli spiegherò come addestrarlo per esigenze specifiche)
GPT è stato sviluppato da OpenAI ed è stato reso open source. La tecnologia GPT è stata utilizzata
per creare chatbot che possono essere implementati in numerosi linguaggi di programmazione, qui vedremo come integrarlo in Java. ...Leggi di più
Innanzitutto, dovrai registrarti per una chiave API accedendo alla pagina dell’API OpenAI . Segui le istruzioni per creare un account e ottenere una tua chiave API. Inoltre, la registrazione ti consente di accedere a tutte le funzionalità di OpenAI, come la creazione di modelli di machine learning e l’utilizzo dei servizi di ricerca.
Iniziamo subito con il codice:
- Creiamo il nostro progetto Java-Maven (ci servirà per gestire una unica dipendenza) con qualsiasi IDE con cui siamo abituati a lavorare. Qui vedrai delle schermate Intellij IDEA
Generato il progetto apriamo il file pom.xml che troviamo alla radice del progetto aggiungiamo questa dipendenza tra i tag <dependencies> e </dependencies>
.
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20220924</version>
</dependency>
- Aggiungiamo una classe che chiameremo ChatGPT e inseriamo il seguente codice che spiegheremo in seguito:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONObject;
public void chatGPT(String text) throws Exception{
String url = "https://api.openai.com/v1/completions";
String OPENAI_API_KEY = "QUI LA TUA CHIAVE API";
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer " + OPENAI_API_KEY);
JSONObject data = new JSONObject();
data.put("model", "text-davinci-003");
data.put("prompt", text);
data.put("max_tokens", 2048);
data.put("temperature", 0.5);
con.setDoOutput(true);
con.getOutputStream().write(data.toString().getBytes());
String output = new BufferedReader(new InputStreamReader(con.getInputStream())).lines()
.reduce( (a,b) -> a+b).get();
System.out.println(new JSONObject(output).getJSONArray("choices").getJSONObject(0).getString("text"));
}
La prima parte del codice è abbastanza semplice, abbiamo creato una istanza alla classe URLConnection che fornisce una connessione bidirezionale tra un client e un server su una rete, che può essere usata per inviare e ricevere dati, quindi abbiamo definito l’url da chiamare e settato il tipo di richiesta, il contenuto della richiesta e l’autorizzazione di accesso (la key API).
Abbiamo ora bisogno di un parser Json che renda intellegibile la risposta di chatGPT, quindi creiamo un oggetto e lo settiamo su alcune proprietà che l’API saprà interpretare, il modello (davinci-003), la risposta (testo), il max_token(Questo parametro è utile per limitare la lunghezza della risposta generata dal modello ed evitare che diventi troppo lunga) e la temperature (Il parametro “temperature” nell’API ChatGPT è un modo per controllare la quantità di rischio che l’API prende con le sue risposte. Un valore più alto significa che l’API è più propensa a rischiare con le sue risposte, mentre un valore più basso significa che l’API è più propensa a dare risposte più certe.)
Infine stampiamo in consolle la risposta fornita da chatGPT creando una variabile di tipo String chiamata output. Utilizzando BufferedReader per leggere i dati da un InputStreamReader, che a sua volta ottiene i dati dall’InputStream della connessione (con), che vengono ridotti in una singola stringa e assegna il risultato alla variabile output.
Abbiamo quasi terminato
Apriamo la classe Main che è stata generata automaticamente dal progetto e aggiungiamo nel metodo main questo codice avremo quindi una cosa di questo tipo:
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner input = new Scanner(System.in);
System.out.print("Inserisci la tua domanda: ");
String question = input.nextLine();
new ChatGPT().chatGPT(question);
input.close();
}
}
Abbaiamo inserito semplicemente un oggetto scanner per ottenere dall’utente la domanda da sottoporre a chatGPT
Finito ! Facciamo il run del nostro progetto e dopo qualche secondo chatGPT ci fornirà una risposta alla nostra domanda.
Puoi scaricare l’intero codice da qui: blog.seconet.it/ChatGPT nelle tue applicazioni Java
Se in questo articolo ci sono degli errori o hai dei suggerimenti, faccelo sapere!