chatgpt-java
Java 开发者接入 OpenAI 的首选 SDK,一行 Maven 依赖即可调用 GPT-3.5/
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Java 开发者接入 OpenAI 的首选 SDK,一行 Maven 依赖即可调用 GPT-3.5/
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你正在用 Java 构建一个客服系统,想要接入 AI 对话能力;或者你在开发一个内容审核平台,需要把用户输入交给 GPT 判断是否违规。正常情况下,你需要啃 OpenAI 官方英文文档、搞清楚 HTTP 请求怎么发、response 怎么解析——光是这些准备工作就可能耗掉你几天。
chatgpt-java 就是来解决这个痛点的。 它是一个纯 Java 编写的 OpenAI API 客户端 SDK,封装了官方全部接口,Java 开发者只需要在项目里引入 Maven 依赖,几行代码就能调用 GPT-3.5、GPT-4 生成对话、创建图片、语音转文字,甚至实现联网搜索和自定义插件。
这个项目由国内开发者 Grt1228 创建和维护,最初是为了方便自己和团队在 Java 项目中快速接入 ChatGPT 而写的小工具。2023 年初 ChatGPT 火遍全球后,大量 Java 开发者面临同样的接入难题,Grt1228 将自己的工具整理开源,迅速获得了社区认可。
项目采用 Apache-2.0 开源许可,托管在 GitHub 主分支为 develop,目前已积累超过 3400 颗星、800 个 Fork,是 Java 生态中星数最高的 OpenAI SDK 之一。作者还维护了配套的星火大模型 Java SDK(SparkDesk-Java),展现了在 AI SDK 领域的持续投入。
从技术实现来看,chatgpt-java 的架构非常清晰:底层通信依赖 OkHttp(含 SSE 支持用于流式输出),上层接口定义使用 Retrofit(RestAdapter 模式),JSON 序列化由 Jackson 完成,中间件层集成了 Hutool 工具库和 JTokkit(Token 计数的核心)。整个依赖栈成熟稳定,没有引入任何冷门依赖。
核心类结构如下:
OpenAiClient:默认同步客户端,覆盖全部 OpenAI 官方 APIOpenAiStreamClient:流式输出专用客户端,基于 SSE 事件推送OpenAiApi:Retrofit 接口定义层,封装了所有 API endpointconfig/、interceptor/、sse/、function/、plugin/:配置、拦截器、流式处理、函数调用、插件扩展特别值得一提的是,项目内置了 Token 计数能力(依赖 JTokkit),这是很多 SDK 忽略但对 API 成本控制至关重要的功能。
chatgpt-java 几乎封装了 OpenAI 所有商业化 API,具体包括:
| 功能模块 | 支持的 API | 典型场景 |
|---|---|---|
| 对话 | GPT-3.5、GPT-4、GPT-4-Turbo(含图片输入) | 智能客服、内容生成 |
| 图片生成 | Dall-e 3 | AI 作图应用 |
| 语音转文字 | Whisper | 录音转写、字幕生成 |
| 文本审核 | Moderations API | 内容安全过滤 |
| 微调 | Fine-tune | 定制化模型训练 |
| Embeddings | 向量嵌入 | 语义搜索、RAG |
| 函数调用 | Function Calling | 工具增强型 AI |
| 插件模式 | Plugin | 扩展 AI 能力边界 |
除了基础调用外,项目还提供了几个高级功能值得关注:
流式输出(SSE):通过 OpenAiStreamClient 实现服务端推送,前端可以逐 token 显示 AI 回复。参考实现见 chatgpt-steam-output 项目,这是一个整合了 Spring Boot 的完整对话 Demo。
动态 Key 切换:当 API Key 失效、过期或被封禁时,可以通过 DynamicKeyOpenAiAuthInterceptor 自定义拦截器实现多 Key 轮换,保证服务不中断。
联网搜索插件:项目支持接入搜索插件实现 GPT 实时联网,解决了大语言模型知识截止日期的问题。
使用方式极为简单。对于 Maven 项目,只需在 pom.xml 中添加依赖(Java 8+ 即可运行):
<dependency>
<groupId>com.unfbx</groupId>
<artifactId>chatgpt-java</artifactId>
<version>1.1.6</version>
</dependency>
流式对话示例(默认 OkHttpClient):
OpenAiStreamClient client = OpenAiStreamClient.builder()
.apiKey("your-api-key")
.build();
client.streamChatCompletion(
OpenAiChatCompletion.builder()
.model(OpenAiApi.ChatCompletionModel.GPT_3_5_TURBO)
.messages(Arrays.asList(
OpenAiChatCompletion.Message.of("user", "用 Java 写一个快速排序")))
.build(),
new StreamEventSourceListener() {
@Override
public void onEvent(String event, String id, String retry, Object data) { }
@Override
public void onComplete() { }
@Override
public void onError(Throwable throwable) { }
}
);
项目提供了 30+ 个单元测试,覆盖所有核心功能,学习成本极低。对于需要 Web UI 的用户,可以参考配套项目 chatgpt-steam-output,它是基于 Spring Boot 的完整对话应用示例。
尽管功能全面,这个 SDK 也有几点需要了解:
项目不是独立服务:chatgpt-java 是一个依赖包而非 Web 应用,没有自带 Web UI 或 API 服务。如果需要对外暴露对话接口,需要自己基于 Spring Boot 搭建服务层(参考 chatgpt-steam-output)。
Token 计数与费用:虽然内置了 JTokkit 做 Token 计数,但实际 API 调用费用由 OpenAI 收取,项目本身不提供用量统计和计费管理功能,大规模使用需自行监控。
作者已停止更新:从 GitHub push 时间看(2024-08),项目最后一次更新距今已有较长时间,部分新 API(如 GPT-4o、GPT-4o-mini、Assistants API 等)可能尚未覆盖。
代理与网络:国内访问 OpenAI API 需要代理,作者在 README 中提供了国内访问解决方案说明。
在 Java 生态中,OpenAI 官方没有提供 Java SDK,而市面上大多数 SDK 质量参差不齐。chatgpt-java 凭借全面的接口覆盖、清晰的代码结构、详尽的中文文档和活跃的社区维护,成为 Java 开发者接入 OpenAI 能力的首选方案。
其配套的星火大模型 SDK(SparkDesk-Java)表明作者有意打造"多模型统一接入层"的生态,这对于需要同时对接多个 AI 能力的开发者来说具有长期价值。

图1:作者微信公众号,提供项目交流与咨询
图2:GitHub 仓库封面图