在企业级实际开发中,单纯的大模型调用远远不够——比如复杂的提示词工程、多数据源上下文整合、大模型与业务系统的深度联动、向量数据库适配等场景,Spring AI的封装就显得不够灵活。

今天这篇,我们就延续整套技术栈(Java17+/Spring Boot3+Gradle),结合 LangChain4j这个强大的大模型开发框架,手把手教大家打造企业级大模型应用,全程基于开源示例源码开发,所有代码可直接拉取运行,还会衔接前文的AI实战经验,帮大家快速打通“大模型调用→业务落地”的最后一公里!

先划重点:本文所有实战内容均与开源源码完全同步,注释完整、步骤清晰,无需从零封装,新手也能快速上手,同时补充LangChain4j与Spring AI的选型对比,帮你在实际项目中快速决策!

一、先搞懂:LangChain4j是什么?为什么企业级开发优先选它?

很多同学会疑惑:已经有了Spring AI,为什么还要学LangChain4j?其实两者定位完全不同,核心差异一句话说清:Spring AI是“Spring生态的大模型调用工具”,LangChain4j是“大模型应用开发框架”。

LangChain4j 是专为Java开发者设计的大模型应用开发框架,封装了提示词工程、上下文管理、多模型适配、向量存储、工具调用等核心能力,能帮我们快速构建复杂的大模型应用,而非单纯的“调用大模型接口”。

核心优势(贴合企业级开发场景)

  • ✅ 轻量灵活:无侵入式集成Spring Boot3,配置简单,可与Spring AI共存,按需选型

  • ✅ 功能强大:内置提示词模板、聊天记忆、工具调用、向量存储适配,覆盖企业级大模型应用全场景

  • ✅ 多模型适配:无缝对接通义千文、GPT、文心一言等所有主流大模型,切换无需修改核心代码

  • ✅ 源码友好:纯Java编写,API设计简洁,与我们前序实战的技术栈完美兼容,学习成本低

  • ✅ 生态完善:支持对接向量数据库(Chroma、Milvus)、业务数据库,轻松实现大模型与业务系统联动

LangChain4j vs Spring AI(选型不踩坑)

对比维度 LangChain4j Spring AI
定位 大模型应用开发框架(侧重复杂应用构建) Spring生态大模型调用工具(侧重简单调用)
核心能力 提示词工程、工具调用、向量存储、复杂上下文管理 大模型接口封装、简单流式响应、基础聊天记忆
适用场景 企业级复杂大模型应用(如智能客服、知识库问答) 轻量级AI功能(如简单问答、文本生成)
集成成本 略高(功能多,需了解核心组件) 极低(Spring自动配置,一行代码调用)

简单来说:小项目、轻需求,用Spring AI最快;大项目、复杂需求,优先选LangChain4j——这也是我们今天聚焦LangChain4j的核心原因,帮大家搞定企业级大模型应用开发。

二、实战准备:技术栈+源码拉取(完全延续前序体系)

本次实战全程复用前序推文的技术栈,仅新增LangChain4j相关依赖,保证技术体系的统一性,无需学习新的陌生组件,快速上手!

  1. 完整技术栈清单
组件类型 具体技术/版本 核心作用 复用/新增
基础环境 Java17+、Gradle8.5+ 项目构建和运行 完全复用
核心框架 Spring Boot3.4.5 微服务/项目核心框架 完全复用
大模型框架 LangChain4j 0.32.0 构建企业级大模型应用 新增
大模型服务 阿里云通义千文(qwen-plus) 提供AI问答/生成能力 完全复用(衔接上一篇)
大模型SDK 阿里云DashScope SDK2.13.0 通义千文官方调用SDK 完全复用
响应式框架 Spring WebFlux 实现AI流式响应,提升体验 完全复用
工具类 Lombok1.18.30 简化代码编写 完全复用
  1. 源码拉取(核心前提)

本次实战所有代码均基于开源示例工程开发,源码已做好完整封装,可直接拉取、配置、运行,无需手动编写核心代码:

bash # 拉取开源源码(需安装Git,无Git可直接下载ZIP) # 拉取完成后,用IntelliJ IDEA打开项目,等待Gradle自动同步依赖 # 无需手动下载依赖,IDE会自动处理,同步完成后即可开始配置

开源源码地址(可直接复制访问):私信 demo-langchain4j

  1. 核心依赖配置(Gradle,源码已内置)

源码中已做好完整的依赖管理,无需手动添加,核心依赖如下(重点关注LangChain4j相关),可对照源码查看:

groovy plugins { id ‘java’ id ‘org.springframework.boot’ version ‘3.4.5’ id ‘io.spring.dependency-management’ version ‘1.1.4’ } group = ‘com.devxz’ version = ‘0.0.1-SNAPSHOT’ java { sourceCompatibility = ‘17’ } repositories { mavenCentral() } dependencies { // Spring Boot核心依赖(WebFlux响应式) implementation ‘org.springframework.boot:spring-boot-starter-webflux’ // LangChain4j核心依赖(大模型应用框架) implementation ‘dev.langchain4j:langchain4j-core:0.32.0’ // LangChain4j对接通义千文(核心依赖) implementation ‘dev.langchain4j:langchain4j-alibaba-dashscope:0.32.0’ // LangChain4j聊天记忆(内存实现,可替换为Redis/MongoDB) implementation ‘dev.langchain4j:langchain4j-memory:0.32.0’ // LangChain4j提示词模板(简化提示词工程) implementation ‘dev.langchain4j:langchain4j-prompt-template:0.32.0’ // 通义千文官方SDK(避免依赖冲突,源码已做排除处理) implementation(‘com.alibaba:dashscope-sdk-java:2.13.0’) { exclude group: ‘org.slf4j’, module: ‘slf4j-simple’ } // 工具类 implementation ‘org.projectlombok:lombok:1.18.30’ annotationProcessor ‘org.projectlombok:lombok:1.18.30’ // 测试依赖 testImplementation ‘org.springframework.boot:spring-boot-starter-test’ } tasks.named(‘test’) { useJUnitPlatform() }

三、核心实战:3步跑通LangChain4j大模型应用(源码实操)

开源源码已做好完整封装,我们只需完成“配置API Key→启动项目→测试接口”3步,即可跑通所有核心功能,全程5分钟搞定,新手也能轻松上手!

步骤1:配置通义千文API Key(核心凭证)

与上一篇Spring AI实战一致,LangChain4j调用通义千文也需要阿里云API Key,已申请过的同学可直接复用,未申请的同学参考以下步骤:

1访问阿里云百炼控制台:https://dashscope.aliyun.com/

1注册/登录阿里云账号,完成个人实名认证(无需企业认证);

1进入「应用管理」,创建新应用,直接获取API Key(保存好,后续配置用);

1打开源码中的「src/main/resources/application.yml」,替换API Key,其余配置默认即可:
spring:
application:
name: langchain4j-demo

LangChain4j配置(核心)

langchain4j:
alibaba-dashscope:
api-key: 你的阿里云通义千文API Key# 替换为真实API Key
model: qwen-plus # 模型选择,可切换qwen-turbo/qwen-max
timeout: 30000 # 调用超时时间30秒

服务端口(默认8080,可自定义)

server:
port: 8080

日志配置(便于排查问题)

logging:
level:
dev.langchain4j: DEBUG
com.devxz: DEBUG

步骤2:启动项目(两种方式,按需选择)

源码主启动类已做好配置,无需修改,支持两种启动方式,与前序实战完全一致:

方式1:IDE直接启动(推荐开发测试)

在IDEA中找到主类「com.devxz.Application.java」,右键「Run Application」,等待控制台输出「Started Application in X seconds」,即表示项目启动成功。

java package com.devxz; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
java package com.devxz; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

方式2:Gradle命令行启动(推荐服务器/生产)

bash # 清理项目缓存,避免依赖冲突 ./gradlew clean build # 启动项目 ./gradlew bootRun

步骤3:测试核心接口(源码已内置,直接调用)

项目启动后,默认端口8080,源码内置4个核心接口,覆盖LangChain4j的核心能力,可通过curl、Postman或浏览器直接测试,接口设计简洁,参数清晰:

接口1:基础问答接口(simple/chat)

功能:最基础的大模型调用,与Spring AI的简单问答类似,但LangChain4j做了更优的提示词优化,回答更精准。

bash curl “http://localhost:8080/simple/chat?message=讲解一下LangChain4j和Spring AI的核心区别”

预期效果:接口返回清晰的区别对比,语言简洁、逻辑严谨,贴合技术提问场景。:

接口2:模板化问答接口(template/chat)

功能:基于LangChain4j的提示词模板能力,参数化生成指定格式内容,比Spring AI的模板化更灵活,支持复杂模板。

bash curl “http://localhost:8080/template/chat?subject=LangChain4j&count=4”

预期效果:生成4条关于LangChain4j的核心特性宣传语,每条不超过20字,符合模板要求(模板可在源码中自定义)。

接口3:流式响应接口(stream/chat)

功能:基于LangChain4j+WebFlux实现流式响应,比Spring AI的流式更流畅,支持自定义流式推送频率,前端可直接实现打字机效果。

bash curl -N “http://localhost:8080/stream/chat?message=详细讲解LangChain4j的提示词模板用法”

预期效果:终端实时分段输出AI回答,逐字推送,直至回答完成,无卡顿、无中断。

接口4:上下文连续对话接口(memory/chat)

功能:基于LangChain4j内置的聊天记忆组件,支持上下文连续对话,比Spring AI的内存记忆更强大,支持记忆过期、记忆清理、记忆长度限制。

bash # 第一次对话:建立上下文 curl “http://localhost:8080/memory/chat?sessionId=user456&message=你好,我是一名Java开发者,想学习LangChain4j” # 第二次对话:基于上下文提问 curl “http://localhost:8080/memory/chat?sessionId=user456&message=我刚才说我是什么职业,想学习什么?”

预期效果:第二次提问,AI能准确识别历史上下文,回答“你的职业是Java开发者,想学习LangChain4j”,实现无缝连续对话。

测试截图:

带缓冲的聊天页面截图:

四、源码核心结构解析(易扩展,可复用)

开源源码采用分层解耦设计,完全遵循Spring Boot最佳实践,结构清晰,注释完整,后续扩展二次开发非常方便,核心结构如下(对照源码查看,一目了然):

plain text src/main/java/com/devxz/ ├── Application.java # 主启动类,无业务逻辑,仅负责启动项目 ├── controller/ │ └── LangChain4jController.java # 接口控制器,所有核心接口入口,参数接收和结果返回 ├── config/ │ └── LangChain4jConfig.java # LangChain4j核心配置类,封装大模型、记忆、模板组件 ├── service/ │ ├── LangChain4jService.java # 核心业务服务,封装所有LangChain4j调用逻辑 │ └── TemplateService.java # 提示词模板服务,封装模板加载、参数替换逻辑 └── util/ └── PromptUtil.java # 提示词工具类,存放自定义提示词模板 src/main/resources/ └── application.yml # 全局配置文件,API Key、模型、端口等配置

核心组件解析(源码重点)

我们重点解析LangChain4j的核心配置和服务封装,让大家不仅能跑通项目,还能理解底层原理,轻松二次开发:

  1. LangChain4j核心配置(LangChain4jConfig.java)

源码中已做好自动配置,封装了大模型实例、聊天记忆实例,可直接复用,核心代码如下:

java package com.devxz.config; import dev.langchain4j.memory.chat.MessageWindowChatMemory; import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.aliyun.dashscope.AliyunDashScopeChatModel; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class LangChain4jConfig { // 从配置文件读取API Key和模型名称 @Value(“ s p r i n g . l a n g c h a i n 4 j . a l i b a b a − d a s h s c o p e . a p i − k e y " ) p r i v a t e S t r i n g a p i K e y ; @ V a l u e ( " {spring.langchain4j.alibaba-dashscope.api-key}") private String apiKey; @Value(" spring.langchain4j.alibabadashscope.apikey")privateStringapiKey;@Value("{spring.langchain4j.alibaba-dashscope.model}”) private String modelName; /** * 配置通义千文大模型实例(LangChain4j封装) */ @Bean public ChatLanguageModel chatLanguageModel() { return AliyunDashScopeChatModel.builder() .apiKey(apiKey) .modelName(modelName) .timeout(30000) .build(); } /** * 配置聊天记忆(MessageWindowChatMemory) * 限制最大记忆消息数为10条,避免记忆过长导致提示词溢出 */ @Bean public MessageWindowChatMemory chatMemory() { return MessageWindowChatMemory.withMaxMessages(10); } }
  1. 核心服务封装(LangChain4jService.java)

所有LangChain4j的调用逻辑都封装在此,接口层直接调用,解耦清晰,核心代码(简化版,完整代码见源码):

java package com.devxz.service; import dev.langchain4j.chat.ChatClient; import dev.langchain4j.memory.chat.MessageWindowChatMemory; import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.output.Response; import dev.langchain4j.prompt.Prompt; import dev.langchain4j.prompt.PromptTemplate; import org.springframework.stereotype.Service; import reactor.core.publisher.Flux; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @Service public class LangChain4jService { // 注入大模型实例和聊天记忆 private final ChatLanguageModel chatLanguageModel; private final MessageWindowChatMemory chatMemory; // 用ConcurrentHashMap存储不同会话的记忆(线程安全) private final MapsessionMemory = new ConcurrentHashMap<>(); // 构造器注入 public LangChain4jService(ChatLanguageModel chatLanguageModel, MessageWindowChatMemory chatMemory) { this.chatLanguageModel = chatLanguageModel; this.chatMemory = chatMemory; } /** * 基础问答 */ public String simpleChat(String message) { // 构建ChatClient,直接调用大模型 ChatClient chatClient = ChatClient.builder() .chatLanguageModel(chatLanguageModel) .build(); // 发起同步调用,返回AI回答 Responseresponse = chatClient.generate(message); return response.content(); } /** * 模板化问答(核心:LangChain4j提示词模板) */ public String templateChat(String subject, int count) { // 定义提示词模板(可抽取到配置文件,更灵活) String template = “请为{subject}生成{count}条宣传语,每条不超过20字,简洁有吸引力”; // 构建模板,替换参数 PromptTemplate promptTemplate = PromptTemplate.from(template); Prompt prompt = promptTemplate.apply(Map.of(“subject”, subject, “count”, count)); // 调用大模型 return chatLanguageModel.generate(prompt.text()).content(); } // 流式响应、上下文对话方法见源码,封装逻辑类似,注释完整 }

五、实战避坑指南(解决开发中90%的问题)

结合源码实操和前序实战经验,整理了4个最常见的坑点,包含现象和解决方案,遇到问题直接对照排查,无需踩坑:

坑点1:API Key配置错误,调用失败

现象:调用接口返回401、“API Key无效”、“认证失败”等提示;

解决方案:检查application.yml中的api-key是否为阿里云百炼控制台生成的真实Key,无空格、无拼写错误,确认API Key未过期。

坑点2:依赖冲突(最常见,源码已规避)

现象:项目启动失败,提示“SLF4J绑定异常”“依赖版本冲突”;

原因:DashScope SDK自带的slf4j-simple日志依赖,与Spring Boot默认日志框架冲突;

解决方案:源码中已通过exclude排除冲突依赖,无需手动处理;若自行添加依赖,需注意排除slf4j-simple。

坑点3:流式响应中断、卡顿

现象:流式接口调用时,内容推送中途停止,或推送速度极慢;

解决方案:调大application.yml中的timeout配置(如30000ms→50000ms),避免大模型响应超时;检查网络连接,避免波动。

坑点4:上下文对话无记忆

现象:多次调用记忆接口,AI无法识别历史上下文;

解决方案:确认两次调用使用相同的sessionId(会话唯一标识);检查ChatMemory配置,确保maxMessages设置合理(非0)。

六、扩展建议:从Demo到企业级项目(源码可直接扩展)

本次开源源码是基础Demo,基于此可快速扩展为企业级大模型应用,推荐以下3个核心扩展方向,贴合实际业务需求:

  1. 聊天记忆持久化(核心)

当前源码采用内存记忆,项目重启后记忆丢失,可扩展为:将聊天记忆存储到Redis、MongoDB中,实现持久化,支持分布式部署,源码中可直接替换ChatMemory实现。

  1. 集成向量数据库,实现知识库问答

LangChain4j完美支持向量数据库(Chroma、Milvus等),可将企业文档、业务手册导入向量库,实现“知识库问答”(如用户提问业务相关问题,AI基于知识库回答),贴合企业实际需求。

  1. 工具调用,实现大模型与业务系统联动

利用LangChain4j的工具调用能力,让大模型可以调用业务接口(如查订单、查库存),实现“AI提问→调用业务接口→返回结果”的闭环,真正融入企业业务系统(衔接我们前序的订单-库存微服务)。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