LangChain4j是什么

LangChain4j是什么

薛定谔的汪 Lv5

LangChain4j:为Java开发者打开大模型应用的大门

一、为什么需要LangChain4j?

2023年初ChatGPT引爆了大模型热潮,Python和JavaScript生态迅速涌现出LangChain、LlamaIndex等优秀框架,但Java开发者却面临一个尴尬的局面——想开发AI应用,要么直接调用各大厂商的原生API,代码臃肿且难以切换;要么只能望洋兴叹。

LangChain4j正是在这样的背景下诞生的。它由Java社区发起,目标是为Java开发者提供一套简洁、统一、功能完备的大模型集成框架。虽然名字里有”LangChain”,但它实际上是融合了LangChain、Haystack、LlamaIndex等社区优秀思想的产物,并加入了许多Java生态特有的创新。

简单来说:LangChain4j就是Java生态中的LangChain

二、LangChain4j能解决什么问题?

2.1 消除模型差异,一套代码适配所有

每个大模型厂商都有自己的API格式和调用方式。如果直接对接OpenAI、通义千问、Claude等,你需要为每个模型写一套适配代码。而LangChain4j提供了统一的API,切换模型时只需修改几行配置,核心业务代码完全不用动。

2.2 封装复杂逻辑,专注业务

集成AI不只是”发请求、收回复”这么简单。要实现一个智能客服,你需要考虑:

  • 如何管理对话上下文?
  • 如何让AI基于私有知识库回答?
  • 如何让AI调用外部工具(查天气、查订单)?

这些复杂逻辑LangChain4j都已封装成现成的组件。你只需关注”客服该回答什么”,不用操心”怎么让AI记住对话”。

2.3 贴合Java生态,上手零门槛

LangChain4j完全遵循Java开发习惯:支持Maven/Gradle依赖管理、与Spring Boot和Quarkus完美集成、API设计简洁直观。如果你熟悉Java,几乎不用额外学习就能快速上手。

三、核心概念速览

在使用LangChain4j之前,先了解三个核心概念:

概念 说明 类比
ChatLanguageModel 与LLM交互的入口,负责发送请求、接收响应 数据库连接
Prompt 给AI的指令,支持模板化 SQL模板
AiServices 高层API,用声明式方式构建AI应用 Spring的@Repository

此外,LangChain4j提供两个抽象层次:

  • 低层:直接操作ChatLanguageModelUserMessage等原语,灵活性最高
  • 高层:使用AiServices,通过注解和接口声明,自动处理复杂逻辑

四、快速上手:跑通第一个AI应用

下面我们用Spring Boot + LangChain4j + 阿里通义千问,快速实现一个AI对话。

4.1 添加依赖

xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<langchain4j.version>1.12.2</langchain4j.version>
</properties>


<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.x.x</version>
<relativePath/>
</parent>


<dependencies>
<!-- SpringBoot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>



<!-- LangChain4j 低级AI交互-->
<!-- <dependency>-->
<!-- <groupId>dev.langchain4j</groupId>-->
<!-- <artifactId>langchain4j-open-ai</artifactId>-->
<!-- <version>${langchain4j.version}</version>-->
<!-- </dependency>-->

<!-- LangChain4j 高级AI交互,如RAG-->
<!-- <dependency>-->
<!-- <groupId>dev.langchain4j</groupId>-->
<!-- <artifactId>langchain4j</artifactId>-->
<!-- <version>${langchain4j.version}</version>-->
<!-- </dependency>-->



<!-- LangChain4j 低级AI交互starter 已包含上面 langchain4j-open-ai 基础包 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
<version>${langchain4j-spring-boot-starter.version}</version>
</dependency>

<!-- LangChain4j 高级AI交互starter 包含 上面langchain4j高级aiservice相关的包-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>${langchain4j-spring-boot-starter.version}</version>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

</dependencies>

4.2 低级和高级API对比

