Class OpenAiApi

java.lang.Object
org.springframework.ai.openai.api.OpenAiApi

public class OpenAiApi extends Object
Single class implementation of the OpenAI Chat Completion API and OpenAI Embedding API.
Author:
Christian Tzolov, Michael Lavelle, Mariusz Bernacki, Thomas Vitale, David Frizelle
  • Field Details

    • DEFAULT_CHAT_MODEL

      public static final OpenAiApi.ChatModel DEFAULT_CHAT_MODEL
    • DEFAULT_EMBEDDING_MODEL

      public static final String DEFAULT_EMBEDDING_MODEL
  • Constructor Details

    • OpenAiApi

      public OpenAiApi(String apiKey)
      Create a new chat completion api with base URL set to https://api.openai.com
      Parameters:
      apiKey - OpenAI apiKey.
    • OpenAiApi

      public OpenAiApi(String baseUrl, String apiKey)
      Create a new chat completion api.
      Parameters:
      baseUrl - api base URL.
      apiKey - OpenAI apiKey.
    • OpenAiApi

      public OpenAiApi(String baseUrl, String apiKey, org.springframework.web.client.RestClient.Builder restClientBuilder, org.springframework.web.reactive.function.client.WebClient.Builder webClientBuilder)
      Create a new chat completion api.
      Parameters:
      baseUrl - api base URL.
      apiKey - OpenAI apiKey.
      restClientBuilder - RestClient builder.
      webClientBuilder - WebClient builder.
    • OpenAiApi

      public OpenAiApi(String baseUrl, String apiKey, 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.
      restClientBuilder - RestClient builder.
      webClientBuilder - WebClient builder.
      responseErrorHandler - Response error handler.
    • OpenAiApi

      public OpenAiApi(String baseUrl, String apiKey, 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.
      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.
    • OpenAiApi

      public OpenAiApi(String baseUrl, String 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

    • getTextContent

      public static String getTextContent(List<OpenAiApi.ChatCompletionMessage.MediaContent> content)
    • 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 a String or List of tokens (e.g. Integers). For embedding multiple inputs in a single request, You can pass a List of String or List of List 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 in OpenAiApi.EmbeddingList.