一、为什么需要 LangChain4j?
2023 年以来,大语言模型(LLM)爆发式增长,OpenAI、DeepSeek、通义千问、智谱 GLM 等模型层出不穷。Java 开发者面临一个尴尬的问题:
-
直接调用 HTTP API:代码重复、JSON 解析繁琐、异常处理麻烦
-
各个模型 SDK 不统一:换一个模型就要重写一套调用逻辑
-
缺少高级功能:多轮对话、工具调用、RAG 检索等都需要自己实现
LangChain4j 的出现,就是为了解决这些问题。
它借鉴了 Python 生态中著名的 LangChain 框架的设计理念,但完全基于 Java 开发,为 Java 开发者提供了一套统一、简洁、功能完备的大模型应用开发框架。
二、LangChain4j 是什么?
LangChain4j 是一个 Java 框架,旨在简化大语言模型(LLM)应用的开发。
它的核心设计理念是:
-
统一抽象:所有大模型都通过统一的
ChatLanguageModel接口调用 -
模块化:核心模块 + 各个模型的扩展模块,按需引入
-
Spring Boot 友好:提供 Starter,无缝整合 Spring Boot 生态
核心模块
| 模块 | 说明 |
|---|---|
langchain4j-core | 核心 API,包含 ChatLanguageModel、UserMessage、AiMessage 等 |
langchain4j-open-ai | OpenAI 及兼容接口(DeepSeek、智谱等)的实现 |
langchain4j-ollama | 本地部署的 Ollama 模型支持 |
langchain4j-dashscope | 阿里云百炼(通义千问)支持 |
langchain4j-spring-boot-starter | Spring Boot 整合,提供 @AiService 等高级功能 |
langchain4j-open-ai-spring-boot-starter | OpenAI 模型的 Spring Boot Starter |
三、LangChain4j 解决了什么问题?
问题一:重复的 HTTP + JSON 处理
之前(直接调 API):
// 每次调用都要写 10+ 行代码
String json = "{\"model\":\"deepseek-chat\",\"messages\":[{\"role\":\"user\",\"content\":\"" + msg + "\"}]}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.deepseek.com/v1/chat/completions"))
.header("Authorization", "Bearer sk-xxx")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
String answer = mapper.readTree(response.body()).path("choices").get(0).path("message").path("content").asText();
现在(用 LangChain4j):
// 一行搞定
String answer = model.generate("你好");
问题二:各模型 API 不统一
| 模型 | API 地址 | 请求格式 | 响应格式 |
|---|---|---|---|
| OpenAI | api.openai.com | OpenAI 格式 | OpenAI 格式 |
| DeepSeek | api.deepseek.com | OpenAI 兼容 | OpenAI 兼容 |
| 通义千问 | dashscope.aliyuncs.com | 自有格式 | 自有格式 |
| 智谱 GLM | open.bigmodel.cn | 自有格式 | 自有格式 |
LangChain4j 的统一抽象:
// 不管底层是什么模型,调用方式完全一样
ChatLanguageModel model = ...; // 可以是任何模型
String answer = model.generate("你好");
切换模型只需要改配置,代码零改动。
问题三:缺少高级功能
| 功能 | 直接调 API | LangChain4j |
|---|---|---|
| 多轮对话记忆 | 手动维护 List<Message> | ChatMemory 自动管理 |
| 系统提示词 | 手动拼接到消息列表 | @SystemMessage 注解 |
| 流式输出 | 手动处理 SSE/NDJSON | StreamingChatModel 内置 |
| 工具调用 | 手动解析 JSON Schema | @Tool 注解 |
| RAG 检索 | 自行实现向量检索 | EmbeddingStore + Retriever |
四、LangChain4j 的核心 API
1. ChatLanguageModel —— 最核心的接口
public interface ChatLanguageModel {
// 同步调用
String generate(String userMessage);
ChatResponse chat(ChatRequest request);
// 流式调用
void chat(ChatRequest request, StreamingChatResponseHandler handler);
}
2. 模型构建 —— Builder 模式
// 构建 OpenAI 模型
OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey("sk-xxx")
.baseUrl("https://api.deepseek.com")
.modelName("deepseek-chat")
.temperature(0.7)
.logRequests(true)
.build();
// 构建 Ollama 本地模型
OllamaChatModel model = OllamaChatModel.builder()
.baseUrl("http://localhost:11434")
.modelName("qwen2.5:7b")
.build();
3. Spring Boot Starter —— 零配置启动
application.properties:
langchain4j.open-ai.chat-model.api-key=sk-xxx
langchain4j.open-ai.chat-model.base-url=https://api.deepseek.com
langchain4j.open-ai.chat-model.model-name=deepseek-chat
Java 代码:
@Service
public class ChatService {
@Autowired
private ChatLanguageModel model; // Spring 自动注入
public String chat(String msg) {
return model.generate(msg);
}
}
五、LangChain4j 的架构
┌─────────────────────────────────────────────────────────────┐
│ 应用层(你的业务代码) │
│ @AiService 接口 / ChatService / Controller │
└──────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────┐
│ langchain4j-spring-boot-starter │
│ 自动配置、@AiService 代理、ChatMemory 管理 │
└──────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────┐
│ langchain4j-core │
│ ChatLanguageModel / ChatRequest / ChatResponse / 工具类 │
└──────────────────────────┬──────────────────────────────────┘
│
┌──────────┬───────────────┼───────────────┬──────────────────┐
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌──────┐ ┌──────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│OpenAI│ │Ollama│ │ DashScope │ │ Azure │ │ ... │
│ │ │ │ │ (通义千问) │ │ OpenAI │ │ │
└──────┘ └──────┘ └──────────┘ └──────────┘ └──────────┘
六、实战:5 分钟快速接入
Step 1:添加依赖(Spring Boot 2.7.x)
<properties>
<langchain4j.version>0.33.0</langchain4j.version>
</properties>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
<version>${langchain4j.version}</version>
</dependency>
</dependencies>
Step 2:配置 application.properties
langchain4j.open-ai.chat-model.base-url=https://api.deepseek.com
langchain4j.open-ai.chat-model.api-key=sk-xxx
langchain4j.open-ai.chat-model.model-name=deepseek-chat
Step 3:写代码
@RestController
public class ChatController {
@Autowired
private ChatLanguageModel model;
@GetMapping("/chat")
public String chat(@RequestParam String msg) {
return model.generate(msg);
}
}
完成! 一个 AI 聊天接口就写好了。
七、版本兼容性说明
| LangChain4j 版本 | Spring Boot | JDK | 说明 |
|---|---|---|---|
| 0.33.0 | 2.7.x | 8/11/17 | ✅ 稳定推荐 |
| 1.0.0-beta3 | 2.7.x | 8/11/17 | 较旧,API 有变化 |
| 1.15.0-beta25+ | 3.x | 17+ | 新版本,需要 Spring Boot 3.x |
⚠️ 注意:1.15.0+ 版本需要 Spring Boot 3.x(要求 Java 17),且包名从
javax改为jakarta。
八、总结
LangChain4j 的核心价值
| 价值 | 说明 |
|---|---|
| 统一抽象 | 一套 API 对接所有主流大模型 |
| 代码简洁 | 从 10+ 行 HTTP 调用变成 1 行 generate() |
| 功能丰富 | 多轮对话、工具调用、RAG、流式输出等开箱即用 |
| Spring Boot 整合 | Starter 自动配置,完美融入 Spring 生态 |
| 生产级特性 | 重试、超时、日志、异常处理等企业级功能 |
适用场景
-
✅ 需要对接多个大模型(OpenAI、DeepSeek、通义千问等)
-
✅ 需要多轮对话记忆
-
✅ 需要工具调用(Function Calling)
-
✅ 需要 RAG 检索增强
-
✅ 需要流式输出
-
✅ Spring Boot 项目
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2403_89732016/article/details/163640554



