
com.simiacryptus.jopenai.models.APIProvider.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jo-penai Show documentation
Show all versions of jo-penai Show documentation
A Java client for OpenAI's API
The newest version!
package com.simiacryptus.jopenai.models
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import com.fasterxml.jackson.databind.annotation.JsonSerialize
import com.simiacryptus.util.DynamicEnum
import com.simiacryptus.util.DynamicEnumDeserializer
import com.simiacryptus.util.DynamicEnumSerializer
private val logger: Logger = LoggerFactory.getLogger(APIProvider::class.java)
@JsonDeserialize(using = APIProviderDeserializer::class)
@JsonSerialize(using = APIProviderSerializer::class)
class APIProvider private constructor(name: String, val base: String? = null) : DynamicEnum(name) {
companion object {
val Google = APIProvider("Google", "https://generativelanguage.googleapis.com")
val OpenAI = APIProvider("OpenAI", "https://api.openai.com/v1")
val Anthropic = APIProvider("Anthropic", "https://api.anthropic.com/v1")
val AWS = APIProvider("AWS", "https://api.openai.aws")
val Groq = APIProvider("Groq", "https://api.groq.com/openai/v1")
val Perplexity = APIProvider("Perplexity", "https://api.perplexity.ai")
val ModelsLab = APIProvider("ModelsLab", "https://modelslab.com/api/v6")
val Mistral = APIProvider("Mistral", "https://api.mistral.ai/v1")
init {
logger.info("Registering API providers")
register(APIProvider::class.java, Google)
register(APIProvider::class.java, OpenAI)
register(APIProvider::class.java, Anthropic)
register(APIProvider::class.java, AWS)
register(APIProvider::class.java, Groq)
register(APIProvider::class.java, Perplexity)
register(APIProvider::class.java, ModelsLab)
register(APIProvider::class.java, Mistral)
}
@JvmStatic
fun valueOf(name: String): APIProvider = valueOf(APIProvider::class.java, name)
@JvmStatic
fun values(): Collection {
logger.debug("Retrieving all APIProvider values")
return values(APIProvider::class.java)
}
}
}
class APIProviderSerializer : DynamicEnumSerializer(APIProvider::class.java)
class APIProviderDeserializer : DynamicEnumDeserializer(APIProvider::class.java)
© 2015 - 2025 Weber Informatics LLC | Privacy Policy