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 つの方法で指定できます。
- 環境変数 –
OPENAI_API_KEY、OPENAI_ORG_ID、OPENAI_PROJECT_IDなど。 - システムプロパティ –
openai.apiKey、openai.orgId、…(プロパティは環境変数より優先されます)。 - プログラムによるビルダー –
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 スタイルのモデルにプロンプトを送信できます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト