场景
SpringBoot中使用SpringAIAlibaba框架集成阿里云百炼实现AI快速对话入门示例:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/160024361
基于上面的基础,使用OpenAI兼容的方式实现AI对话以及流式对话功能。
Spring AI 提供了 spring-ai-openai-spring-boot-starter,自动配置 OpenAiChatModel。
下面介绍下LangChain4J
LangChain4j 是什么?
LangChain4j 是一个专为 Java 开发者设计的开源框架,目标是简化大型语言模型(LLM)与 Java 应用的集成。
它受 Python 版 LangChain 启发,但针对 Java 语言的特点和生态做了深度适配。
其核心价值在于提供一个标准化的 API 和丰富的组件库,让开发者能像搭积木一样快速构建 AI 驱动的应用,
无需深究底层模型和技术的复杂细节。
目前,它可以接入 15+ 种主流 LLM(OpenAI、通义千问、智谱等)和 15+ 种向量数据库(如 Qdrant、Milvus)
LangChain4j 核心概念与组件
Model(模型):
与 LLM 交互的底层 API,提供最大灵活性。
AI Service(AI 服务):
推荐的高级 API,只需定义 Java 接口和注解,框架会自动生成实现,简化开发。
Prompt(提示):
通过 @SystemMessage 和 @UserMessage 等注解,可以灵活定义模型的角色和任务。
Memory(记忆):
通过 @MemoryId 等注解为不同用户维护独立的对话历史,实现多轮对话。
RAG(检索增强生成):
通过 @RetrievalAugmentor 注解,轻松为 AI 服务添加私有知识库检索能力。
Tool(工具/函数调用):
通过 @Tool 注解将 Java 方法注册为 LLM 可以调用的工具,让模型能执行具体操作(如查天气、数据库)。
Chains & Agents(链与智能体):
支持顺序、并行、循环等复杂工作流,并允许 AI Agent 自主规划与执行多步骤任务
架构与模块设计
LangChain4j 采用高度模块化的设计,让你可以按需引入。
其核心模块与架构分层如下:
核心模块:
langchain4j:
框架核心,定义了顶层 API 和抽象。
langchain4j-{provider}:
具体模型集成,如 langchain4j-open-ai, langchain4j-community-dashscope。
langchain4j-{provider}-spring-boot-starter:
提供 Spring Boot 自动配置,简化集成。
分层架构:
一个典型的应用通常遵循以下分层:
接入层:
AI Service 负责承接对话请求,进行流程编排。
工具层:
Tools 包含所有可以被 LLM 调用的 Java 方法。
记忆层:
Chat Memory 负责管理不同会话的上下文。
知识层:
ContentRetriever / EmbeddingStore 负责实现 RAG。
配置层:
Spring Boot Starter 负责装配所需的所有 Bean。
对比:LangChain4j vs. Spring AI
在 Java AI 框架中,LangChain4j 常与官方的 Spring AI 进行比较。下面是一个简要对比:
LangChain4j
设计理念:AI 功能优先,灵活且功能全面。
功能成熟度:功能丰富,尤其在 RAG、Agent 等高级场景。
学习曲线:中等,需要理解较多 AI 应用概念。
生态整合:与主流 LLM 和向量库集成良好。
适用场景:需要高度定制的复杂 AI 应用。
Spring AI
设计理念:Spring 生态优先,无缝集成 Spring Boot。
功能成熟度:新兴项目,功能相对基础,但发展迅速。
学习曲线:较低,对 Spring 开发者友好。
生态整合:与 Spring 生态深度整合。
适用场景:快速在现有 Spring 项目中引入 AI 能力
再对比open-ai
LangChain4j:
相当于 Python 世界里的 LangChain,是一个通用 AI 应用开发框架。它提供了大量现成的组件(如文档加载器、工具、链),
让你像搭积木一样构建复杂的 AI 应用。它功能最全,但需要你自行组装,灵活性极高。
Spring AI:
这是 Spring 官方出品的亲儿子,设计哲学和Spring Boot一脉相承。
它最大的价值在于 "抽象",它定义了一套标准接口(如 ChatClient),屏蔽了底层不同AI提供商的差异。
如果你已经是 Spring Boot 技术栈的用户,这是最自然的选择。
OpenAI API:
这是最底层的,你可以直接把它当作一个HTTP接口来调用。它本身不提供任何框架层面的支持,
你需要自己处理HTTP请求、JSON序列化、错误重试、对话历史管理等所有细节。
另外,在实际选型中,LangChain4j 和 Spring AI 不一定是二选一的关系。
在一些大型项目中,甚至可以同时使用:用 Spring AI 的 ChatClient 作为统一的模型访问层,
再结合 LangChain4j 的高级 RAG 或 Agent 组件来弥补功能上的不足。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
实现
SpringBoot中集成langchain4j以及使用集成阿里百炼平台
第一步:添加项目依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
</parent>
<groupId>com.example</groupId>
<artifactId>spring-langchain4j-bailian</artifactId>
<version>1.0</version>
<properties>
<java.version>17</java.version>
<langchain4j.version>1.12.2-beta22</langchain4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- LangChain4j 核心 Spring Boot Starter -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<!-- 阿里百炼 DashScope 集成 Starter -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<!-- 显式添加 DashScope 核心依赖 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope</artifactId>
<version>${langchain4j.version}</version>
</dependency>
</dependencies>
第二步:在 application.yml 中配置百炼参数
langchain4j:
community:
dashscope:
chat-model:
api-key: ${DASHSCOPE_API_KEY} # 使用环境变量存放API Key,更安全
model-name: qwen-max # 在阿里百炼模型广场查看并选择合适的模型
log-requests: true # 开启请求日志,便于调试
log-responses: true # 开启响应日志
注意上面的apikey配置到了环境变量中。
windows电脑如何将apikey添加到环境变量中?
在桌面右键点击"此电脑"或"我的电脑",
选择"属性"。然后点击"高级系统设置",
在弹出的"系统属性"窗口中,点击右下角的"环境变量"
新建环境变量:
在弹出的窗口中,按以下信息填写:
变量名:DASHSCOPE_API_KEY
变量值:粘贴你从阿里云百炼平台获取的真实 API Key。
保存并生效:依次点击"确定",关闭所有设置窗口。
重启终端:如果你当前打开了命令行工具(CMD、PowerShell)或 IDE(如 IntelliJ IDEA),
请将它们全部关闭并重新打开,新的环境变量才能被加载
第三步:编写核心代码
自动注入并使用 ChatModel
LangChain4j会根据配置自动创建 ChatModel 实例。你可以在任意Spring Bean中直接注入它来使用
import dev.langchain4j.model.chat.ChatModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ChatController {
private final ChatModel chatModel;
public ChatController(ChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/chat")
public String chat(@RequestParam(value = "message", defaultValue = "你好") String message) {
String response = chatModel.chat(message);
return response;
}
}
浏览器测试(最简单)
http://localhost:885/ai/chat?message=你好,请介绍一下自己
