Connect open Java to open AI

 Create maven project:

mvn archetype:generate -DgroupId=com.openai.test -DartifactId=openAIBanking -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false;


Apps.java

package com.openai.test;

public class App
{
public static void main( String[] args )
{
Connection connection = new Connection();
connection.connect();
}
}


Connection.java

package com.openai.test;

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
import org.json.JSONObject;
import org.json.JSONArray;

public class Connection {
public void connect() {
try {
System.out.println("testing");
// 1. Set the endpoint URL for ChatGPT (gpt-3.5 or gpt-4)
URL url = new URL("https://api.openai.com/v1/chat/completions");

// 2. Open HTTP connection
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
//conn.setRequestProperty("Authorization", "Bearer YOUR_OPENAI_API_KEY");
conn.setRequestProperty("Authorization", "Bearer sk-p");
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);

// 3. Create request body (in JSON format)
//String userQuestion = "What is routing No"; // Variable for the user question
String jsonInputString = "{\n" +
" \"model\": \"gpt-4o-mini\",\n" +
" \"messages\": [\n" +
" {\"role\": \"system\", \"content\": \"You are an expert in banking and finance. ONLY answer questions related to banking and finance in the United States. If a question is outside of this domain, respond with: 'The question is invalid to the banking domain.'\"},\n" +
" {\"role\": \"user\", \"content\": \"" + Question.userQuestion + "\"}\n" +
" ]\n" +
"}";

// 4. Send request
try (OutputStream os = conn.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}

// 5. Read response
int responseCode = conn.getResponseCode();
System.out.println("Response Code: " + responseCode);

try (Scanner scanner = new Scanner(conn.getInputStream())) {
StringBuilder response = new StringBuilder();
while (scanner.hasNextLine()) {
response.append(scanner.nextLine());
}
//System.out.println("ChatGPT Response: " + response.toString());

// Parse JSON to extract just the assistant's content
JSONObject jsonResponse = new JSONObject(response.toString());
JSONArray choices = jsonResponse.getJSONArray("choices");
String content = choices.getJSONObject(0).getJSONObject("message").getString("content");
// Print only the actual response from ChatGPT
System.out.println("ChatGPT Answer: " + content);
}

} catch (Exception e) {
e.printStackTrace();
}
}
}


Question.java

package com.openai.test;

public class Question {
public static String userQuestion = "what is current intrest rate";
}

Pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.openai.test</groupId>
<artifactId>openAIBanking</artifactId>
<version>1.0-SNAPSHOT</version>

<name>openAIBanking</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230227</version>
</dependency>
</dependencies>

<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version> <configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>

Comments