openai/openai-java

The official Java library for the OpenAI API

OpenAI Java SDK – その概要

openai‑java リポジトリは、OpenAI REST API の公式 Java クライアントライブラリです。これにより、Java アプリケーションは HTTP リクエストを手動で作成することなく、OpenAI サービス(ChatGPT、DALL‑E、embeddings など)と通信できます。SDK は、認証、リクエスト構築、レスポンス解析、ストリーミング、非同期実行を処理し、Amazon Bedrock やクラウドネイティブなワークロード ID 認証との統合も行います。


入手方法

ビルドにライブラリを追加します。README には最新バージョン(執筆時点で 4.81.0)が示されています。

  • Gradle (Kotlin DSL)
implementation("com.openai:openai-java:4.81.0")
  • Maven
<dependency>
  <groupId>com.openai</groupId>
  <artifactId>openai-java</artifactId>
  <version>4.81.0</version>
</dependency>

SDK は Java 8 以降が必要です。


クイックスタート例

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.ChatModel;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;

// 環境変数から API キーなどを読み取る
OpenAIClient client = OpenAIOkHttpClient.fromEnv();

ResponseCreateParams params = ResponseCreateParams.builder()
        .input("Say this is a test")
        .model(ChatModel.GPT_5_2)
        .build();

Response response = client.responses().create(params);
System.out.println(response);

同じパターンは、従来の Chat Completions エンドポイントでも機能します。

ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
    .addUserMessage("Say this is a test")
    .model(ChatModel.GPT_5_2)
    .build();
ChatCompletion chat = client.chat().completions().create(params);
System.out.println(chat);

主な機能

機能 提供内容
同期・非同期 API client を呼び出してブロッキング呼び出し、または client.async() で CompletableFuture ベースのノンブロッキング呼び出しが可能。
ストリーミングサポート createStreaming メソッドで部分的な結果をリアルタイムに受信し、ヘルパークラス(ChatCompletionAccumulator)で最終オブジェクトを再構築できます。
不変のモデルオブジェクト すべてのリクエスト/レスポンスオブジェクトはビルダーで構築され、作成後は不変であるため、スレッド間で安全に共有できます。
構成可能な認証 API キーは環境変数、システムプロパティ、または ワークロード ID メカニズム(Kubernetes サービスアカウントトークン、Azure Managed Identity、GCP ID トークン、X.509 クライアント証明書)で指定できます。
Amazon Bedrock 統合 オプションの openai-java-bedrock アーティファクトを使用すると、通常の AWS 認証情報を使用して Bedrock でホストされている OpenAI 互換モデルを呼び出すことができます。
クライアントプーリング SDK は単一の OpenAIClient(接続プール + スレッドプール)を再利用します。README では、アプリケーションごとにクライアントを 1 つだけ作成することを推奨しています。
細かいオプション withOptions を使用すると、基盤となるプールを維持しながら設定(ベース URL、リトライ回数など)を一時的に調整できます。
Java 中心の使いやすさ ビルダー、型安全な enum(ChatModel.GPT_5_2)、包括的な Javadoc により、Java 開発者にとってネイティブな API になっています。

設定の詳細

認証は 3 つの方法で指定できます。

  1. 環境変数 – OPENAI_API_KEY、OPENAI_ORG_ID、OPENAI_PROJECT_ID など。
  2. システムプロパティ – openai.apiKey、openai.orgId、…(プロパティは環境変数より優先されます)。
  3. プログラムによるビルダー – OpenAIOkHttpClient.builder().apiKey("…").adminApiKey("…").build();

すべてのオプションは README の表にリストされており、baseUrl はデフォルトで https://api.openai.com/v1 です。


高度なユースケース

  • ワークロード ID – SDK は Kubernetes、Azure、GCP からの短期トークンを OpenAI アクセストークンと交換でき、長期有効な API キーを保存する必要がなくなります。
  • X.509 相互 TLS – 規制の厳しい環境向けに、クライアント証明書と秘密鍵を提供できます。SDK は相互 TLS チャネル上でトークン交換を実行します。
  • ストリーミング用のカスタム Executor – 非同期ストリーミングに使用されるデフォルトのスレッドプールを上書きし、subscribe に独自の Executor を渡すか、クライアントビルダーの streamHandlerExecutor を使用します。

詳細情報

  • 完全な Javadoc – https://javadoc.io/doc/com.openai/openai-java
  • サンプルコード – openai-java-example モジュールで、チャット、ストリーミング、非同期、ワークロード ID の使用例を示す実行可能なデモを参照してください。
  • コントリビューションガイド – CONTRIBUTING.md には、開発用 JDK のセットアップ方法、lint の実行方法、PR の提出方法が記載されています。
  • バージョンサポートポリシー – docs/version-support-policy.md には、各アーティファクトがサポートする Java バージョンがリストされています。

TL;DR

openai-java は、OpenAI HTTP API を慣用的な Java オブジェクトに抽象化する、本番環境対応の公式メンテナンス済み Java SDK です。同期、非同期、ストリーミング呼び出しをサポートし、標準の API キーまたはクラウドネイティブなワークロード ID トークンで動作し、Amazon Bedrock 上の OpenAI 互換モデルを呼び出すこともできます。Maven/Gradle プロジェクトに追加し、キーを設定して、数行のコードで GPT‑5 スタイルのモデルにプロンプトを送信できます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト