大家好,我是直奔标杆,专注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实现什么功能?(比如智能客服、代码生成),我会一一回复,帮你落地!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