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 开发者来说感觉原生。 |
配置详情
身份验证可以通过三种方式提供:
- 环境变量 –
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。
高级用例
- 工作负载身份 – 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 风格模型发送提示。
相关
- 项目
- 项目
- 项目
- 项目
- 项目