1 LangChain4j
1.1 简介
LangChain4j的目标是简化将大模型语言(LLM - Large - Language - Model)集成到 Java的过程。4就是for的意思,j就是java。所以LangChain4j就是LangChain For java
进入官网后,下图就是LangChain4j的三大功能,总结就是:
- 与大语言模型和向量数据库进行交互
- 转为Java打造,从此AI不再是Python的专属
- 智能代理、工具、检索增长生成(RAG)
1.2 LangChain4j库结构
LangChain4j具有模块化设计,包括:
- LangChain4j-core模块,它定义了核心抽象概念(如聊天语言模型和嵌入存储)及其API
- 主LangChain4j模块,包含有用的工具,如文档加载器、聊天记忆实现,以及诸如人工智能服务等高层功能
- 大量的langchain4j-{集成}模块,每个模块都将各种大语言模型提供商和嵌入存储集成到LangChain4j中。你可以独立使用langchain4j-{集成}模块。如需更多功能,只需要导入主langchain4j即可
1.3 接入大模型
参考官方文档:docs.langchain4j.info/get-started
文档中介绍了2个依赖:
- 一个是集成OpenAI的依赖,如果我们要接入DeepSeek,也可以使用这个依赖,因为DeepSeek就是基于OpenAI标准的
- 第二个是提供高级服务API的依赖。所谓高级服务,比如Function Calling(函数调用)、RAG(检索增强生成)等
有些人可能会好奇,下图中的这个langchain4j-bom是干嘛的。为什么放在dependencyManagement里。
首先dependencyManagement是依赖管理的意思,比如在里面写了langchain4j-bom这个依赖和版本号(1.0.0-beta3),那么在dependency中引入的所有langchain的依赖都是都是这个版本(1.0.0-beta3),且在dependency中引入langchain依赖时,就不需要再写版本号了。这就达到了版本管理的效果
再者,langchain4j-bom是一个清单,包含langchain4j所有依赖。后面会在代码实战中再次讲解
文档中也介绍了,要使用OpenAI,需要使用apiKey(秘钥)和modelName(模型名称),最后调用chat方法就可以聊天了。看上去相当简单。
如果没有apiKey,又不想申请怎么办?LangChain4j提供了免费的apiKey,但模型名称仅限于 gpt-4o-mini
2 SpringBoot整合LangChain4j代码实战
2.1 pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>AI-langchain4j</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>AI-langchain4j</name>
<description>AI-langchain4j</description>
<properties>
<java.version>21</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<!--langchain4j的依赖清单-->
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-bom</artifactId>
<version>1.0.0-beta3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
可以看到,在引入langchain4j-open-ai依赖时,并没有写版本号。因为dependencyManagement中引入了langchain4j-bom,版本号为1.0.0-beta3,所以在引入langchain4j-open-ai依赖时,版本号固定为1.0.0-beta3,不再需要额外再写一次版本号了,这就是依赖控制管理
2.2 yml配置
server:
port: 8007 #端口号
2.3 controller接口
package com.huqing.icu.controller;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description openApi接口
* @Author huqing
* @Date 2025/6/15 16:30
**/
@RestController
@RequestMapping("/open/api/")
public class OpenAIController {
# 这里使用langchain4j官方提供的免费的apikey和modelName,注意apikey的值就是demo
@GetMapping(value = "/chat/v1", produces = "application/json")
public String addPost() {
OpenAiChatModel model = OpenAiChatModel.builder()
.baseUrl("http://langchain4j.dev/demo/openai/v1")
.apiKey("demo")
.modelName("gpt-4o-mini")
.build();
String result = model.chat("你好,穷人要怎么才能翻身");
return result;
}
}
2.4 测试
项目整体结构如下:
代码跑起来,浏览器输入:http://localhost:8007/open/api/chat/v1,可以看到大模型确实做出了回答,接口调用成功