目录
[二、Langchain4j 介绍](#二、Langchain4j 介绍)
[2.1 Langchain4j 是什么](#2.1 Langchain4j 是什么)
[2.2 Langchain4j 主要特点](#2.2 Langchain4j 主要特点)
[2.3 Langchain4j 核心组件](#2.3 Langchain4j 核心组件)
[2.4 Langchain4j 核心优势](#2.4 Langchain4j 核心优势)
[三、Langchain4j 整合常用大模型案例实践](#三、Langchain4j 整合常用大模型案例实践)
[3.1 前置准备](#3.1 前置准备)
[3.1.1 对接通义千问大模型](#3.1.1 对接通义千问大模型)
[3.1.2 对接DeepSeek大模型](#3.1.2 对接DeepSeek大模型)
[3.1.3 创建工程导入核心依赖](#3.1.3 创建工程导入核心依赖)
[3.2 Langchain4j 对接DeepSeek大模型](#3.2 Langchain4j 对接DeepSeek大模型)
[3.2.1 导入核心依赖](#3.2.1 导入核心依赖)
[3.2.2 添加配置文件](#3.2.2 添加配置文件)
[3.2.3 添加测试接口](#3.2.3 添加测试接口)
[3.3 Langchain4j 对接阿里云大模型](#3.3 Langchain4j 对接阿里云大模型)
[3.3.1 导入核心依赖](#3.3.1 导入核心依赖)
[3.3.2 添加配置文件](#3.3.2 添加配置文件)
[3.3.3 添加测试接口](#3.3.3 添加测试接口)
[3.4 基于百炼平台使用openai的调用](#3.4 基于百炼平台使用openai的调用)
一、前言
当下随着各种AI大模型的应用市场深入到各个领域,AI赋能为业务的拓展和商业价值的延伸带来了无限的可能。大厂商陆续推出对市面尚主流AI大模型的接入和支持,方便普通用户或开发者快速体验最新的大模型能力,以DeepSeek为例,像阿里云,硅基流动,智谱等众多厂商,都已经提供了与其对接的方式。与此同时,为了应用开发者能够基于自身的业务快速对接各类AI大模型API能力,更灵活的拓展自身的业务能力。而在java领域,以spring ai为代表的领域界技术框架近期正式宣布发布1.0版本,这也代表了以spring家族接入和应用AI大模型的能力的进一步提升,而另一个大模型的框架Langchain4j,则以其在python领域的强大生态能力,成为自大模型诞生以来占据行业重要地位的技术框架,本文以Langchain4j为例进行说明,详细介绍下如何基于Springboot,快速对接当下行业主流的大模型,打通各个大模型厂商,从而实现微服务自身价值的提升。
二、Langchain4j 介绍
2.1 Langchain4j 是什么
LangChain4j作为一款专注于AI大模型集成的开源库,近年来受到了广泛关注。它旨在为开发者提供一种简单且高效的方式来接入和利用各种AI大模型,从而提升应用程序的智能化水平。LangChain4j的核心优势在于其高度的灵活性和易用性,使得开发者可以在不改变现有架构的前提下,快速实现AI功能的集成。
官网入口:LangChain
开发者文档地址:Introduction | LangChain4j
Github 地址:GitCode - 全球开发者的开源社区,开源代码托管平台

2.2 Langchain4j 主要特点
LangChain4j 是一个基于 Java 的框架,旨在简化与大型语言模型(LLMs)的集成和应用开发。它提供了丰富的工具和组件,帮助开发者快速构建基于 LLM 的应用程序,如聊天机器人、问答系统、文本生成等。其核心特点如下:
-
模块化设计
- LangChain4j 采用模块化架构,允许开发者根据需要选择和使用特定功能,如模型集成、数据加载、链式调用等。
-
多模型支持:
- 支持多种 LLM 提供商,如 DeepSeek ,Qwen ,OpenAI,Hugging Face 等,方便切换和集成不同模型。
-
链式调用:
- 提供链式调用功能,允许将多个任务串联,如文本生成后自动进行情感分析。
-
数据加载与处理:
- 内置多种数据加载器和处理器,支持从不同来源加载数据并进行预处理。
-
扩展性好
- 提供丰富的 API 和扩展点,开发者可以自定义组件以满足特定需求。
-
社区活跃
- 拥有活跃的社区和详细的文档,便于开发者获取支持和学习。
2.3 Langchain4j 核心组件
Langchain4j 的强大之处正是在于其内置了丰富的可以做到开箱即用的组件能力,相比Spring AI,Langchain4j 的组件更加丰富,在使用的时候也更灵活,下面是一张关于Langchain4j 的组件全景图。

2.4 Langchain4j 核心优势
LangChain4j 是一个专为 Java 开发者设计的框架,旨在简化与大型语言模型(LLMs)的集成和应用开发。它的核心优势主要体现在以下几个方面:
1)Java 原生支持
-
LangChain4j 是专为 Java 生态系统设计的,与 Java 开发工具和框架无缝集成。
-
对于 Java 开发者来说,无需学习其他语言(如 Python)即可使用 LLM 的强大功能。
-
支持 Spring Boot 等主流 Java 框架,便于快速集成到现有项目中。
2)模块化设计与灵活性
-
采用模块化设计,开发者可以根据需求选择特定功能,如模型集成、数据加载、链式调用等。
-
提供丰富的扩展点,支持自定义组件和插件,满足个性化需求。
3)多模型支持
-
支持多种主流 LLM 提供商,如 DeepSeek,Qwen,OpenAI,Hugging Face等。
-
提供统一的 API 接口,方便切换不同模型,降低对单一供应商的依赖。
4)链式调用(Chains)
-
支持将多个任务串联成链,实现复杂的任务流程。
-
例如,可以将文本生成、情感分析、翻译等任务组合成一个链式调用,简化开发流程。
5)数据加载与处理
-
内置多种数据加载器,支持从文件、数据库、API 等来源加载数据。
-
提供数据预处理工具,如文本清洗、分词、格式化等,便于后续分析和处理。
6)高性能与可扩展性
-
针对 Java 的高性能特性进行优化,适合处理大规模数据和复杂任务。
-
支持分布式计算和异步调用,适合高并发场景。
7)丰富的工具和实用功能
-
提供多种实用工具,如日志记录、配置管理、缓存机制等。
-
内置对 Prompt 工程的支持,帮助开发者更好地设计和优化提示词(Prompts)。
8)活跃的社区与文档支持
-
拥有活跃的开发者社区,提供及时的技术支持和问题解答。
-
提供详细的文档和示例代码,帮助开发者快速上手。
三、Langchain4j 整合常用大模型案例实践
接下来,以微服务中主流技术框架springboot为例,通过实战案例演示如何整合Langchain4j 并对接目前市场上主流的AI大模型能力。
3.1 前置准备
在正式开始对接各类大模型之前,需要提前在相关的大模型平台获取对接的apikey,下面分别说明。
3.1.1 对接通义千问大模型
对接通义千问系列的大模型,目前比较快捷的方式是通过阿里云的百炼平台进行使用
百炼大模型:大模型服务平台百炼控制台

1)获取apikey
如下,找到左侧API-Key菜单,然后点击创建API-Key,这里的apikey即为程序中对接的时候要使用的。

3.1.2 对接DeepSeek大模型
需要登录DeepSeek API对接中心获取apikey,操作入口:DeepSeek ,登录到下图的页面后,在左侧API Keys一栏,点击创建API Key ,注意,使用官方的apikey需要为当前账户留有一定的金额

3.1.3 创建工程导入核心依赖
创建一个springboot 工程,并导入下面的核心依赖
bash
<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>
<!-- 基于open-ai的langchain4j接口:ChatGPT、deepseek都是open-ai标准下的大模型 -->
<!--<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>${langchain4j.version}</version>
</dependency>-->
<!-- 基于openai系列整合的springboot-starter -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
</dependency>
<!-- 接入阿里云百炼平台 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
</dependency>
<!--langchain4j高级功能-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
</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>
<!--引入langchain4j依赖管理清单-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-bom</artifactId>
<version>${langchain4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--引入百炼依赖管理清单-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-bom</artifactId>
<version>${langchain4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.2 Langchain4j 对接DeepSeek大模型
使用Langchain4j 在最初对接DeepSeek的时候,走的是openai的标准对接,所以在上述的pom中可以看到langchain4j-open-ai-spring-boot-starter这个依赖组件。
3.2.1 导入核心依赖
pom文件中导入下面的这个依赖
bash
<!-- 基于openai系列整合的springboot-starter -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
</dependency>
3.2.2 添加配置文件
在工程的配置文件中添加下面的配置信息
java
server:
port: 8082
#直接对接的是deepseek官网的的大模型
langchain4j:
open-ai:
chat-model:
api-key: 你的apikey #这里填写的是官网的api-key
model-name: deepseek-chat
log-requests: true
log-responses: true
base-url: https://api.deepseek.com
3.2.3 添加测试接口
添加一个测试接口,接口中主要是测试deepseek的对话能力,参考下面的代码:
java
package com.congge.controller;
import dev.langchain4j.model.openai.OpenAiChatModel;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/deepseek")
public class OpenAiDeepController {
@Autowired
private OpenAiChatModel openAiChatModel;
//localhost:8082/deepseek/chat?question=你是谁
@GetMapping("/chat")
public Object chat(@RequestParam("question") String question){
String chat = openAiChatModel.chat(question);
return chat;
}
}
启动工程之后,调用一下接口,看到下面的效果

3.3 Langchain4j 对接阿里云大模型
阿里云百炼平台上提供了丰富的各个厂商的大模型可供选择,比如千问系列,deepseek系列等,这样为应用开发者提供了更加丰富的选择,也更为灵活,下面简单介绍下使用方式。
3.3.1 导入核心依赖
使用阿里云百炼平台上的大模型,需要导入下面的这个依赖,这个组件相当是提供了langchain4j操作各个大模型的纽带功能
java
<!-- 接入阿里云百炼平台 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
</dependency>
3.3.2 添加配置文件
在配置文件中添加下面的配置信息
java
server:
port: 8082
#直接对接的是deepseek官网的的大模型
langchain4j:
#阿里百炼平台的模型
community:
dashscope:
chat-model:
api-key: 你的apikey #这个是白炼平台的apikey
model-name: qwen-max
logging:
level:
root: debug
3.3.3 添加测试接口
在工程中添加一个测试接口,这里提供了一个对话的接口和文生图的接口,参考下面的代码
java
package com.congge.controller;
import dev.langchain4j.community.model.dashscope.QwenChatModel;
import dev.langchain4j.community.model.dashscope.WanxImageModel;
import dev.langchain4j.data.image.Image;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.output.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.net.URI;
@RestController
@RequestMapping("/qwen")
public class QwenCahtController {
@Autowired
private QwenChatModel qwenChatModel;
//localhost:8082/qwen/chat?question=你是谁
@GetMapping("/chat")
public Object chat(@RequestParam("question") String question){
String chat = qwenChatModel.chat(question);
return chat;
}
//localhost:8082/qwen/image
@GetMapping("/image")
public Object image(){
WanxImageModel wanxImageModel = WanxImageModel.builder()
.modelName("wanx2.1-t2i-plus")
.apiKey("你的apikey")
.build();
String desc = "奇幻森林精灵:在一片弥漫着轻柔薄雾的\n" +
" 古老森林深处,阳光透过茂密枝叶洒下金色光斑。一位身材娇小、长着透明薄翼的精灵少女站在一朵硕大的蘑菇上。她\n" +
" 有着海藻般的绿色长发,发间点缀着蓝色的小花,皮肤泛着珍珠般的微光。身上穿着由翠绿树叶和白色藤蔓编织而成的\n" +
" 连衣裙,手中捧着一颗散发着柔和光芒的水晶球,周围环绕着五彩斑斓的蝴蝶,脚下是铺满苔藓的地面,蘑菇和蕨类植\n" +
" 物丛生,营造出神秘而梦幻的氛围。";
Response<Image> response = wanxImageModel.generate(desc);
System.out.println(response.content().url());
URI url = response.content().url();
return url;
}
}
启动工程后,分别做一下测试
1)对话接口效果

2)文生图接口效果

打开生成的url链接,最后下载的图片效果图如下,画面的质量还是很不错的

3.4 基于百炼平台使用openai的调用
引入了百炼的SDK依赖之后,如果你仍然想用之前对接openai的方式使用,依赖仍然使用第一个openai的,只需要简单调整下配置参数即可,如下,工程的配置文件中调整成下面这样,核心调整的位置包括:
-
apikey ,上面那种方式写的是deepseek官网的,这里写的是百炼上面的;
-
base-url ,上面写的是deepseek官网的,这里写的是百炼的地址;
java
server:
port: 8082
#直接对接的是deepseek官网的的大模型
langchain4j:
#改成阿里云百炼平台的deepseek模型
open-ai:
chat-model:
api-key: 你的apikey #百炼平台的apikey
model-name: deepseek-v3
base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
temperature: 0.7
仍然使用下面的这个接口
java
package com.congge.controller;
import dev.langchain4j.model.openai.OpenAiChatModel;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/deepseek")
public class OpenAiDeepController {
@Autowired
private OpenAiChatModel openAiChatModel;
//localhost:8082/deepseek/chat?question=你是谁
@GetMapping("/chat")
public Object chat(@RequestParam("question") String question){
String chat = openAiChatModel.chat(question);
return chat;
}
}
启动工程后,调用下接口,效果如下:

四、写在文末
本文详细介绍了springboot整合langchain4j对接市场上主流大模型的详细过程,并通过实际案例演示了对接的过程,对于其他的大模型,其对接流程和方式也差不多,有兴趣的同学可以基于此继续深入研究,本篇到此结束,感谢观看。