An unofficial, easy-to-use Java/Kotlin OpenAI API for ChatGPT, Assistants, and more!
- Completions
- Streaming support via
OpenAI#streamCompletion
- Streaming support via
- Chat Completions
- Streaming support via
OpenAI#streamChatCompletion
- Functions support, check out the java examples and kotlin examples
- Azure Support
- Streaming support via
- Embeddings (New!)
- Files (New!)
- Assistants (New!)
For Kotlin DSL (build.gradle.kts
), add this to your dependencies block:
dependencies {
implementation("com.cjcrafter:openai:2.1.0")
}
For Maven projects, add this to your pom.xml
file in the <dependencies>
block:
<dependency>
<groupId>com.cjcrafter</groupId>
<artifactId>openai</artifactId>
<version>2.1.0</version>
</dependency>
See the maven repository for gradle/ant/etc.
This is a simple working example of the ChatGPT API in Java:
import com.cjcrafter.openai.OpenAI;
import com.cjcrafter.openai.chat.ChatMessage;
import com.cjcrafter.openai.chat.ChatRequest;
import com.cjcrafter.openai.chat.ChatResponse;
import io.github.cdimascio.dotenv.Dotenv;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* In this Java example, we will be using the Chat API to create a simple chatbot.
*/
public class ChatCompletion {
public static void main(String[] args) {
// To use dotenv, you need to add the "io.github.cdimascio:dotenv-kotlin:version"
// dependency. Then you can add a .env file in your project directory.
String key = Dotenv.load().get("OPENAI_TOKEN");
OpenAI openai = OpenAI.builder()
.apiKey(key)
.build();
List<ChatMessage> messages = new ArrayList<>();
messages.add(ChatMessage.toSystemMessage("Help the user with their problem."));
// Here you can change the model's settings, add tools, and more.
ChatRequest request = ChatRequest.builder()
.model("gpt-3.5-turbo")
.messages(messages)
.build();
Scanner scan = new Scanner(System.in);
while (true) {
System.out.println("What are you having trouble with?");
String input = scan.nextLine();
messages.add(ChatMessage.toUserMessage(input));
ChatResponse response = openai.createChatCompletion(request);
System.out.println("Generating Response...");
System.out.println(response.get(0).getMessage().getContent());
// Make sure to add the response to the messages list!
messages.add(response.get(0).getMessage());
}
}
}
For more examples, check out examples.
Note: OpenAI recommends using environment variables for your API token (Read more).
We use SLF4J for logging. To enable logging, add a logging implementation to your project. If you encounter an issue with the JSON parsing, we will ask that you enable logging and send us the logs.
Adding a logging implementation:
implementation("ch.qos.logback:logback-classic:$version")
Add a logback.xml
file to your resources folder:
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>debug.log</file>
<append>false</append>
<encoder>
<pattern>%date %level [%thread] %logger{10} %msg%n</pattern>
</encoder>
</appender>
<logger name="com.cjcrafter.openai" level="DEBUG"/> <!-- Change to OFF to disable our logging -->
<root level="DEBUG">
<appender-ref ref="FILE"/>
</root>
</configuration>
If I have saved you time, please consider sponsoring me.
ChatGPT-Java-API is an open-sourced software licensed under the MIT License. This is an unofficial library, and is not affiliated with OpenAI.