跳到主要内容
Java AI java
LangChain4j 集成 Spring Boot 完整教程 LangChain4j 集成 Spring Boot 教程,涵盖环境要求、依赖配置、模型密钥设置、核心开发用法(ChatLanguageModel 注入与 AiService 声明式接口)、多轮对话记忆及常见问题排查。适配 JDK 17+ 与 Spring Boot 3.x,提供 OpenAI 及本地 Ollama 模型配置示例。
kaikai 发布于 2026/3/28 更新于 2026/5/23 28 浏览LangChain4j 集成 Spring Boot 完整教程
遵循官方文档核心流程,为你整理可直接落地的分步指南 + 代码示例 + 避坑要点,适配最新版 LangChain4j,零基础也能快速集成。
一、核心前置要求
官方明确的环境约束(必须满足,否则会出现依赖冲突/启动失败):
JDK 版本:17 及以上(LangChain4j 基于 Java 17 开发,向下不兼容)
Spring Boot 版本:3.0.x / 3.1.x / 3.2.x(推荐 3.2.x,生态最完善)
构建工具:Maven 3.8+ 或 Gradle 7.5+(本文以 Maven 为例)
二、第一步:创建 Spring Boot 项目并引入核心依赖
方式 1:快速初始化(推荐)
直接访问 Spring Initializr ,快速生成项目骨架:
Project: Maven Project
Language: Java
Spring Boot: 3.2.x
Java: 17
Dependencies: 仅需勾选 Spring Web(基础 Web 能力,按需选择)
方式 2:手动配置 pom.xml 依赖
在 Spring Boot 项目的 pom.xml 中,添加 LangChain4j 核心依赖 + LLM 模型适配依赖(核心必加),完整依赖如下:
关键说明:LangChain4j 采用「核心包 + 模型适配器」解耦设计,必须同时引入「核心包」+「你要对接的大模型依赖」(示例用 OpenAI,支持阿里通义/百度文心/本地模型等)
<dependency >
<groupId > dev.langchain4j</groupId >
<artifactId > langchain4j-spring-boot-starter</artifactId >
<version > 0.26.0</version >
</dependency >
<dependency >
<groupId > dev.langchain4j</groupId >
<artifactId > langchain4j-open-ai-spring-boot-starter
0.26.0
org.springframework.boot
spring-boot-starter-web
</artifactId >
<version >
</version >
</dependency >
<dependency >
<groupId >
</groupId >
<artifactId >
</artifactId >
</dependency >
其他模型依赖替换(按需选择):
阿里通义千问:langchain4j-qwen-spring-boot-starter
百度文心一言:langchain4j-ernie-spring-boot-starter
本地模型(LLaMA/通义千问本地化):langchain4j-ollama-spring-boot-starter
Azure OpenAI:langchain4j-azure-open-ai-spring-boot-starter
三、第二步:配置大模型密钥(核心) 在项目的 src/main/resources/application.yml(或 application.properties)中,配置大模型的 API 密钥、基础地址,LangChain4j 会自动完成客户端注入,无需手动创建 Bean。
示例 1:对接 OpenAI(GPT-3.5/4)配置
langchain4j:
open-ai:
api-key: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
chat-model:
model-name: gpt-3.5-turbo
timeout: 30s
示例 2:对接本地 Ollama 模型(本地化部署,无网络依赖) langchain4j:
ollama:
base-url: http://localhost:11434
chat-model:
model-name: qwen:7b
核心注意:API-Key 必须真实有效,否则会报「401 Unauthorized」认证错误;国内访问 OpenAI 需要配置代理,可在配置中追加 proxy-host/proxy-port;所有配置项均以 langchain4j.xxx 为前缀,框架会自动绑定配置。
四、第三步:核心开发(2 种主流用法,覆盖 90% 场景) LangChain4j 集成 Spring Boot 的核心优势:基于「声明式 API」+「Spring 自动注入」,无需编写复杂的 LLM 客户端代码,仅需定义接口 + 注解,即可实现大模型调用。
用法 1:极简用法 - 直接注入 ChatLanguageModel(快速调用) 这是官方推荐的基础用法,直接注入框架自动创建的 ChatLanguageModel Bean,一行代码调用大模型,适合简单对话场景。
编写测试 Controller 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.RestController;
@RestController
public class ChatController {
@Autowired
private ChatLanguageModel chatLanguageModel;
@GetMapping("/chat")
public String chat (@RequestParam String message) {
return chatLanguageModel.generate(message);
}
}
用法 2:高级用法 - 声明式 AI Service(核心推荐,生产级) 这是 LangChain4j 的灵魂用法,也是官方重点推荐的方式:仅定义一个接口,无需实现类,框架会自动为接口生成代理实现,支持对话、工具调用、记忆、提示词模板等高级能力,完全贴合 Spring 开发习惯。
步骤 1:定义 AI Service 接口(核心,无实现类) import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.spring.AiService;
@AiService
public interface AssistantService {
@SystemMessage("你是一个专业的 Java 开发助手,回答简洁、准确,只提供技术干货")
String chatWithJavaExpert (@UserMessage String userQuestion) ;
@SystemMessage("你是一个翻译专家,将{sourceLang}翻译成{targetLang},保持语义不变")
String translate (@UserMessage String content, String sourceLang, String targetLang) ;
}
步骤 2:注入并使用 AI Service(和普通 Spring 服务完全一致) 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.RestController;
@RestController
public class AiController {
@Autowired
private AssistantService assistantService;
@GetMapping("/ai/ask")
public String askJava (@RequestParam String question) {
return assistantService.chatWithJavaExpert(question);
}
@GetMapping("/ai/translate")
public String translate (@RequestParam String content, @RequestParam String sourceLang, @RequestParam String targetLang) {
return assistantService.translate(content, sourceLang, targetLang);
}
}
该方式核心优势(生产级必用):
无实现类:仅定义接口,极大简化开发;
提示词解耦:通过注解管理提示词,无需硬编码;
高度可扩展:支持函数调用、上下文记忆、多轮对话、输出格式化等;
Spring 原生兼容:支持依赖注入、AOP、事务等 Spring 特性。
五、第四步:启动并测试项目
1. 启动 Spring Boot 应用 直接运行项目的启动类(xxxApplication.java),控制台无报错即启动成功,框架会打印如下关键日志(说明大模型客户端注入成功):
2. 接口测试(2 种方式)
方式 1:浏览器/Postman 直接调用
方式 2:单元测试(推荐) 在 src/test/java 下编写单元测试,无需启动 Web 服务即可验证:
import com.example.demo.service.AssistantService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Langchain4jDemoApplicationTests {
@Autowired
private AssistantService assistantService;
@Test
void testAiService () {
String result = assistantService.chatWithJavaExpert("什么是 LangChain4j?" );
System.out.println("AI 响应:\n" + result);
}
}
六、官方教程核心扩展(关键知识点)
1. 核心注解速查表(开发必备) LangChain4j 为 Spring 集成提供了专属注解,是开发的核心,整理官方核心注解如下:
注解 作用 @AiService标记接口为 AI 服务,框架自动生成代理实现类(核心) @SystemMessage定义系统提示词,约束 AI 角色、行为(支持静态文本/动态参数) @UserMessage标记用户输入的占位符,接收方法参数 @AssistantMessage标记 AI 的历史回复,用于多轮对话上下文管理 @MemoryId标记会话 ID,实现多轮对话记忆(不同用户隔离会话)
2. 多轮对话记忆(生产级必备) 基于 @MemoryId 实现会话级记忆,让 AI 记住上下文,官方示例改造如下:
@AiService
public interface ChatService {
String chat (@MemoryId String sessionId, @UserMessage String userMessage) ;
}
调用时传入唯一的 sessionId(如用户 ID),即可实现多轮对话上下文关联。
3. 依赖版本管理(避坑关键) 官方强调:LangChain4j 的所有依赖必须保持版本一致,否则会出现类冲突、方法找不到等问题。
最佳实践:在 pom.xml 中统一管理版本号:
<properties >
<langchain4j.version > 0.26.0</langchain4j.version >
</properties >
<dependencies >
<dependency >
<groupId > dev.langchain4j</groupId >
<artifactId > langchain4j-spring-boot-starter</artifactId >
<version > ${langchain4j.version}</version >
</dependency >
<dependency >
<groupId > dev.langchain4j</groupId >
<artifactId > langchain4j-open-ai-spring-boot-starter</artifactId >
<version > ${langchain4j.version}</version >
</dependency >
</dependencies >
七、常见问题&避坑指南(官方文档未明确,实操总结)
问题 1:启动报错 java: 无法访问 dev.langchain4j.service.spring.AiService 原因:JDK 版本低于 17,LangChain4j 基于 Java17 开发,必须升级 JDK 到 17+。
问题 2:调用接口报 401 Unauthorized 原因:API-Key 配置错误/过期,或 OpenAI 代理配置失效,核对:
application.yml 中 api-key 是否正确;
国内环境需配置代理:
langchain4j:
open-ai:
api-key: sk-xxx
proxy-host: 127.0 .0 .1
proxy-port: 7890
问题 3:ChatLanguageModel 注入失败(No qualifying bean) 原因:缺少模型适配器依赖(仅加了核心包,未加 OpenAI/Ollama 等适配器),必须同时引入「核心包 + 模型适配器」。
问题 4:响应超时 TimeoutException langchain4j:
open-ai:
chat-model:
timeout: 60s
八、总结(官方教程核心精华) 本次基于 LangChain4j 官方 Spring Boot 集成教程,提炼出核心落地流程,关键要点如下:
环境约束:JDK17+ + Spring Boot3.x,版本必须匹配;
依赖原则:核心启动器 + 模型适配器缺一不可;
配置核心:通过 langchain4j.xxx 前缀配置模型密钥/地址,框架自动注入客户端;
开发 2 种方式:
极简:注入 ChatLanguageModel 快速调用;
生产:用 @AiService 声明接口,框架自动实现(推荐);
核心优势:完全贴合 Spring 开发习惯,无侵入、低代码、高扩展。
进阶方向(官方教程后续内容):可继续学习「工具调用(Function Calling)」「向量数据库集成」「本地模型部署」「多模态支持」,这些都是 LangChain4j 的核心能力,适配企业级 AI 应用开发。
相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online