
openai-java
官方 Java SDK,几行代码接入 OpenAI 接口
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-10-26 · 当前星标 ★ 1557
使用教程
环境要求
- Java 8 或更高版本
- Gradle 或 Maven 构建工具
- 一个可用的 OpenAI API Key
- 能访问 https://api.openai.com/v1 的网络环境
安装与启动步骤
-
1添加 Gradle 依赖
在 build.gradle.kts 的 dependencies 块中加入 SDK 坐标,重新同步项目即可下载依赖。
implementation("com.openai:openai-java:4.91.0") -
2或添加 Maven 依赖
Maven 项目把 dependency 片段粘贴到 pom.xml 的 dependencies 中,版本号与仓库最新发布保持一致。
com.openai openai-java 4.91.0 -
3设置 API Key
把密钥写入 OPENAI_API_KEY 环境变量,SDK 会通过 fromEnv() 自动读取,避免把密钥写进代码。
export OPENAI_API_KEY=sk-xxxxxxxx -
4创建客户端
全局只创建一个 OpenAIClient,它内含连接池与线程池,多个实例反而浪费资源。
OpenAIClient client = OpenAIOkHttpClient.fromEnv(); -
5调用 Responses API
用 ResponseCreateParams 构建请求,指定 input 与 model,再通过 client.responses().create() 获取结果。
ResponseCreateParams params = ResponseCreateParams.builder() .input("Say this is a test") .model(ChatModel.GPT_5_2) .build(); Response response = client.responses().create(params); -
6运行并验证
编译运行程序,观察是否返回模型生成的文本;也可改用仓库示例目录中的完整示例代码。
./gradlew run
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
apiKey | 否 | API 密钥,可用系统属性 openai.apiKey 或环境变量 OPENAI_API_KEY 传入 | sk-xxxxxxxx |
adminApiKey | 否 | 管理密钥,对应 openai.adminKey / OPENAI_ADMIN_KEY | sk-admin-xxxxxxxx |
organization | 否 | 组织 ID,对应 openai.orgId / OPENAI_ORG_ID | org-xxxxxxxx |
project | 否 | 项目 ID,对应 openai.projectId / OPENAI_PROJECT_ID | proj-xxxxxxxx |
baseUrl | 是 | API 基础地址,对应 openai.baseUrl / OPENAI_BASE_URL,默认官方地址 | https://api.openai.com/v1 |
webhookSecret | 否 | Webhook 校验密钥,对应 openai.webhookSecret / OPENAI_WEBHOOK_SECRET | whsec-xxxxxxxx |
如何确认成功
程序正常运行、无鉴权异常,并能打印出模型返回的文本内容,即表示依赖与配置生效。
常见问题
Q:不设置环境变量可以吗?
A:可以。用 OpenAIOkHttpClient.builder().apiKey("sk-xxxxxxxx").build() 直接传入密钥;也可以先用 fromEnv() 再用 setter 覆盖单个配置项。
Q:系统属性和环境变量哪个优先?
A:系统属性优先级高于环境变量,例如 -Dopenai.apiKey 会覆盖 OPENAI_API_KEY。
Q:需要给每个请求都创建客户端吗?
A:不需要。README 建议同一应用只创建一个客户端实例,共享连接池和线程池效率更高。
Q:如何临时修改某个配置?
A:在任意 client 或 service 上调用 withOptions(),例如 optionsBuilder.maxRetries(42),不会影响原客户端。
Q:对 JDK 版本有什么要求?
A:框架无关的 SDK 产物要求 Java 8 或更高;若要在本地构建仓库代码,需使用 gradle/version-support.properties 中 build.jdk 指定的开发 JDK。
注意事项
- 系统属性优先于环境变量,配置冲突时以系统属性为准。
- 同一应用内不要创建多个客户端,避免重复的连接池与线程池开销。
- 完整可运行示例见仓库 openai-java-example 目录下 com.openai.example 包。
- 本地构建仓库代码前先执行 ./scripts/check-env 与 ./scripts/lint 检查环境与代码风格。
核心亮点
- OpenAI 官方维护,接口与 OpenAPI 规范同步更新,兼容性有保障
- Kotlin 编写但完整支持 Java 调用,类型安全,IDE 补全和编译期检查友好
- 内置重试、超时、流式响应、分页等通用能力,减少业务侧样板代码
不足之处
- 仅覆盖 OpenAI 自家 API,切换其他模型厂商需另找 SDK 或自行适配
- 版本迭代较快,升级时偶有破坏性变更,需要关注迁移说明
适用场景
- Java 后端服务集成对话补全能力,做智能客服或知识问答
- 企业批处理任务调用嵌入接口,构建向量检索与语义搜索
- Spring 应用中异步调用图像、音频等多模态接口
替代项目
langchain4j、spring-ai、openai-java-sdk
上一篇:openai-go
下一篇:async-openai
同类项目推荐
markstream-vue
开源
让 AI 流式输出 Markdown 在多框架下流畅渲染,低延迟不卡顿
Multi-framework streaming Markdown renderers for AI apps: Vue/Nuxt, React/Next.js, S···
liteflow
开源
像编排组件一样编排 AI Agent,轻松实现复杂流程。
Lightweight, fast, stable, programmable component-based rule engine — where AI Agen···
bruno
开源
把 API 测试当代码管理,用 Git 搞定协作与版本追踪
Opensource IDE For Exploring and Testing API's (lightweight alternative to Postman/I···
Turing.jl
开源
用几行 Julia 代码写概率模型,自动完成贝叶斯推断
Bayesian inference with probabilistic programming.
open-autonomy
开源
用Python快速搭建可部署的去中心化自主智能体服务
A framework for the creation of autonomous agent services.
codex-multi-auth
开源
多账号一键切换,Codex 登录永不掉线
Codex CLI multi-account OAuth manager with account switching, health checks, runtime···
PaddleMIX
开源
飞桨多模态全家桶,一站式搞定图文理解与生成
Paddle Multimodal Integration and eXploration, supporting mainstream multi-modal tas···
prisma
开源
PHP 里一套接口调用多家多媒体大模型
Light-weight PHP package for integrating multi-media related Large Language Models (···
openai-agents-go
开源
用 Go 快速搭多智能体工作流,接 OpenAI 模型
A lightweight, powerful framework for multi-agent workflows in Go