Skip to content
This repository was archived by the owner on Feb 11, 2025. It is now read-only.

ai-for-java/openai4j

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java client library for OpenAI API

This is an unofficial Java client library that helps to connect your Java applications with OpenAI API.

Current capabilities:

Coming soon:

Start using

Maven:

<dependency> <groupId>dev.ai4j</groupId> <artifactId>openai4j</artifactId> <version>0.11.1</version> </dependency> 

Gradle:

implementation 'dev.ai4j:openai4j:0.11.1' 

Code examples

Create an OpenAI Client

Simple way:

String apiKey = System.getenv("OPENAI_API_KEY"); OpenAiClient client = OpenAiClient.builder() .openAiApiKey(apiKey) .build(); 

Customizable way:

String apiKey = System.getenv("OPENAI_API_KEY"); OpenAiClient client = OpenAiClient.builder()	.openAiApiKey(apiKey)	.callTimeout(ofSeconds(60))	.connectTimeout(ofSeconds(60))	.readTimeout(ofSeconds(60))	.writeTimeout(ofSeconds(60))	.proxy(HTTP, "XXX.XXX.XXX.XXX", 8080)	.logRequests()	.logResponses()	// other customizations coming soon!	.build(); 

Completions

Synchronously

Simple way:

String completion = client.completion("Write a poem about ChatGPT").execute(); 

Customizable way:

CompletionRequest request = CompletionRequest.builder()	.model(TEXT_DAVINCI_003)	.prompt("Write a poem about ChatGPT")	.temperature(0.9)	...	.build(); CompletionResponse response = client.completion(request).execute(); 

Asynchronously

Simple way:

client.completion("Write a poem about ChatGPT")	.onResponse(response -> ...)	.onError(error -> ...)	.execute(); 

Customizable way:

CompletionRequest request = CompletionRequest.builder()	.model(TEXT_DAVINCI_003)	.prompt("Write a poem about ChatGPT")	.temperature(0.9)	...	.build(); client.completion(request)	.onResponse(response -> ...)	.onError(error -> ...)	.execute(); 

Streaming

Simple way:

client.completion("Write a poem about ChatGPT")	.onPartialResponse(partialResponse -> ...)	.onComplete(() -> ...)	.onError(error -> ...)	.execute(); 

Customizable way:

CompletionRequest request = CompletionRequest.builder()	.model(TEXT_DAVINCI_003)	.prompt("Write a poem about ChatGPT")	.temperature(0.9)	...	.build(); client.completion(request)	.onPartialResponse(partialResponse -> ...)	.onComplete(() -> ...)	.onError(error -> ...)	.execute(); 

Chat Completions

Synchronously

Simple way:

String completion = client.chatCompletion("Write a poem about ChatGPT").execute(); 

Customizable way:

ChatCompletionRequest request = ChatCompletionRequest.builder()	.model(GPT_3_5_TURBO)	.addSystemMessage("You are a helpful assistant")	.addUserMessage("Write a poem about ChatGPT")	.temperature(0.9)	...	.build(); ChatCompletionResponse response = client.chatCompletions(request).execute(); 

Asynchronously

Simple way:

client.chatCompletion("Write a poem about ChatGPT")	.onResponse(response -> ...)	.onError(error -> ...)	.execute(); 

Customizable way:

ChatCompletionRequest request = ChatCompletionRequest.builder()	.model(GPT_3_5_TURBO)	.addSystemMessage("You are a helpful assistant")	.addUserMessage("Write a poem about ChatGPT")	.temperature(0.9)	...	.build(); client.chatCompletion(request)	.onResponse(response -> ...)	.onError(error -> ...)	.execute(); 

Streaming

Simple way:

client.chatCompletion("Write a poem about ChatGPT")	.onPartialResponse(partialResponse -> ...)	.onComplete(() -> ...)	.onError(error -> ...)	.execute(); 

Customizable way:

ChatCompletionRequest request = ChatCompletionRequest.builder()	.model(GPT_3_5_TURBO)	.addSystemMessage("You are a helpful assistant")	.addUserMessage("Write a poem about ChatGPT")	.temperature(0.9)	...	.build(); client.chatCompletion(request)	.onPartialResponse(partialResponse -> ...)	.onComplete(() -> ...)	.onError(error -> ...)	.execute(); 

Embeddings

Synchronously

Simple way:

List<Float> embedding = client.embedding("Write a poem about ChatGPT").execute(); 

Customizable way:

EmbeddingRequest request = EmbeddingRequest.builder()	.model(TEXT_EMBEDDING_ADA_002)	.input("Write a poem about ChatGPT", "Write a haiku about ChatGPT")	...	.build(); EmbeddingResponse embedding = client.embedding(request).execute(); 

Asynchronously

Simple way:

client.embedding("Write a poem about ChatGPT")	.onResponse(response -> ...)	.onError(error -> ...)	.execute(); 

Customizable way:

EmbeddingRequest request = EmbeddingRequest.builder()	.model(TEXT_EMBEDDING_ADA_002)	.input("Write a poem about ChatGPT", "Write a haiku about ChatGPT")	...	.build(); client.embedding(request)	.onResponse(response -> ...)	.onError(error -> ...)	.execute(); 

Moderations

Synchronously

Simple way:

ModerationResult moderationResult = client.moderation("Write a poem about ChatGPT").execute(); 

Customizable way:

ModerationRequest request = ModerationRequest.builder()	.input(INPUT)	.model(TEXT_MODERATION_STABLE)	.build(); ModerationResponse response = client.moderation(request).execute(); 

Asynchronously

Simple way:

client.moderation("Write a poem about ChatGPT")	.onResponse(response -> ...)	.onError(error -> ...)	.execute(); 

Customizable way:

ModerationRequest request = ModerationRequest.builder()	.input(INPUT)	.model(TEXT_MODERATION_STABLE)	.build(); client.moderation(request)	.onResponse(response -> ...)	.onError(error -> ...)	.execute(); 

Useful materials