工作中 Java 程序员如何集成 AI?Spring AI、LangChain4j、JBoltAI 实战对比
作为一名深耕 Java 领域八年的开发者,从最初的 SSH/SSM 到如今的 Spring Cloud 微服务生态,我见证了 Java 在企业级开发中的核心地位。而随着 AI 技术的普及,越来越多的企业开始要求在现有 Java 系统中集成 AI 能力 ------ 但手动封装 HttpClient 调用大模型 API、处理鉴权 / 上下文 / 异常,不仅效率低下,还容易引入稳定性问题。
近期我深度调研了三款 Java 生态下的 AI 开发框架:Spring AI、LangChain4j、JBoltAI,本文将从企业级业务落地视角,结合统一的业务场景实现 Demo,并对比三者的核心差异,帮你快速选型。
一、统一业务场景:企业级智能问答助手
为了公平对比,所有框架均实现同一个基础场景:
开发一个企业级智能问答接口,支持:
- 接收用户自然语言问题,调用大模型(OpenAI / 通义千问)返回回答;
- 支持简单的上下文对话(记住用户前一轮问题);
- 符合 Java 企业级开发规范(异常处理、配置解耦)。
二、各框架实战实现
2.1 Spring AI:Spring 生态的 "原生 AI 伴侣"
框架定位
Spring 官方推出的 AI 框架,核心优势是无缝集成 Spring Boot/Spring Cloud 生态,以 "低代码" 方式让 Java 开发者快速接入 AI 能力,无需关注底层 API 调用细节。
环境准备(Maven 依赖)
xml
<dependencies>
<!-- Spring Boot基础 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring AI OpenAI集成 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
<version>0.8.1</version>
</dependency>
<!-- 配置处理 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies>
Demo 代码实现
java
import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.openai.OpenAiChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class SpringAIAskController {
// Spring AI封装的OpenAI客户端(自动注入)
@Autowired
private OpenAiChatClient chatClient;
// 模拟上下文存储(生产环境建议用Redis)
private final List<Message> historyMessages = new ArrayList<>();
@PostMapping("/spring-ai/ask")
public String ask(@RequestBody String question) {
try {
// 1. 添加用户当前问题到上下文
UserMessage userMessage = new UserMessage(question);
historyMessages.add(userMessage);
// 2. 构建Prompt,包含上下文
Prompt prompt = new Prompt(historyMessages);
// 3. 调用大模型
ChatResponse response = chatClient.call(prompt);
// 4. 保存AI回答到上下文
historyMessages.add(response.getResult().getOutput());
// 5. 返回结果
return response.getResult().getOutput().getContent();
} catch (Exception e) {
// 企业级异常处理
return "问答失败:" + e.getMessage();
}
}
}
配置文件(application.yml)
yaml
spring:
ai:
openai:
api-key: 你的OpenAI API Key
base-url: https://api.openai.com/v1
chat:
model: gpt-3.5-turbo
temperature: 0.7
核心代码解析
作为八年 Java 开发者,我最认可 Spring AI 的一点是:完全遵循 Spring 的开发习惯 ------ 通过@Autowired注入客户端,配置通过application.yml解耦,无需手写任何 HTTP 请求代码。上下文管理通过List<Message>实现,框架已封装好消息体的格式转换,极大降低了学习成本。
2.2 LangChain4j:LLM 应用的 "模块化构建器"
框架定位
LangChain 的 Java 版本,核心优势是模块化、可扩展,专注于构建复杂的 LLM 应用(上下文管理、工具调用、多模型适配),适合需要定制化 AI 流程的场景。
环境准备(Maven 依赖)
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- LangChain4j核心 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>0.32.0</version>
</dependency>
<!-- LangChain4j OpenAI集成 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>0.32.0</version>
</dependency>
</dependencies>
Demo 代码实现
kotlin
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.time.Duration;
@RestController
public class LangChain4jAskController {
// 定义AI服务接口(LangChain4j的核心特性:声明式API)
interface QAService {
// 支持上下文的问答方法
String chat(String question);
}
// 创建Chat模型
private final ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey("你的OpenAI API Key")
.modelName("gpt-3.5-turbo")
.timeout(Duration.ofSeconds(30))
.temperature(0.7)
.build();
// 创建带上下文的AI服务(默认内存存储上下文)
private final QAService qaService = AiServices.create(QAService.class, model);
@PostMapping("/langchain4j/ask")
public String ask(@RequestBody String question) {
try {
// 直接调用声明式接口,框架自动管理上下文
return qaService.chat(question);
} catch (Exception e) {
return "问答失败:" + e.getMessage();
}
}
}
核心代码解析
LangChain4j 的设计思路更偏向 "AI 应用工程化":通过声明式接口(QAService) 定义 AI 能力,框架自动处理上下文、请求封装、响应解析。相比 Spring AI,它的模块化更强 ------ 比如你可以自定义上下文存储(Redis/MongoDB)、添加工具调用(比如调用企业内部 API),适合构建复杂的 AI 应用,但学习曲线略高。
2.3 JBoltAI:国产轻量 AI 框架的 "开箱即用"
框架定位
国产轻量级 Java AI 框架,核心优势是适配国内大模型(文心一言、通义千问、讯飞星火) ,开箱即用,无需复杂配置,适合国内企业快速落地 AI 能力。
环境准备(Maven 依赖)
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- JBoltAI核心 -->
<dependency>
<groupId>com.jbolt</groupId>
<artifactId>jbolt-ai-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
Demo 代码实现
java
import com.jbolt.ai.core.client.JBoltAiClient;
import com.jbolt.ai.core.model.QwenChatRequest;
import com.jbolt.ai.core.model.QwenChatResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class JBoltAIAskController {
// JBoltAI客户端(自动注入)
@Autowired
private JBoltAiClient jBoltAiClient;
// 模拟上下文
private final List<QwenChatRequest.Message> historyMessages = new ArrayList<>();
@PostMapping("/jbolt-ai/ask")
public String ask(@RequestBody String question) {
try {
// 1. 添加用户问题到上下文
historyMessages.add(new QwenChatRequest.Message("user", question));
// 2. 构建通义千问请求
QwenChatRequest request = QwenChatRequest.builder()
.model("qwen-turbo") // 通义千问轻量版
.messages(historyMessages)
.temperature(0.7)
.build();
// 3. 调用JBoltAI客户端
QwenChatResponse response = jBoltAiClient.qwenChat(request);
// 4. 保存AI回答到上下文
String answer = response.getOutput().getChoices().get(0).getMessage().getContent();
historyMessages.add(new QwenChatRequest.Message("assistant", answer));
return answer;
} catch (Exception e) {
return "问答失败:" + e.getMessage();
}
}
}
配置文件(application.yml)
yaml
jbolt:
ai:
ali: # 阿里云通义千问配置
access-key-id: 你的阿里云AccessKey
access-key-secret: 你的阿里云AccessKeySecret
核心代码解析
JBoltAI 的最大价值是适配国内大模型生态------ 无需开发者了解各厂商 API 的差异,框架已封装好通义千问、文心一言等接口。作为国内企业的 Java 开发者,这一点非常实用(避免因网络 / 合规问题无法使用 OpenAI),且 API 设计贴合 Java 开发者习惯,上手成本低。
三、三大框架核心维度对比
| 维度 | Spring AI | LangChain4j | JBoltAI |
|---|---|---|---|
| 核心定位 | Spring 生态原生 AI 集成,低代码 | 模块化 LLM 应用构建器,可扩展 | 国产大模型适配,开箱即用 |
| 生态集成 | 完美适配 Spring Boot/Cloud | 中立框架,需手动集成 Spring 生态 | 适配 Spring Boot,轻量集成 |
| 模型适配 | 以 OpenAI 为主,支持少量国产模型 | 支持多厂商模型,需自定义适配 | 深度适配国内主流模型(通义 / 文心) |
| 易用性 | 最高(Spring 开发者零学习成本) | 中等(需理解模块化设计) | 较高(贴合国内开发者习惯) |
| 功能丰富度 | 基础功能(问答 / 上下文),够用即可 | 丰富(工具调用 / 多链交互 / 记忆管理) | 基础 + 国产模型特色功能(如文生图) |
| 企业级特性 | 支持配置中心 / 监控,符合 Spring 规范 | 需手动扩展企业级特性 | 轻量监控,适配国内企业合规要求 |
| 学习曲线 | 低(Spring 开发者无缝衔接) | 中高(需理解 LangChain 核心概念) | 低(API 设计直观) |
四、选型建议(八年 Java 开发者的经验之谈)
- 优先选 Spring AI:如果你的项目是 Spring Boot/Cloud 生态,且以 OpenAI 为主、对 AI 功能要求不复杂 ------ 这是最贴合 Java 企业级开发的选择,无需额外学习新的开发范式。
- 选 LangChain4j:如果需要构建复杂的 LLM 应用(比如 AI + 工具调用、多模型协作),且团队能接受一定的学习成本 ------ 它的模块化设计能支撑长期扩展。
- 选 JBoltAI:如果你的项目需要适配国内大模型(通义千问 / 文心一言),且追求快速落地 ------ 避免重复造轮子,直接用封装好的国产框架。
五、总结
- 核心结论:Java 开发者集成 AI 无需抛弃原有技术栈,这三款框架均能让你用熟悉的 Java 方式实现 AI 能力,核心差异在于 "生态适配" 和 "模型场景";
- 落地原则:优先选择 "生态贴合度高" 的框架(比如 Spring 生态选 Spring AI),其次再考虑功能丰富度,避免为了 "炫技" 选择复杂框架;
- 未来趋势:Spring AI 作为官方框架,未来会成为 Java 集成 AI 的主流,而 LangChain4j 适合复杂场景,JBoltAI 则是国内企业的实用选择。
作为八年 Java 老兵,我的建议是:先通过 Spring AI/JBoltAI 快速落地第一个 AI 功能,验证业务价值后,再基于 LangChain4j 做复杂扩展------ 这既符合企业级开发 "小步快跑" 的原则,也能最大化利用你已有的 Java 技术积累。