特性 低级 API (ChatLanguageModel) 高级 API (@AiService)
代码量 较多 极少
灵活性 极高 较高
自动解析输出 ❌ 返回 String ✅ 可返回 POJO
对话记忆 ❌ 需手动实现 ✅ 内置支持
工具调用 ❌ 需手动处理 ✅ 自动处理
适用场景 需要精细控制 大部分业务场景

💡 建议:优先使用高级 API,除非你需要非常底层的控制。

4.3 配置API Key

application.yml中添加:

yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
langchain4j:
open-ai:
chat-model:
# 模型名称,这里我选用的 DeepSeek 的 deepseek-chat, 支持多家 AI厂商,OpenAI、Anthropic、Google Gemini、通义千问、智谱等
model-name: deepseek-chat
base-url: https://api.deepseek.com
# 你的 API Key
api-key: ${your_api_key} #从环境变量获取,不硬编码
# 温度参数(0-1,越高越随机性越高)
temperature: 0.7
# 最大输出 token 数
max-tokens: 2000
# 开启日志(便于调试)
log-requests: true
log-responses: true

4.4 编写AI服务

java

1
2
3
4
5
6
7
8
9
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.spring.AiService;

@AiService
public interface AiAssistant {

@SystemMessage("你是一个专业的编程助手,帮助用户解答Java开发问题。")
String chat(String userMessage);
}

就这么简单!@AiService注解会自动将接口与配置的模型绑定,@SystemMessage定义AI的角色和行为。

4.5 在Controller中使用

java

1
2
3
4
5
6
7
8
9
10
11
12
@RestController
@RequestMapping("/api/ai")
public class AiController {

@Resource
private AiAssistant aiAssistant;

@PostMapping("/chat")
public String chat(@RequestParam String question) {
return aiAssistant.chat(question);
}
}

用 Postman 发送请求,AI会返回关于 Stream API 的专业解答。

4.6 四种消息类型

LangChain4j 定义了四种消息角色,理解它们能让你更好地控制 AI 行为。

消息类型总结

消息类型 创建方式 用途 谁发送
SystemMessage SystemMessage.from(text) 设定 AI 的行为准则、角色 开发者
UserMessage UserMessage.from(text) 用户的问题或指令 用户
AiMessage 模型返回 AI 的回复 AI 模型
ToolExecutionResultMessage ToolExecutionResultMessage.from(...) 工具调用的结果,如查询日期/天气 工具/函数

五、LangChain4j的能力全景

除了基础对话,LangChain4j还支持:

功能 说明
RAG(检索增强生成) 让AI基于私有知识库回答问题,支持PDF、Word、网页等多种文档
函数调用(Tool Calling) AI可以主动调用Java方法,如查天气、查数据库
流式输出 支持SSE流式响应,提升用户体验
多模态 支持图文混合输入(需模型支持)
结构化输出 将AI输出自动映射到Java POJO
15+ LLM提供商 OpenAI、Anthropic、Google Gemini、通义千问、智谱等
20+ 向量数据库 Pinecone、Milvus、PgVector、Chroma等

六、与Spring AI的对比

很多Java开发者会问:LangChain4j和Spring AI怎么选?

维度 LangChain4j Spring AI
成熟度 更高,功能更丰富 相对早期
社区生态 活跃,集成更多 Spring官方背书
API风格 灵活,支持声明式 更”Spring化”
学习曲线 平缓 平缓

个人建议:目前LangChain4j功能更完善,适合生产项目;Spring AI值得关注,生态前景好。

七、写在最后

LangChain4j的出现,让Java开发者不再是大模型时代的”局外人”。它用Java的方式解决了Java的问题——统一API、封装复杂度、贴合生态。无论你是想在现有项目中引入AI能力,还是从零构建智能应用,LangChain4j都值得一试。

  • Title: LangChain4j是什么
  • Author: 薛定谔的汪
  • Created at : 2025-02-15 18:01:54
  • Updated at : 2026-04-07 15:22:41
  • Link: https://www.zhengyk.cn/2025/02/15/ai/langchain4j_01_introduce/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments