大模型开发框架 —— LangChain4j
LangChain4j 是 JVM 生态中模块化、灵活度极高、RAG/Agent 能力成熟的大模型应用开发框架,主打零框架依赖、声明式 API、全链路 RAG、强 Agent 与工具调用、多模型 / 向量库全覆盖,社区活跃且更新极快。下面从定位、架构、核心特点、关键能力与适用场景展开详细说明。
一、核心定位
LangChain4j 是为Java/Kotlin 生态打造的,非 Spring 专属,可独立使用或集成任意 Java 框架(Spring Boot、Quarkus、Micronaut)。
有如下的设计理念:
模块化:组件化积木式设计,按需引入,无强制依赖。
灵活优先:低阶 API 可控、高阶 API 简洁,平衡自由度与开发效率。
Java 原生:拥抱接口、注解、POJO、流式(Flux)等 JVM 范式。
生产就绪:内置重试、缓存、限流、可观测性,适配企业级高可用场景。
二、核心 API 特点
1.底层 API(Core):全可控,无封装黑盒
1)ChatModel:聊天模型统一接口,同步 / 流式 / 异步调用。
2)EmbeddingModel:文本向量化接口,支持批量嵌入。
3)ChatMemory:对话记忆(消息窗口 / Token 窗口 / 持久化)。
4)Tool:工具调用(函数调用)底层抽象。
5)EmbeddingStore:向量存储统一接口(20 + 向量库)。
6)DocumentLoader/Splitter:文档加载与分割全链路组件。
2.高层 API(AI Services):声明式,极简开发
AI Service 注解驱动:定义 Java 接口,框架自动生成实现,类似 Spring Data JPA。
// 声明式接口,无需实现类
interface CustomerSupport {
String chat(String userMessage);
@SystemMessage("你是专业的技术顾问")
String advise(@UserMessage String question);
}
// 自动注入模型与记忆,创建代理实例
CustomerSupport support = AiServices.create(CustomerSupport.class, chatModel);
String response = support.chat("如何集成LangChain4j?");
三、核心特点
1.无侵入式设计:零框架依赖,全生态兼容
1)独立运行:不绑定 Spring 等任何框架,可用于普通 Java 项目、Android、后端服务。
2)轻量集成:Spring Boot 只需引入 starter,自动配置模型、记忆、向量库;也可手动组装组件。
3)依赖极简:核心包仅依赖 Jackson、Slf4j、Reactor(流式),无重型传递依赖。
2.模型生态全覆盖:15+ LLM 提供商,国产支持极佳
1)主流模型:OpenAI(GPT-3.5/4/4o)、Anthropic Claude、Google Gemini、Mistral、Ollama(本地模型)。
2)国产模型:通义千问、DeepSeek、智谱 AI、Moonshot、文心一言、星火认知(官方优先适配)。
3)多模态:支持文本 + 图像输入(如 GPT-4V、Gemini),文生图(DALL・E、Stable Diffusion)。
4)统一切换:一套代码切换模型,仅改配置 / 构造参数,业务逻辑零改动。
3.最成熟的 RAG 全链路:可定制每一步
LangChain4j 的 RAG 是Java 生态最完整、可定制性最强的实现。
1)文档加载:支持 PDF、Markdown、Word、HTML、TXT、CSV,来源包括文件系统、URL、GitHub、S3、Azure Blob。
2)文本分割:Token 分割、段落分割、递归分割,支持自定义分割器,保持语义完整。
3)嵌入与存储:15 + 嵌入模型(OpenAI、BGE、M3E),20 + 向量库(Milvus、PGVector、Chroma、Redis、Pinecone)。
4)检索增强:
基础:相似度检索、Top-K、元数据过滤。
高级:查询重写、查询扩展、混合检索(向量 + BM25)、结果重排序、Reciprocal Rank Fusion。
5)可定制 Pipeline:每一步(加载→分割→嵌入→存储→检索→生成)均可自定义扩展。
4.强大的 Agent 与工具调用:自主规划 + 动态工具
1)Agent 类型:
- 简单 Agent:工具调用循环(思考→调用工具→观察→回答)。
- 规划型 Agent:任务拆解、子任务编排、多步骤执行。
- 自定义 Agent:可基于底层 API 实现任意复杂的决策逻辑。
2)工具调用(Function Calling):
- @Tool 注解:快速注册 Java 方法为工具,自动生成 JSON Schema。
- 动态工具:支持 LLM 动态生成代码并执行(如计算器、数据查询)。
- 多工具并行:一次请求注册多个工具,模型自主选择调用。
3)记忆集成:Agent 自带对话记忆,支持多轮任务上下文保持。
5.灵活的对话记忆管理:多策略 + 持久化
1)内存记忆:
MessageWindowChatMemory:限制消息数量(如最近 10 轮)。TokenWindowChatMemory:限制 Token 总数,自动裁剪上下文,避免溢出。
2)持久化记忆:支持 Redis、MySQL、MongoDB,跨会话恢复上下文。
3)记忆分区:支持用户隔离、会话隔离,多用户并行对话无干扰。
6. 结构化输出:类型安全,自动映射 POJO
- 声明式输出:通过接口方法返回值类型,自动将 LLM 响应映射为 Java 对象。
interface BookAssistant {
Book recommendBook(String category); // 自动映射JSON到Book类
}
record Book(String title, String author, int year) {}
- 输出解析器:支持 JSON、XML、Markdown 表格等格式,自动校验格式正确性。
7. 流式响应原生支持:实时输出,适配 SSE
- Flux 流式:所有模型支持
stream()方法,返回Flux<String>,逐块输出结果。 - SSE 适配:无缝集成 Spring Boot Webflux/MVC,实现聊天界面实时打字效果。
- 异步非阻塞:基于 Reactor,高并发场景资源占用低。
四、项目实践
1、项目引入依赖
<!-- 核心starter -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>1.0.0-beta</version>
</dependency>
<!-- 对接大模型 以OpenAI为例 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-openai</artifactId>
</dependency>
<!-- 向量库 以Milvus为例 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-milvus</artifactId>
</dependency>
<!-- 文档解析 PDF -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-document-parser-pdf</artifactId>
</dependency>
2、配置文件application.yml
langchain4j:
openai:
api-key: sk-xxxx
model-name: gpt-3.5-turbo
embedding:
model-name: text-embedding-ada-002
milvus:
host: 127.0.0.1
port: 19530
collection-name: knowledge_base
3、RAG 知识库问答
1)文档入库
具体业务逻辑:把 PDF/MD/ 官网文档 → 解析 → 分块 → 向量化 → 存入 Milvus
// 1.读取PDF文档
Document document = PdfDocumentParser.parse("docs/规则手册.pdf");
// 2.文本分块
DocumentSplitter splitter = RecursiveDocumentSplitter.builder()
.chunkSize(500)
.chunkOverlap(50)
.build();
List<Document> chunks = splitter.split(document);
// 3.向量化 + 存入向量库
@Autowired
private EmbeddingModel embeddingModel;
@Autowired
private EmbeddingStore<TextEmbedding> embeddingStore;
List<Embedding> embeddings = embeddingModel.embedAll(chunks).content();
embeddingStore.addAll(embeddings, chunks);
2)用户提问
具体业务逻辑:用户问题 → 问题向量化 → 向量库检索相似文档 → 拼接上下文 → 给大模型生成答案
@RestController
@RequestMapping("/ai")
public class AiController {
@Autowired
private ChatModel chatModel;
@Autowired
private EmbeddingModel embeddingModel;
@Autowired
private EmbeddingStore<TextEmbedding> embeddingStore;
@GetMapping("/qa")
public String qa(@RequestParam String question) {
// 1.问题向量化
Embedding questionEmbedding = embeddingModel.embed(question).content();
// 2.相似度检索 Top3
List<Document> relatedDocs = embeddingStore.findRelevant(questionEmbedding, 3);
// 3.拼接提示词:上下文 + 用户问题
String prompt = """
基于下面的参考资料回答用户问题,不要编造:
参考资料:%s
用户问题:%s
""".formatted(relatedDocs, question);
// 4.调用大模型返回答案
return chatModel.chat(prompt);
}
}
4、AI 多轮记忆对话
LangChain4j 内置记忆对话的实现:
// 全局一个会话记忆
ChatMemory memory = MessageWindowChatMemory.withMaxMessages(10);
@Bean
public AiAssistant aiAssistant(ChatModel chatModel) {
return AiServices.builder(AiAssistant.class)
.chatModel(chatModel)
.chatMemory(memory)
.build();
}
5、AI Agent 自动任务
Agent 会自动:
- 拆解任务
- 调用多个工具(查数据、统计、文案生成)
- 自主多轮执行,直到完成
LangChain4j 提供现成 Agent:
Agent agent = Agent.builder()
.chatModel(chatModel)
.tools(dataQueryTool, reportTool)
.build();
String result = agent.execute("帮我分析本月销售并生成总结");
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)