OpenAILLMClient

open class OpenAILLMClient @JvmOverloads constructor(settings: OpenAIClientSettings = OpenAIClientSettings(), httpClient: KoogHttpClient, clock: KoogClock = KoogClock.System, toolsConverter: OpenAICompatibleToolDescriptorSchemaGenerator = OpenAICompatibleToolDescriptorSchemaGenerator()) : AbstractOpenAILLMClient<OpenAIChatCompletionResponse, OpenAIChatCompletionStreamResponse> (source)

Implementation of LLMClient for OpenAI API.

Parameters

settings

The base URL and timeouts for the OpenAI API, defaults to "https://api.openai.com" and 900 s

httpClient

A fully configured KoogHttpClient for making API requests. Use the secondary constructor that accepts an API key and a KoogHttpClient.Factory to create a client with standard defaults.

clock

Clock instance used for tracking response metadata timestamps.

Constructors

Link copied to clipboard
constructor(settings: OpenAIClientSettings = OpenAIClientSettings(), httpClient: KoogHttpClient, clock: KoogClock = KoogClock.System, toolsConverter: OpenAICompatibleToolDescriptorSchemaGenerator = OpenAICompatibleToolDescriptorSchemaGenerator())
constructor(apiKey: String, settings: OpenAIClientSettings = OpenAIClientSettings(), httpClientFactory: KoogHttpClient.Factory, clock: KoogClock = KoogClock.System, toolsConverter: OpenAICompatibleToolDescriptorSchemaGenerator = OpenAICompatibleToolDescriptorSchemaGenerator())

Properties

Link copied to clipboard
open override val clientName: String

Functions

Link copied to clipboard
open override fun close()
Link copied to clipboard
open suspend override fun embed(text: String, model: LLModel): List<Double>

Embeds the given text using the OpenAI embeddings API.

open suspend override fun embed(inputs: List<String>, model: LLModel): List<List<Double>>

Batch embedding is not supported by the OpenAI API.

Link copied to clipboard
open suspend override fun execute(prompt: Prompt, model: LLModel, tools: List<ToolDescriptor>): Message.Assistant
Link copied to clipboard
open suspend override fun executeMultipleChoices(prompt: Prompt, model: LLModel, tools: List<ToolDescriptor>): List<Message.Assistant>
Link copied to clipboard
open fun executeStreaming(prompt: Prompt, model: LLModel): Flow<StreamFrame>
open override fun executeStreaming(prompt: Prompt, model: LLModel, tools: List<ToolDescriptor>): Flow<StreamFrame>
Link copied to clipboard
open override fun llmProvider(): LLMProvider

Returns the specific implementation of the LLMProvider associated with this client.

Link copied to clipboard
open suspend override fun models(): List<LLModel>

Retrieves the list of available models from OpenAI. https://platform.openai.com/docs/api-reference/models/list

Link copied to clipboard
open suspend override fun moderate(prompt: Prompt, model: LLModel): ModerationResult

Moderates text and image content based on the provided model's capabilities.