Java开发者福音!LangChain4j保姆级入门,30分钟给项目加AI
大家好,我是直奔标杆,专注Java技术干货,不玩虚的,只讲能落地的实操技巧!
做Java开发的兄弟,有没有过这种崩溃时刻?老板突然甩过来一句:“给咱们系统加个AI客服,能自动回答用户问题”,你兴致勃勃去查OpenAI官方文档,结果发现——根本没有官方Java SDK!
自己写HTTP客户端、解析JSON、管理API密钥、处理重试和异常,忙了一周,还在调接口踩坑,进度纹丝不动。其实不用这么麻烦,LangChain4j直接帮你搞定所有痛点,专为Java开发者设计,30分钟就能上手,让你的项目快速拥有AI能力,不用学Python,不用懂机器学习,会写Java就够了!

一、先搞懂:LangChain4j到底能解决什么问题?
很多Java开发者对LangChain4j有误解,以为它是Python版LangChain的简单移植,其实不是——它是完全适配Java生态的AI开发框架,主打一个“开箱即用、无缝集成”,专门解决Java项目集成AI的痛点:
-
不用重复造轮子:不用自己封装HTTP请求、处理接口异常,框架全帮你搞定
-
统一API适配:一套代码对接OpenAI、Azure、阿里云通义千问等几十种AI模型,切换模型不用改代码
-
贴合Java生态:完美集成Spring Boot、Quarkus、Helidon,生产环境直接用
-
功能全覆盖:从简单对话、多轮记忆,到工具调用、RAG文档问答,满足企业级AI需求
简单说:LangChain4j就是Java开发者的AI开发“脚手架”,让你从“调接口踩坑”中解放出来,专注业务逻辑,快速落地AI功能。
二、30分钟实操:从0到1给Java项目加AI(全程复制可用)
废话不多说,直接上实操,每一步都有代码,复制粘贴就能运行,全程30分钟,分4步走,新手也能跟上。
第一步:5分钟环境准备(必做)
核心要求:JDK 11+(推荐JDK 17/21,兼容性最好),Maven/Gradle项目均可,这里以Maven为例。
添加依赖(直接复制到pom.xml,版本统一1.12.2,稳定无坑):
<!-- LangChain4j核心依赖 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.12.2</version>
</dependency>
<!-- OpenAI模型支持(国外开发者用) -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>1.12.2</version>
</dependency>
<!-- 阿里云通义千问(国内开发者首选,访问稳定) -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-dashscope</artifactId>
<version>1.12.2</version>
</dependency>
注意:二选一即可,国内优先选通义千问,不用科学上网,申请API密钥也简单(阿里云控制台搜索“通义千问”,开通后获取密钥)。
第二步:10分钟写第一个AI程序(最简单,必跑通)
目标:调用AI模型,让它生成Java单例模式代码,3行核心代码,跑通就能建立信心!
import dev.langchain4j.model.openai.OpenAiChatModel;
public class HelloAI {
public static void main(String[] args) {
// 1. 创建AI模型实例(替换成你的API密钥)
OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey("sk-你的OpenAI密钥") // 国内用通义千问就替换成QwenChatModel
.modelName("gpt-3.5-turbo") // 通义千问对应"qwen-max"
.build();
// 2. 调用AI,发送指令
String response = model.generate("用Java写一个单例模式,线程安全");
// 3. 输出结果
System.out.println("AI生成的代码:\n" + response);
}
}
运行结果(实测可用):
AI生成的代码:
这是一个线程安全的Java单例模式(双重检查锁模式):
public class Singleton {
// volatile保证可见性和禁止指令重排
private static volatile Singleton instance;
// 私有构造方法,防止外部实例化
private Singleton() {}
// 双重检查锁,兼顾效率和线程安全
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
重点:只要API密钥正确,直接运行就能出结果,不用额外配置,这就是LangChain4j的便捷性!
第三步:10分钟实现多轮对话(实用功能)
单轮对话太鸡肋,实际项目中,AI需要记住上下文(比如客服对话),LangChain4j的ChatMemory帮你自动管理,不用手动拼接上下文!
import dev.langchain4j.memory.ChatMemory;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.data.message.UserMessage;
public class ChatWithMemory {
public static void main(String[] args) {
// 1. 创建模型(同上,替换密钥)
OpenAiChatModel model = OpenAiChatModel.withApiKey("sk-你的密钥");
// 2. 创建对话记忆,保留最近10条消息(可调整)
ChatMemory memory = MessageWindowChatMemory.withMaxMessages(10);
// 第一轮对话:告诉AI我的信息
memory.add(UserMessage.from("我叫张三,是一名Java后端开发者,擅长Spring Boot"));
String response1 = model.generate(memory.messages());
memory.add(AiMessage.from(response1));
System.out.println("AI:" + response1);
// 第二轮对话:测试AI是否记住上下文
memory.add(UserMessage.from("我叫什么名字?擅长什么技术?"));
String response2 = model.generate(memory.messages());
System.out.println("AI:" + response2);
}
}
运行结果(实测):
AI:你好张三!很高兴认识你,作为一名Java后端开发者,擅长Spring Boot是非常棒的技能,有任何相关的技术问题都可以问我哦~
AI:你叫张三,是一名Java后端开发者,擅长Spring Boot技术。
关键:不用手动拼接“我叫张三...我叫什么名字”,ChatMemory自动帮你管理对话历史,极大减少代码量!
第四步:5分钟模板化提示词(实际项目必用)
实际开发中,提示词往往有固定格式(比如客服回复模板、代码生成模板),LangChain4j的PromptTemplate可以实现“提示词与代码分离”,方便产品经理调整,复用性极高。
import dev.langchain4j.model.input.PromptTemplate;
import dev.langchain4j.model.openai.OpenAiChatModel;
import java.util.Map;
public class PromptTemplateDemo {
public static void main(String[] args) {
// 1. 定义提示词模板(可单独提取到配置文件,方便修改)
String template = """
你是一名资深{role},请用{style}的方式解释什么是{concept},要求:
1. 通俗易懂,避开专业术语堆砌
2. 给出Java代码示例(可直接运行)
3. 说明实际项目中的适用场景
""";
// 2. 填充模板变量(动态替换,灵活复用)
String prompt = PromptTemplate.from(template)
.apply(Map.of(
"role", "Java架构师",
"style", "接地气、讲故事",
"concept", "微服务架构"
));
// 3. 调用AI生成结果
OpenAiChatModel model = OpenAiChatModel.withApiKey("sk-你的密钥");
String response = model.generate(prompt);
System.out.println(response);
}
}
优势:后续要修改提示词格式,不用改代码,直接修改template内容即可,降低维护成本,这也是企业级开发的最佳实践。
三、进阶实操:让AI调用你的业务方法(最实用功能)
这是LangChain4j最核心的功能——工具调用(Tool Calling),让AI自动判断用户需求,调用你的业务方法(比如查询订单、取消订单),不用手动判断逻辑,真正实现“智能助手”。
import dev.langchain4j.agent.tool.Tool;
import dev.langchain4j.service.AiServices;
// 1. 定义业务工具类(你的实际业务方法,用@Tool注解标记)
public class OrderTools {
// @Tool注解:说明该方法的功能,AI会根据用户问题自动调用
@Tool("根据订单号查询订单状态,参数是订单号(字符串)")
public String queryOrderStatus(String orderId) {
// 实际项目中,这里是查询数据库/接口的业务逻辑
return "订单" + orderId + ":已发货,预计明天送达(快递单号:YT123456789)";
}
@Tool("取消订单,参数是订单号(字符串),仅未发货订单可取消")
public String cancelOrder(String orderId) {
// 实际业务逻辑:校验订单状态、执行取消操作
return "订单" + orderId + "已成功取消,退款将在3个工作日内到账(原路退回)";
}
}
// 2. 定义AI服务接口(指定AI的角色和功能)
interface CustomerService {
// @SystemMessage:告诉AI它的角色和规则
@SystemMessage("你是电商客服助手,只能处理订单相关问题,无法回答无关问题")
String chat(String userMessage);
}
// 3. 测试AI自动调用业务方法
public class ToolCallingDemo {
public static void main(String[] args) {
// 构建AI服务,关联模型、工具
CustomerService service = AiServices.builder(CustomerService.class)
.chatModel(OpenAiChatModel.withApiKey("sk-你的密钥"))
.tools(new OrderTools()) // 注入业务工具
.build();
// 测试1:查询订单(AI自动调用queryOrderStatus)
String response1 = service.chat("我的订单123456状态是什么?");
System.out.println("AI:" + response1);
// 测试2:取消订单(AI自动调用cancelOrder)
String response2 = service.chat("帮我取消订单123456");
System.out.println("AI:" + response2);
}
}
运行结果(实测):
AI:订单123456:已发货,预计明天送达(快递单号:YT123456789)
AI:订单123456已成功取消,退款将在3个工作日内到账(原路退回)
神奇之处:你不用写“判断用户是否要查订单、是否要取消订单”的逻辑,AI会根据用户问题,自动匹配对应的@Tool方法,完全解放开发者!
四、生产环境必备:Spring Boot集成(必学)
实际项目基本都是Spring Boot,LangChain4j提供了专门的Starter,无缝集成,不用手动配置,直接注入使用。
步骤1:添加Spring Boot Starter依赖
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>1.12.2</version>
</dependency>
步骤2:配置application.yml(核心配置)
langchain4j:
open-ai:
chat-model:
api-key: ${OPENAI_API_KEY} # 环境变量配置,避免硬编码(生产环境必做)
model-name: gpt-3.5-turbo
temperature: 0.7 # 控制AI回答随机性,0.7适中
timeout: 30000 # 超时时间,避免卡壳
# 国内用通义千问,替换成以下配置
# qwen:
# chat-model:
# api-key: ${QWEN_API_KEY}
# model-name: qwen-max
步骤3:注入使用,暴露REST接口
import dev.langchain4j.model.chat.ChatLanguageModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
// 1. 服务层:封装AI调用逻辑
@org.springframework.stereotype.Service
public class AiService {
@Autowired
private ChatLanguageModel chatModel;
// 调用AI的核心方法
public String askAI(String question) {
return chatModel.generate(question);
}
}
// 2. 控制层:暴露REST接口,供前端调用
@RestController
@RequestMapping("/api/ai")
public class AiController {
@Autowired
private AiService aiService;
// 前端调用:/api/ai/chat?message=你的问题
@GetMapping("/chat")
public String chat(@RequestParam String message) {
try {
return aiService.askAI(message);
} catch (Exception e) {
return "AI服务暂时不可用,请稍后再试";
}
}
}
搞定!启动Spring Boot项目,访问http://localhost:8080/api/ai/chat?message=用Java写一个单例模式,就能看到AI返回的结果,直接对接前端,快速落地生产。
五、实战:5分钟搭建智能客服(综合运用)
结合上面的知识点,快速搭建一个能记住上下文、能调用业务方法的智能客服,直接复用在项目中。
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.data.message.UserMessage;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SmartCustomerService {
private final ChatLanguageModel chatModel;
// 每个用户独立的对话记忆(实际项目中可用Redis存储,区分userId)
private final MessageWindowChatMemory chatMemory;
// 构造方法注入模型
public SmartCustomerService(ChatLanguageModel chatModel) {
this.chatModel = chatModel;
this.chatMemory = MessageWindowChatMemory.withMaxMessages(20); // 保留20条上下文
}
// 处理用户查询(核心方法)
public String handleUserQuery(String userId, String query) {
// 1. 获取历史对话,添加当前查询
List<dev.langchain4j.data.message.ChatMessage> messages = chatMemory.messages();
messages.add(UserMessage.from(query));
// 2. 调用AI生成回复
String response = chatModel.generate(messages);
// 3. 保存对话历史,供下次使用
chatMemory.add(UserMessage.from(query));
chatMemory.add(AiMessage.from(response));
return response;
}
}
效果实测:
-
用户:“你们的退货政策是什么?” → AI:“退货需在签收后7天内申请,需保持商品完好,无破损...”
-
用户:“那我已经签收3天了,能退吗?” → AI:“可以的,你目前仍在7天退货期限内,可前往个人中心申请退货,需上传商品完好照片...”
完全模拟真实客服场景,AI能记住上下文,不用用户重复说明情况,极大提升用户体验。
六、新手必看:学习路线+常见问题FAQ(避坑指南)
1. 新手学习路线(4周搞定,循序渐进)
-
第1周:基础入门(环境搭建 → 第一个AI程序 → 对话记忆 → 提示词模板)
-
第2周:进阶功能(工具调用 → 流式响应SSE → RAG文档问答)
-
第3周:工程化(Spring Boot集成 → 多模型切换 → 性能优化)
-
第4周:实战项目(智能客服/AI代码生成器/文档问答工具)
2. 常见问题FAQ(解决90%的坑)
Q1:国内访问OpenAI不稳定,怎么办? A:直接替换成阿里云通义千问、百度文心一言,代码修改如下(以通义千问为例):
// 替换OpenAiChatModel为QwenChatModel
QwenChatModel model = QwenChatModel.builder()
.apiKey("你的阿里云通义千问密钥")
.modelName("qwen-max")
.build();
Q2:如何控制AI回答的随机性? A:调整temperature参数(0.0~1.0):
-
0.0~0.3:回答更确定、保守(适合事实问答、代码生成)
-
0.7~1.0:回答更有创意(适合文案、头脑风暴)
Q3:生产环境需要注意什么?(重点) A:4个必做优化:
-
API密钥不要硬编码,用环境变量或配置中心(如Nacos)
-
添加超时和重试机制(避免AI接口卡壳)
-
实现请求限流(防止恶意调用,控制成本)
-
记录调用日志(便于排查问题,追溯AI回复)
七、写在最后(干货总结)
作为Java开发者,我们不用羡慕Python开发者能快速集成AI——LangChain4j已经帮我们打通了所有壁垒,它不是什么高深的技术,就是一个“AI开发脚手架”,让你用熟悉的Java语法,快速落地AI功能。
今天这篇博客,从痛点出发,全程实操,每一步都有可复制的代码,30分钟就能跑通第一个AI程序,一周就能上手实战。你不需要学Python,不需要懂机器学习,只要会写Java,就能给项目加AI,给自己的简历加分。
现在就行动起来:复制文中的第一个示例代码,申请一个API密钥,运行程序,亲眼看到AI的回复——30分钟后,你就拥有了Java AI开发经验!
参考资源(实测可用):
-
LangChain4j官方文档:https://docs.langchain4j.dev
-
GitHub仓库(源码+示例):https://github.com/langchain4j/langchain4j
-
官方示例代码:https://github.com/langchain4j/langchain4j-examples
如果这篇博客帮你解决了“Java项目集成AI”的痛点,欢迎点赞、收藏、转发,关注我,后续更新LangChain4j进阶实战(RAG文档问答、流式响应),带你从入门到精通!
评论区留言:你最想用LangChain4j实现什么功能?(比如智能客服、代码生成),我会一一回复,帮你落地!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)