Java转大模型开发 SpringBoot整合LangChain4j实现AI对话_springboot 2.x集成langchain4j 1.2.0版本
1 LangChain4j
1.1 简介
LangChain4j的目标是简化将大模型语言(LLM - Large - Language - Model)集成到 Java的过程。4就是for的意思,j就是java。所以LangChain4j就是LangChain For java
官网:https://docs.langchain4j.info/
进入官网后,下图就是LangChain4j的三大功能,总结就是:
- 与大语言模型和向量数据库进行交互
- 转为Java打造,从此AI不再是Python的专属
- 智能代理、工具、检索增长生成(RAG)
1.2 LangChain4j库结构
LangChain4j具有模块化设计,包括:
- LangChain4j-core模块,它定义了核心抽象概念(如聊天语言模型和嵌入存储)及其API
- 主LangChain4j模块,包含有用的工具,如文档加载器、聊天记忆实现,以及诸如人工智能服务等高层功能
- 大量的langchain4j-{集成}模块,每个模块都将各种大语言模型提供商和嵌入存储集成到LangChain4j中。你可以独立使用langchain4j-{集成}模块。如需更多功能,只需要导入主langchain4j即可
1.3 接入大模型
参考官方文档:https://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,可以看到大模型确实做出了回答,接口调用成功