Kotlin client for OpenAI's API with multiplatform and coroutines capabilities.
- Install OpenAI API Kotlin client by adding the following dependency to your
gradle.build
file:
repositories {
mavenCentral()
}
dependencies {
implementation "com.aallam.openai:openai-client:<version>"
}
- Choose and add to your dependencies one of Ktor's engines.
Alternatively, you can use openai-client-bom by adding the following dependency to your gradle.build
file
dependencies {
// import Kotlin API client BOM
implementation platform('com.aallam.openai:openai-client-bom:<version>')
// define dependencies without versions
implementation 'com.aallam.openai:openai-client'
implementation 'io.ktor:ktor-client-okhttp'
}
In multiplatform projects, add openai client dependency to commonMain
, and choose
an engine for each target.
Create an instance of OpenAI
client:
val openAI = OpenAI(apiKey)
ℹ️ OpenAI encourages using environment variables for the API key. Read more.
Use your OpenAI
instance to make API requests:
List models
val models: List<Model> = openAI.models()
Retrieve a model
val id = ModelId("text-ada-001")
val model: Model = openAI.model(id)
Create completion
val completionRequest = CompletionRequest(
model = ModelId("text-ada-001"),
prompt = "Somebody once told me the world is gonna roll me",
echo = true
)
val completion: TextCompletion = openAI.completion(Ada, completionRequest)
Create completion stream
val request = CompletionRequest(
model = ModelId("text-davinci-002"),
prompt = "Once upon a time",
maxTokens = 5,
temperature = 1.0,
topP = 1.0,
n = 1,
stop = listOf("\n"),
)
val completions: Flow<TextCompletion> = openAI.completions(request)
Create edits
val edit = openAI.edit(
request = EditsRequest(
model = ModelId("text-davinci-edit-001"),
input = "What day of the wek is it?",
instruction = "Fix the spelling mistakes"
)
)
Create images
val images = openAI.imageURL( // or openAI.imageJSON
creation = ImageCreation(
prompt = "A cute baby sea otter",
n = 2,
size = ImageSize.is1024x1024
)
)
Edit images
val images = openAI.imageURL( // or openAI.imageJSON
edit = ImageEdit(
image = FileSource(name = "<filename>", source = imageSource),
mask = FileSource(name = "<filename>", source = maskSource),
prompt = "a sunlit indoor lounge area with a pool containing a flamingo",
n = 1,
size = ImageSize.is1024x1024
)
)
Create image variants
val images = openAI.imageURL( // or openAI.imageJSON
variation = ImageVariation(
image = FileSource(name = "<filename>", source = imageSource),
n = 1,
size = ImageSize.is1024x1024
)
)
Create embeddings
val embeddings = openAI.embeddings(
request = EmbeddingRequest(
model = ModelId("text-similarity-babbage-001"),
input = listOf("The food was delicious and the waiter...")
)
)
List files
val files = openAI.files()
Upload file
val file = openAI.file(
request = FileUpload(
file = source,
purpose = Purpose("fine-tune")
)
)
Delete file
openAI.delete(fileId)
Retrieve file
val file = openAI.file(fileId)
Retrieve file content
val bytes = openAI.download(fileId)
Create fine-tunes
val fineTune = openAI.fineTune(
request = FineTuneRequest(
trainingFile = trainingFile,
model = ModelId("ada")
)
)
Create moderation
val moderation = openAI.moderations(
request = ModerationRequest(
input = "I want to kill them."
)
)
Sample apps are available under sample
, please check the README for running instructions.
OpenAI Kotlin API Client is an open-sourced software licensed under the MIT license. This is an unofficial library, it is not affiliated with nor endorsed by OpenAI. Contributions are welcome.