Class OpenAiApi
java.lang.Object
org.springframework.ai.openai.api.OpenAiApi
Single class implementation of the
OpenAI Chat Completion
API and OpenAI
Embedding API.
- Author:
- Christian Tzolov, Michael Lavelle, Mariusz Bernacki, Thomas Vitale, David Frizelle, Alexandros Pappas, Filip Hrisafov
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
static final record
Represents a chat completion response returned by model, based on the provided input.static final record
Represents a streamed chunk of a chat completion response returned by model, based on the provided input.static enum
The reason the model stopped generating tokens.static final record
Message comprising the conversation.static final record
Creates a model request for the given chat conversation.static enum
OpenAI Chat Completion Models.static final record
Represents an embedding vector returned by embedding endpoint.static final record
List of multiple embedding responses.static enum
OpenAI Embeddings Models: Embeddings.static final record
Creates an embedding vector representing the input text.static class
Represents a tool the model may call.static final record
Log probability information for the choice.static enum
The type of modality for the model completion.static final record
Usage statistics for the completion request. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionOpenAiApi
(String baseUrl, ApiKey apiKey, org.springframework.util.MultiValueMap<String, String> headers, String completionsPath, String embeddingsPath, org.springframework.web.client.RestClient.Builder restClientBuilder, org.springframework.web.reactive.function.client.WebClient.Builder webClientBuilder, org.springframework.web.client.ResponseErrorHandler responseErrorHandler) Create a new chat completion api. -
Method Summary
Modifier and TypeMethodDescriptionstatic OpenAiApi.Builder
builder()
org.springframework.http.ResponseEntity<OpenAiApi.ChatCompletion>
chatCompletionEntity
(OpenAiApi.ChatCompletionRequest chatRequest) Creates a model response for the given chat conversation.org.springframework.http.ResponseEntity<OpenAiApi.ChatCompletion>
chatCompletionEntity
(OpenAiApi.ChatCompletionRequest chatRequest, org.springframework.util.MultiValueMap<String, String> additionalHttpHeader) Creates a model response for the given chat conversation.reactor.core.publisher.Flux<OpenAiApi.ChatCompletionChunk>
chatCompletionStream
(OpenAiApi.ChatCompletionRequest chatRequest) Creates a streaming chat response for the given chat conversation.reactor.core.publisher.Flux<OpenAiApi.ChatCompletionChunk>
chatCompletionStream
(OpenAiApi.ChatCompletionRequest chatRequest, org.springframework.util.MultiValueMap<String, String> additionalHttpHeader) Creates a streaming chat response for the given chat conversation.<T> org.springframework.http.ResponseEntity<OpenAiApi.EmbeddingList<OpenAiApi.Embedding>>
embeddings
(OpenAiApi.EmbeddingRequest<T> embeddingRequest) Creates an embedding vector representing the input text or token array.static String
mutate()
Returns a builder pre-populated with the current configuration for mutation.
-
Field Details
-
DEFAULT_CHAT_MODEL
-
DEFAULT_EMBEDDING_MODEL
-
-
Constructor Details
-
OpenAiApi
public OpenAiApi(String baseUrl, ApiKey apiKey, org.springframework.util.MultiValueMap<String, String> headers, String completionsPath, String embeddingsPath, org.springframework.web.client.RestClient.Builder restClientBuilder, org.springframework.web.reactive.function.client.WebClient.Builder webClientBuilder, org.springframework.web.client.ResponseErrorHandler responseErrorHandler) Create a new chat completion api.- Parameters:
baseUrl
- api base URL.apiKey
- OpenAI apiKey.headers
- the http headers to use.completionsPath
- the path to the chat completions endpoint.embeddingsPath
- the path to the embeddings endpoint.restClientBuilder
- RestClient builder.webClientBuilder
- WebClient builder.responseErrorHandler
- Response error handler.
-
-
Method Details
-
mutate
Returns a builder pre-populated with the current configuration for mutation. -
builder
-
getTextContent
-
chatCompletionEntity
public org.springframework.http.ResponseEntity<OpenAiApi.ChatCompletion> chatCompletionEntity(OpenAiApi.ChatCompletionRequest chatRequest) Creates a model response for the given chat conversation.- Parameters:
chatRequest
- The chat completion request.- Returns:
- Entity response with
OpenAiApi.ChatCompletion
as a body and HTTP status code and headers.
-
chatCompletionEntity
public org.springframework.http.ResponseEntity<OpenAiApi.ChatCompletion> chatCompletionEntity(OpenAiApi.ChatCompletionRequest chatRequest, org.springframework.util.MultiValueMap<String, String> additionalHttpHeader) Creates a model response for the given chat conversation.- Parameters:
chatRequest
- The chat completion request.additionalHttpHeader
- Optional, additional HTTP headers to be added to the request.- Returns:
- Entity response with
OpenAiApi.ChatCompletion
as a body and HTTP status code and headers.
-
chatCompletionStream
public reactor.core.publisher.Flux<OpenAiApi.ChatCompletionChunk> chatCompletionStream(OpenAiApi.ChatCompletionRequest chatRequest) Creates a streaming chat response for the given chat conversation.- Parameters:
chatRequest
- The chat completion request. Must have the stream property set to true.- Returns:
- Returns a
Flux
stream from chat completion chunks.
-
chatCompletionStream
public reactor.core.publisher.Flux<OpenAiApi.ChatCompletionChunk> chatCompletionStream(OpenAiApi.ChatCompletionRequest chatRequest, org.springframework.util.MultiValueMap<String, String> additionalHttpHeader) Creates a streaming chat response for the given chat conversation.- Parameters:
chatRequest
- The chat completion request. Must have the stream property set to true.additionalHttpHeader
- Optional, additional HTTP headers to be added to the request.- Returns:
- Returns a
Flux
stream from chat completion chunks.
-
embeddings
public <T> org.springframework.http.ResponseEntity<OpenAiApi.EmbeddingList<OpenAiApi.Embedding>> embeddings(OpenAiApi.EmbeddingRequest<T> embeddingRequest) Creates an embedding vector representing the input text or token array.- Type Parameters:
T
- Type of the entity in the data list. Can be aString
orList
of tokens (e.g. Integers). For embedding multiple inputs in a single request, You can pass aList
ofString
orList
ofList
of tokens. For example:List.of("text1", "text2", "text3") or List.of(List.of(1, 2, 3), List.of(3, 4, 5))
- Parameters:
embeddingRequest
- The embedding request.- Returns:
- Returns list of
OpenAiApi.Embedding
wrapped inOpenAiApi.EmbeddingList
.
-