langchain4j集成Spring Boot
阿里云百炼是 2023 年 10 月推出的。它集成了阿里的通义系列大模型和第三方大模型,涵盖文本、图像、音视频等不同模态。功能优势:集成超百款大模型 API,模型选择丰富;5-10 分钟就能低代码快速构建智能体,应用构建高效;提供全链路模型训练、评估工具及全套应用开发工具,模型服务多元;在线部署可按需扩缩容,新用户有千万 token 免费送,业务落地成本低。
课程讲解
一、LangChain4j入门
1、简介
LangChain4j 的目标是简化将大语言模型(LLM - Large Language Model)集成到 Java 应用程序中的过程。
1.1、历史背景
2022 年11月30日OpenAI发布了Chat GPT(GPT-3.5)
早在 2022 年10月,Harrison Chase 发布了基于Python的LangChain。
随后同时包含了Python版和JavaScript(LangChain.js)版的LangChain 也发布了。
2023 年 11 月,Quarkus 发布了 LangChain4j 的 0.1 版本,2025 年 2 月发布了 1.0 - Beta1 版本,4 月发布了 1.0 - Beta3 版本
官网:https://docs.langchain4j.dev
1.2、主要功能
与大型语言模型和向量数据库的便捷交互
通过统一的应用程序编程接口(API),可以轻松访问所有主要的商业和开源大型语言模型以及向量数据库,使你能够构建聊天机器人、智能助手等应用。
专为 Java 打造
借助Spring Boot 集成,能够将大模型集成到ava 应用程序中。大型语言模型与 Java 之间实现了双向集成:你可以从 Java 中调用大型语言模型,同时也允许大型语言模型反过来调用你的 Java 代码
智能代理、工具、检索增强生成(RAG)
为常见的大语言模型操作提供了广泛的工具,涵盖从底层的提示词模板创建、聊天记忆管理和输出解析,到智能代理和检索增强生成等高级模式。
2、创建SpringBoot项目
2.1、创建一个Maven项目

2.2、添加SpringBoot相关依赖
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-boot.version>3.2.6</spring-boot.version>
<knife4j.version>4.3.0</knife4j.version>
<langchain4j.version>1.0.0-beta3</langchain4j.version>
<mybatis-plus.version>3.5.11</mybatis-plus.version>
</properties>
<dependencies>
<!-- 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>
<scope>test</scope>
</dependency>
<!-- 前后端分离中的后端接口测试工具 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!--引入SpringBoot依赖管理清单-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.3、创建配置文件
在resources下创建配置文件application.properties
# web服务访问端口 server.port=8080
2.4、创建启动类
package com.atguigu.java.ai.langchain4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class XiaozhiApp {
public static void main(String[] args) {
SpringApplication.run(XiaozhiApp.class, args);
}
}
2.5、启动启动类
访问 http://localhost:8080/doc.html 查看程序能否成功运行并显示如下页面

