跳到主要内容

OpenAI 公式 SDK

备注

これは公式OpenAI Java SDKを使用するOpenAI 公式 SDK統合のドキュメントです。

LangChain4jは埋め込みモデルを使用するためにOpenAIとの4つの異なる統合を提供しており、これは#2です:

  • OpenAIはOpenAI REST APIのカスタムJava実装を使用し、Quarkus(Quarkus RESTクライアントを使用)とSpring(SpringのRestClientを使用)で最もよく機能します。
  • OpenAI 公式 SDKは公式OpenAI Java SDKを使用します。
  • Azure OpenAIはMicrosoftのAzure SDKを使用し、高度なAzure認証メカニズムを含むMicrosoft Javaスタックを使用している場合に最適です。
  • GitHub ModelsはGitHubモデルにアクセスするためにAzure AI推論APIを使用します。

この統合のユースケース

この統合はOpenAI Java SDK GitHubリポジトリを使用し、以下から提供されるすべてのOpenAIモデルで動作します:

  • OpenAI
  • Azure OpenAI
  • GitHub Models

また、OpenAI APIをサポートするモデルでも動作します。

OpenAIドキュメント

Maven依存関係

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

モデルの設定

OpenAIモデルを使用するには、通常、エンドポイントURL、APIキー、モデル名が必要です。これはモデルがホストされている場所によって異なりますが、この統合では自動設定によって簡単にしています:

一般的な設定

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();

Azure OpenAIとGitHub Modelsの特定の設定

OpenAI公式チャットモデルの設定と同様に、isAzure()isGitHubModels()メソッドを使用して、Azure OpenAIとGitHub ModelsでOpenAiOfficialEmbeddingModelを設定できます。

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) // ベースURLが`openai.azure.com`で終わる場合は不要
.build();

OpenAI公式チャットモデルのドキュメントで説明されているように、「パスワードレス」認証も使用できます。

GitHub Models

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

モデルの使用

モデルが設定されたら、埋め込みを作成するために使用できます:

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