LangChain4j快速入門實(shí)戰(zhàn)
大家好,我是程序員NEO。現(xiàn)在 AI 應(yīng)用開發(fā)可以說是程序員必備的技能了,求職時(shí)能夠大幅增加競爭力。本篇文章,我來給大家介紹一款主流的 Java AI 應(yīng)用開發(fā)框架 LangChain4j。
什么是 LangChain4j?
目前主流的 Java AI 開發(fā)框架有 Spring AI[1] 和 LangChain4j[2],它們都提供了很多 開箱即用的 API 來幫你調(diào)用大模型、實(shí)現(xiàn) AI 開發(fā)常用的功能。
比如:
? 對話記憶
? 結(jié)構(gòu)化輸出
? RAG 知識庫
? 工具調(diào)用
? MCP
? SSE 流式輸出
就我個(gè)人體驗(yàn)下來,這兩個(gè)框架的很多概念和用法都是類似的,也都提供了很多插件擴(kuò)展,都支持和 Spring Boot 項(xiàng)目集成。雖然有一些編碼上的區(qū)別,但孰好?孰壞,使用感受也是因人而異的。
實(shí)際開發(fā)中應(yīng)該如何選擇呢?
這個(gè)答案等我后續(xù)再寫一篇文章來對比分析吧,今天我們主要來介紹 LangChain4j。最后再揭曉答案,因?yàn)槟莻€(gè)時(shí)候?你自己也會(huì)有一些想法。
這里我簡單的新建一個(gè) lang-chain4j-demo 項(xiàng)目,來演示一下它的基本用法。
打開 IDEA 開發(fā)工具,新建一個(gè) Spring Boot 項(xiàng)目,Java 版本選擇 21(因?yàn)?LangChain4j 最低支持 17 版本)。
選擇依賴,使用 3.5.x 版本的 Spring Boot,引入 Spring MVC 和? Lombok 注解庫:

? SpringBoot 3.5.3
? JDK 21
新建項(xiàng)目后,先修改配置文件后綴為 yml,便于后面填寫配置。

這里我會(huì)建議大家創(chuàng)建一個(gè) application-local.yml 配置文件,將開發(fā)時(shí)用到的敏感配置寫到這里,并且添加到 .gitignore 中,防止不小心開源出來。
好,接下來我們來添加 LangChain4j 依賴。先實(shí)現(xiàn)第一個(gè)功能:AI 對話 - ChatModel。
AI 對話 - ChatModel
ChatModel 是最基礎(chǔ)的概念,負(fù)責(zé)和 AI 大模型交互。
首先需要引入至少一個(gè) AI 大模型依賴[3],這里選擇國內(nèi)的阿里云大模型,提供了和 Spring Boot 項(xiàng)目的整合依賴包,比較方便:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
<version>1.1.0-beta7</version>
</dependency>
需要到 阿里云百煉平臺[4] 獲取大模型調(diào)用 key,注意不要泄露!
圖片
回到項(xiàng)目,在配置文件中添加大模型配置,指定模型名稱和 API Key:
langchain4j:
community:
dashscope:
chat-model:
model-name: qwen-max
api-key: <You API Key here>
圖片
可以 按需選擇模型名稱[5],追求效果可以用 qwen-max,否則可以選擇效果、速度、成本均衡的 qwen-plus。
圖片
除了編寫配置讓 Spring Boot 自動(dòng)構(gòu)建 ChatModel 外,也可以通過構(gòu)造器自己創(chuàng)建 ChatModel 對象。這種方式更靈活,在 LangChain4j 中?我們會(huì)經(jīng)常用到這種方式來構(gòu)造對象。
ChatModel qwenModel = QwenChatModel.builder()
.apiKey("You API key here")
.modelName("qwen-max")
.enableSearch(true)
.temperature(0.7)
.maxTokens(4096)
.stops(List.of("Hello"))
.build();有了 ChatModel 后,創(chuàng)建一個(gè) AiCodeHelper 類,引入自動(dòng)注入的 qwenChatModel,編寫簡單的對話代碼,并利用 L?ombok 注解打印輸出結(jié)果日志:
/**
* @author BNTang
*/
@Service
@Slf4j
public class AiCodeHelper {
@Resource
private ChatModel qwenChatModel;
public String chat(String message) {
UserMessage userMessage = UserMessage.from(message);
ChatResponse chatResponse = qwenChatModel.chat(userMessage);
AiMessage aiMessage = chatResponse.aiMessage();
log.info("AI 輸出:{}", aiMessage.toString());
return aiMessage.text();
}
}編寫單元測試,向 AI 打個(gè)招呼吧:
@SpringBootTest
class AiCodeHelperTest {
@Resource
private AiCodeHelper aiCodeHelper;
@Test
void chat() {
aiCodeHelper.chat("你好,我是程序員NEO");
}
}以 Debug 模式運(yùn)行單元測試,成功運(yùn)行并查看輸出:
圖片
可以看到 AI 很有禮貌地回應(yīng)了我,說明我們已經(jīng)成功調(diào)用了阿里云大模型。
好了,今天的內(nèi)容就到這里,后續(xù)我會(huì)繼續(xù)寫一些 LangChain4j 的實(shí)戰(zhàn)功能,比如對話記憶、結(jié)構(gòu)化輸出、RAG 知識庫等,敬請期待!
引用鏈接
[1] Spring AI: https://spring.io/projects/spring-ai
[2] LangChain4j: https://docs.langchain4j.dev/intro
[3] AI 大模型依賴: https://mvnrepository.com/artifact/dev.langchain4j/langchain4j-community-dashscope-spring-boot-starter
[4] `阿里云百煉平臺`: https://bailian.console.aliyun.com/?tab=model#/api-key
[5] 按需選擇模型名稱: https://bailian.console.aliyun.com/?tab=doc#/doc/?type=model



































