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、嵌入等)进行通信。该 SDK 处理身份验证、请求构建、响应解析、流式传输、异步执行,甚至与 Amazon Bedrock 和云原生工作负载身份验证集成。


如何获取

将库添加到您的构建中 – 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 密钥可通过环境变量、系统属性或工作负载身份机制(Kubernetes 服务账户令牌、Azure 托管身份、GCP ID 令牌或 X.509 客户端证书)提供。
Amazon Bedrock 集成 可选的 openai-java-bedrock 构件允许您使用常规 AWS 凭证调用 Bedrock 上托管的 OpenAI 兼容模型。
客户端池化 SDK 重用单个 OpenAIClient(连接池 + 线程池)。README 建议每个应用程序仅创建一个客户端。
细粒度选项 使用 withOptions 临时调整设置(基础 URL、重试次数等),同时保持底层池不变。
Java 中心化的人体工程学 构建器、类型安全的枚举(ChatModel.GPT_5_2)以及全面的 Javadoc 使 API 对 Java 开发者来说感觉原生。

配置详情

身份验证可以通过三种方式提供:

  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。


高级用例

  • 工作负载身份 – SDK 可以将来自 Kubernetes、Azure 或 GCP 的短期令牌交换为 OpenAI 访问令牌,无需存储长期 API 密钥。
  • X.509 双向 TLS – 对于高度监管的环境,您可以提供客户端证书和私钥;SDK 将通过双向 TLS 通道执行令牌交换。
  • 自定义流式执行器 – 通过向 subscribe 传递您自己的 Executor 或通过客户端构建器上的 streamHandlerExecutor 覆盖用于异步流式传输的默认线程池。

更多资源

  • 完整 Javadoc – https://javadoc.io/doc/com.openai/openai-java
  • 示例代码 – 参见 openai-java-example 模块,获取聊天、流式、异步和工作负载身份使用的可运行演示。
  • 贡献指南 – CONTRIBUTING.md 解释了如何设置开发 JDK、运行 lint 以及提交 PR。
  • 版本支持政策 – docs/version-support-policy.md 列出了每个构件支持的 Java 版本。

总结

openai-java 是一个生产就绪、官方维护的 Java SDK,它将 OpenAI HTTP API 抽象为地道的 Java 对象。它支持同步、异步和流式调用,适用于标准 API 密钥或云原生工作负载身份令牌,甚至允许您在 Amazon Bedrock 上调用 OpenAI 兼容模型。将其添加到您的 Maven/Gradle 项目,配置您的密钥,然后只需几行代码即可向 GPT‑5 风格模型发送提示。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目