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!