Skip to main content

OpenAI Official SDK

note

This is the documentation for the OpenAI Official SDK integration, that uses the official OpenAI Java SDK.

LangChain4j provides 4 different integrations with OpenAI for using embedding models, and this is #2 :

  • OpenAI uses a custom Java implementation of the OpenAI REST API, that works best with Quarkus (as it uses the Quarkus REST client) and Spring (as it uses Spring's RestClient).
  • OpenAI Official SDK uses the official OpenAI Java SDK.
  • Azure OpenAI uses the Azure SDK from Microsoft, and works best if you are using the Microsoft Java stack, including advanced Azure authentication mechanisms.
  • GitHub Models uses the Azure AI Inference API to access GitHub Models.

Use cases for this integration

This integration uses the OpenAI Java SDK GitHub Repository, and will work for all OpenAI models which can be provided by:

  • OpenAI
  • Azure OpenAI
  • GitHub Models

It will also work with models supporting the OpenAI API.

OpenAI Documentation

Maven Dependency

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-official</artifactId>
<version>1.0.0-beta2</version>
</dependency>

Configuring the models

To use OpenAI models, you usually need an endpoint URL, an API key, and a model name. This depends on where the model is hosted, and this integration tries to make it easier with some auto-configuration:

Generic configuration

import com.openai.models.embeddings.EmbeddingModel;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.model.openaiofficial.OpenAiOfficialEmbeddingModel;

// ....

EmbeddingModel model = OpenAiOfficialEmbeddingModel.builder()
.baseUrl(System.getenv("AZURE_OPENAI_ENDPOINT"))
.apiKey(System.getenv("AZURE_OPENAI_KEY"))
.modelName(EmbeddingModel.TEXT_EMBEDDING_3_SMALL)
.build();

Specific configurations for Azure OpenAI and GitHub Models.

Similar to configuring the OpenAI Official Chat Model, you can configure the OpenAiOfficialEmbeddingModel with Azure OpenAI and GitHub Models, using the isAzure() and isGitHubModels() methods.

For Azure OpenAI:

EmbeddingModel model = OpenAiOfficialEmbeddingModel.builder()
.baseUrl(System.getenv("AZURE_OPENAI_ENDPOINT"))
.apiKey(System.getenv("AZURE_OPENAI_KEY"))
.modelName(EmbeddingModel.TEXT_EMBEDDING_3_SMALL)
.isAzure(true) // Not necessary if the base URL ends with `openai.azure.com`
.build();

For GitHub Models:

EmbeddingModel model = OpenAiOfficialEmbeddingModel.builder()
.modelName(EmbeddingModel.TEXT_EMBEDDING_3_SMALL)
.isGitHubModels(true)
.build();

Using the models

Once the model is configured, you can use it to create embeddings:

Response<Embedding> response = model.embed("Please embed this sentence.");