
在Java大模型开发领域,大家熟知的框架无非三类:Spring AI、AgentScope、LangChain4j。
很多开发者会纠结:到底哪个框架最适合生产落地?
Spring AI 胜在 Spring 生态原生集成,标准化强;AgentScope 胜在智能体工程化,多Agent协同与生产底座完善;而 LangChain4j 是目前 Java 生态活跃度最高、组件最丰富、社区最成熟的大模型应用开发框架。
它是 Python 顶流框架 LangChain 的纯正 Java 重构版,并非简单移植,而是针对 Java 面向对象、Spring 生态、工程化场景做了深度适配优化,完美适配企业级 RAG知识库、智能Agent、工具调用、对话机器人、文档问答 等核心场景。
本文从零带大家吃透 LangChain4j:核心定位、核心架构、关键能力、完整 Spring Boot 实战、RAG落地案例、工具调用实战、主流框架选型对比、生产避坑指南,一篇搞定Java大模型应用开发。
LangChain4j 是专为 Java/Kotlin 开发者打造的大语言模型应用开发框架,提供统一、标准化的API,屏蔽各类大模型、向量数据库、文档解析的底层差异,让Java开发者无需重复造轮子,快速构建稳定、可扩展的AI业务应用。
不同于专注Agent工程化的框架,LangChain4j 的核心定位是:一站式大模型应用开发工具箱,覆盖从基础对话、记忆管理、文档解析、向量检索、RAG检索增强、智能工具调用、链式编排、Agent智能体的全链路能力。
LangChain4j 整体架构分层清晰,五大核心模块支撑所有AI业务能力:
很多开发者纠结 LangChain4j vs Spring AI vs AgentScope,三者定位完全不同,没有绝对优劣,只有场景适配差异:
对比维度 | LangChain4j | Spring AI | AgentScope |
|---|---|---|---|
核心定位 | 全场景大模型应用开发工具箱,RAG/工具调用最强 | Spring生态标准化大模型集成方案 | 企业级智能体工程化框架,专注Agent生产落地 |
RAG能力 | 原生顶配,组件完善、开箱即用 | 基础可用,高阶能力需自研封装 | 适配较弱,主打Agent而非检索增强 |
工具/函数调用 | 原生完善,注解极简开发 | 基础支持,代码偏繁琐 | 侧重Agent编排,工具生态薄弱 |
多Agent协同 | 基础支持,需手动编排 | 弱支持,几乎无原生能力 | 原生顶配,生产级多Agent底座 |
生态活跃度 | 最高,社区迭代最快 | 中等,依赖Spring官方迭代 | 新兴框架,增长快但生态偏小 |
适用场景 | 知识库问答、RAG系统、工具类AI应用、文档AI | Spring项目简单AI集成、标准化调用 | 复杂多智能体、长期运行生产Agent系统 |
选型结论:做RAG知识库、文档问答、工具调用AI应用,优先选 LangChain4j;纯Spring项目轻量化集成选Spring AI;复杂多Agent业务系统选AgentScope。
本节提供企业级完整落地代码,包含环境搭建、基础对话、流式响应、多轮记忆、工具调用、RAG检索增强,全覆盖核心能力。
<!-- Spring Boot 基础依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- LangChain4j 核心依赖 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>1.0.0-beta1</version>
</dependency>
<!-- OpenAI模型适配包 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
<version>1.0.0-beta1</version>
</dependency>
<!-- 内存向量库(测试使用,生产替换Milvus) -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-chroma</artifactId>
<version>1.0.0-beta1</version>
</dependency>spring:
application:
name: langchain4j-demo
# LangChain4j 大模型配置
langchain4j:
open-ai:
chat-model:
api-key: sk-xxxxxxxxxxxxxxxxxxxxxx
model-name: gpt-3.5-turbo
temperature: 0.3
timeout: 30s
streaming-chat-model:
api-key: sk-xxxxxxxxxxxxxxxxxxxxxx
model-name: gpt-3.5-turbo
embedding-model:
api-key: sk-xxxxxxxxxxxxxxxxxxxxxx
model-name: text-embedding-ada-002流式对话是前端AI问答必备能力,实现打字机实时响应效果,LangChain4j原生支持,无需手动处理流数据。
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.openai.OpenAiStreamingChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
@RestController
public class ChatController {
// 普通对话模型
@Autowired
private OpenAiChatModel chatModel;
// 流式对话模型
@Autowired
private OpenAiStreamingChatModel streamingChatModel;
/**
* 普通问答接口
*/
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatModel.chat(message);
}
/**
* 流式对话接口(前端打字机效果)
*/
@GetMapping(value = "/stream/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamChat(@RequestParam String message) {
return Flux.create(sink -> streamingChatModel.chat(message, response -> {
if (response != null && response.content() != null) {
sink.next(response.content());
}
}));
}
}LangChain4j原生支持对话记忆,自动维护上下文,无需开发者手动拼接历史对话,同时支持内存、数据库等多种持久化方式。
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.service.AiServices;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AiChatConfig {
// 定义AI对话接口(声明式编程)
public interface ChatAssistant {
String chat(String message);
}
/**
* 构建带记忆的AI对话Bean
* 保留最近10轮对话,避免上下文膨胀
*/
@Bean
public ChatAssistant chatAssistant(OpenAiChatModel chatModel) {
return AiServices.builder(ChatAssistant.class)
.chatModel(chatModel)
.chatMemory(MessageWindowChatMemory.withMaxMessages(10))
.build();
}
}工具调用是AI落地业务的核心能力,让大模型可以调用外部接口、查询数据、执行业务逻辑,LangChain4j通过注解极简实现。
import dev.langchain4j.agent.tool.Tool;
import org.springframework.stereotype.Component;
/**
* 自定义业务工具:天气查询工具
*/
@Component
public class WeatherTool {
/**
* 大模型可自动调用该工具查询天气
*/
@Tool("根据城市名称查询实时天气")
public String getWeather(String city) {
// 模拟调用天气接口
return city + " 当前天气:晴,25℃,微风";
}
}注入工具实现智能调用:
@Bean
public ChatAssistant toolChatAssistant(OpenAiChatModel chatModel, WeatherTool weatherTool) {
return AiServices.builder(ChatAssistant.class)
.chatModel(chatModel)
.chatMemory(MessageWindowChatMemory.withMaxMessages(10))
.tools(weatherTool)
.build();
}测试效果:用户提问「北京今天天气怎么样」,大模型会自动识别并调用自定义工具,返回真实业务数据,而非空想回答。
RAG检索增强生成是目前企业落地最多、最稳定的AI场景,有效解决大模型幻觉、知识滞后、私有数据无法问答的问题。下面实现完整可上线的私有文档问答系统。
文档加载 → 文本切片 → 向量化 → 向量库存储 → 用户提问 → 问题向量化 → 相似度检索 → 上下文拼接 → 大模型问答
import dev.langchain4j.data.document.Document;
import dev.langchain4j.data.document.loader.FileSystemDocumentLoader;
import dev.langchain4j.data.document.splitter.DocumentSplitters;
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.retriever.EmbeddingStoreContentRetriever;
import dev.langchain4j.store.embedding.chroma.ChromaEmbeddingStore;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@Configuration
public class RagConfig {
@Autowired
private EmbeddingModel embeddingModel;
/**
* 初始化向量存储(生产替换为Milvus集群)
*/
@Bean
public ChromaEmbeddingStore embeddingStore() {
return ChromaEmbeddingStore.builder()
.baseUrl("http://localhost:8000")
.collectionName("company-knowledge")
.build();
}
/**
* 文档入库:加载本地文档、切片、向量化、存入向量库
*/
@Bean
public Boolean loadDocument(ChromaEmbeddingStore embeddingStore) {
// 1. 加载本地知识库文档
Document document = FileSystemDocumentLoader.loadDocument("doc/company-rule.txt");
// 2. 文本切片:单段500字符,重叠100字符,保证上下文连贯
List<TextSegment> segments = DocumentSplitters.recursive(500, 100).split(document);
// 3. 批量向量化并入库
List<Embedding> embeddings = embeddingModel.embedAll(segments).content();
embeddingStore.addAll(embeddings, segments);
return true;
}
/**
* 构建检索器:控制检索精度与数量
*/
@Bean
public EmbeddingStoreContentRetriever retriever(ChromaEmbeddingStore embeddingStore) {
return EmbeddingStoreContentRetriever.builder()
.embeddingStore(embeddingStore)
.embeddingModel(embeddingModel)
.maxResults(5) // 最多返回5条相关片段
.minScore(0.7) // 相似度阈值,过滤无效低匹配内容
.build();
}
}import dev.langchain4j.service.AiServices;
import dev.langchain4j.store.embedding.EmbeddingStoreContentRetriever;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RagChatConfig {
public interface RagChatAssistant {
String chat(String message);
}
@Autowired
private EmbeddingStoreContentRetriever retriever;
@Bean
public RagChatAssistant ragChatAssistant(OpenAiChatModel chatModel) {
return AiServices.builder(RagChatAssistant.class)
.chatModel(chatModel)
.contentRetriever(retriever)
.build();
}
}基于RAG能力,实现员工手册、规章制度、产品文档、售后手册智能问答,替代人工客服与文档检索,大幅降低企业咨询成本。
通过工具调用能力,整合天气查询、订单查询、数据统计、接口调用等业务能力,实现自然语言操作业务系统。
支持PDF、Word、TXT文档解析、总结、翻译、问答、内容提取,适配办公自动化、法务文档审核、学术资料整理场景。
依托原生流式响应能力,快速搭建C端AI对话机器人、智能客服、AI陪伴产品,提升用户交互体验。
如果说 Spring AI 是「Spring生态的标准化适配器」,AgentScope 是「多智能体的工程化底座」,那么LangChain4j 就是Java大模型应用的全能开发工具箱。
它凭借成熟的RAG体系、极简的工具调用、丰富的文档处理能力、活跃的社区生态、无缝的Spring集成,成为目前企业落地AI知识库、文档问答、智能工具系统的首选框架。
对于绝大多数Java开发者而言:做业务AI应用选LangChain4j,做多智能体系统选AgentScope,做轻量化Spring集成选Spring AI。
掌握 LangChain4j,就掌握了 Java 生态 90% 以上的大模型业务落地能力,是Java开发者进阶AI工程师的必备技能。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。