3、接入大模型
-
参考文档: Get Startedhttps://docs.langchain4j.dev/get-started
3.1、添加LangChain4j相关依赖
<properties> <langchain4j.version>1.0.0-beta3</langchain4j.version> </properties> <dependencies> <!-- 基于open-ai的langchain4j接口:ChatGPT、deepseek都是open-ai标准下的大模型 --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <!--引入langchain4j依赖管理清单--> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-bom</artifactId> <version>${langchain4j.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>3.2、创建测试用例
接入任何一个大模型都需要先去申请apiKey。
如果你暂时没有密钥,也可以使用LangChain4j 提供的演示密钥,这个密钥是免费的,有使用配额限制,且仅限于 gpt-4o-mini 模型。
package com.zhentao.demo; import dev.langchain4j.model.openai.OpenAiChatModel; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class LLMTest { /** * gpt-4o-mini语言模型接入测试 */ @Test public void testGPTDemo() { OpenAiChatModel model = OpenAiChatModel.builder() .baseUrl("http://langchain4j.dev/demo/openai/v1") .apiKey("demo") .modelName("gpt-4o-mini") .build(); //向模型提问 String answer = model.chat("你是谁"); //输出结果 System.out.println(answer); } }4、SpringBoot整合
参考文档:https://docs.langchain4j.dev/tutorials/spring-boot-integration
4.1、替换依赖
将
langchain4j-open-ai替换成langchain4j-open-ai-spring-boot-starter<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai-spring-boot-starter</artifactId> </dependency>
4.2、配置模型参数
#langchain4j测试模型 langchain4j.open-ai.chat-model.api-key=demo langchain4j.open-ai.chat-model.model-name=gpt-4o-mini langchain4j.open-ai.chat-model.base-url=http://langchain4j.dev/demo/openai/v1 #应用程序发送给大模型的请求和响应日志 langchain4j.open-ai.chat-model.log-requests=true langchain4j.open-ai.chat-model.log-responses=true #将系统日志提升至debug级别 logging.level.root=debug
4.3、创建测试用例
/** * 整合SpringBoot */ @Autowired private OpenAiChatModel openAiChatModel; @Test public void testSpringBoot() { //向模型提问 String answer = openAiChatModel.chat("你是谁?"); //输出结果 System.out.println(answer); }二、接入其他大模型
1、都有哪些大模型
-
大语言模型排行榜:https://superclueai.com/
-
LangChain4j支持接入的大模型:https://docs.langchain4j.dev/integrations/language-models/
2、接入DeepSeek
2.1、获取开发参数
-
访问官网:https://www.deepseek.com/ 注册账号,获取base_url和api_key,充值
2.2、配置开发参数
为了apikay的安全,建议将其配置在服务器的环境变量中。变量名自定义即可,例如
DEEP_SEEK_API_KEY -
-
2.3、配置模型参数
DeepSeek API文档:https://api-docs.deepseek.com/zh-cn/
在 LangChain4j 中,DeepSeek 和 GPT 一样也使用了 OpenAI 的接口标准,因此也使用OpenAiChatModel进行接入
#DeepSeek langchain4j.open-ai.chat-model.base-url=https://api.deepseek.com langchain4j.open-ai.chat-model.api-key=${DEEP_SEEK_API_KEY} #DeepSeek-V3 langchain4j.open-ai.chat-model.model-name=deepseek-chat #DeepSeek-R1 推理模型 #langchain4j.open-ai.chat-model.model-name=deepseek-reasoner2.4、创建测试用例
/** * 整合SpringBoot */ @Autowired private OpenAiChatModel openAiChatModel; @Test public void testSpringBoot() { //向模型提问 String answer = openAiChatModel.chat("你是谁?"); //输出结果 System.out.println(answer); }三、接入阿里百炼平台
1、什么是阿里百炼
-
阿里云百炼是 2023 年 10 月推出的。它集成了阿里的通义系列大模型和第三方大模型,涵盖文本、图像、音视频等不同模态。
-
功能优势:集成超百款大模型 API,模型选择丰富;5-10 分钟就能低代码快速构建智能体,应用构建高效;提供全链路模型训练、评估工具及全套应用开发工具,模型服务多元;在线部署可按需扩缩容,新用户有千万 token 免费送,业务落地成本低。
2、申请免费体验
(1)点击进入免费体验页面
-
-
(2)点击免费体验
-
(3)点击开通服务
-
(4)确认开通

3、配置apiKey
申请apiKey:https://bailian.console.aliyun.com/?apiKey=1&productCode=p_efm#/api-key
-
配置apiKey:配置在环境变量DASH_SCOPE_API_KEY中
-
4、添加依赖
LangChain4j参考文档:https://docs.langchain4j.dev/integrations/language-models/dashscope#plain-java
<dependencies> <!-- 接入阿里云百炼平台 --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <!--引入百炼依赖管理清单--> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-community-bom</artifactId> <version>${langchain4j.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>5、配置模型参数
#阿里百炼平台 langchain4j.community.dashscope.chat-model.api-key=${DASH_SCOPE_API_KEY} langchain4j.community.dashscope.chat-model.model-name=qwen-max6、测试通义千问
/** * 通义千问大模型 */ @Autowired private QwenChatModel qwenChatModel; @Test public void testDashScopeQwen() { //向模型提问 String answer = qwenChatModel.chat("你是谁?"); //输出结果 System.out.println(answer); }四 直接集成通义千问
获取API Key 并将其配置到环境变量
安装Dash Scope SDK
1.1、添加依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>dashscope-sdk-java</artifactId> <!-- 请将 'the-latest-version' 替换为最新版本号:https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java --> <version>the-latest-version</version> </dependency> 会出现报错信息 SLF4J 日志框架冲突 log SLF4J(W): Class path contains multiple SLF4J providers. SLF4J(W): Found provider [org.slf4j.simple.SimpleServiceProvider@61064425] SLF4J(W): Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@7b1d7fff] 原因: 项目同时引入了 slf4j-simple 和 logback-classic,它们都是 SLF4J 的实现,导致冲突。 所以移除 slf4j-simple: <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>2.0.13</version> <scope>test</scope> <!-- 如果必须保留,限定在 test 范围 --> </dependency> 将依赖修改为 <dependency> <groupId>com.alibaba</groupId> <artifactId>dashscope-sdk-java</artifactId> <version>2.18.5</version> <exclusions> <!-- 排除 slf4j-simple --> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> </exclusion> </exclusions> </dependency>
其他报错信息环境变量中找不到api key
需要在环境变量中配置好 并且重启电脑
如果不想重启电脑 就用硬编码的格式:apiKey("sk-xxx") 或是在yml文件配置模型参数
dashscope: api-key: "your-dashscope-api-key" # 替换为真实 Key
1.2、测试千问
package com.zhentao; import java.util.Arrays; import java.lang.System; import com.alibaba.dashscope.aigc.generation.Generation; import com.alibaba.dashscope.aigc.generation.GenerationParam; import com.alibaba.dashscope.aigc.generation.GenerationResult; import com.alibaba.dashscope.common.Message; import com.alibaba.dashscope.common.Role; import com.alibaba.dashscope.exception.ApiException; import com.alibaba.dashscope.exception.InputRequiredException; import com.alibaba.dashscope.exception.NoApiKeyException; import com.alibaba.dashscope.utils.JsonUtils; public class Main { public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException { Generation gen = new Generation(); Message systemMsg = Message.builder() .role(Role.SYSTEM.getValue()) .content("You are a helpful assistant.") .build(); Message userMsg = Message.builder() .role(Role.USER.getValue()) .content("你是谁?") .build(); GenerationParam param = GenerationParam.builder() // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx") .apiKey("sk-c321eddd8a3549889fa460c1e695e0f2") // 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models .model("qwen-max") .messages(Arrays.asList(systemMsg, userMsg)) .resultFormat(GenerationParam.ResultFormat.MESSAGE) .build(); return gen.call(param); } public static void main(String[] args) { try { GenerationResult result = callWithMessage(); System.out.println(JsonUtils.toJson(result)); } catch (ApiException | NoApiKeyException | InputRequiredException e) { // 使用日志框架记录异常信息 System.err.println("An error occurred while calling the generation service: " + e.getMessage()); } System.exit(0); } } 1.3、测试通义万象
生成图片测试
@Test public void testDashScopeWanx(){ WanxImageModel wanxImageModel = WanxImageModel.builder() .modelName("wanx2.1-t2i-plus") .apiKey(System.getenv("DASH_SCOPE_API_KEY")) .build(); Response<Image> response = wanxImageModel.generate("奇幻森林精灵:在一片弥漫着轻柔薄雾的古老森林深处,阳光透过茂密枝叶洒下金色光斑。一位身材娇小、长着透明薄翼的精灵少女站在一朵硕大的蘑菇上。她有着海藻般的绿色长发,发间点缀着蓝色的小花,皮肤泛着珍珠般的微光。身上穿着由翠绿树叶和白色藤蔓编织而成的连衣裙,手中捧着一颗散发着柔和光芒的水晶球,周围环绕着五彩斑斓的蝴蝶,脚下是铺满苔藓的地面,蘑菇和蕨类植物丛生,营造出神秘而梦幻的氛围。"); System.out.println(response.content().url()); }2.1、测试DeepSeek
也可以在阿里百炼上集成第三方大模型,如DeepSeek
将配置参数上的base-url参数指定到百炼平台,使用百炼上的大模型名称和apiKey即可
#集成百炼-deepseek langchain4j.open-ai.chat-model.base-url=https://dashscope.aliyuncs.com/compatible-mode/v1 langchain4j.open-ai.chat-model.api-key=${DASH_SCOPE_API_KEY} langchain4j.open-ai.chat-model.model-name=deepseek-v3 #温度系数:取值范围通常在 0 到 1 之间。值越高,模型的输出越随机、富有创造性; # 值越低,输出越确定、保守。这里设置为 0.9,意味着模型会有一定的随机性,生成的回复可能会比较多样化。 langchain4j.open-ai.chat-model.temperature=0.9使用之前的测试用例
testSpringBoot测试即可
更多推荐


所有评论(0)