SpringBoot中集成LangChain4j实现集成阿里百炼平台进行AI快速对话

场景

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=你好,请介绍一下自己

相关推荐
搞科研的小刘选手1 小时前
【多省气象局支持】第八届物联网、自动化和人工智能国际学术会议(IoTAAI 2026)
大数据·人工智能·物联网·机器学习·自动化·气象·控制科学
陆业聪2 小时前
Prompt、Rule、Skill:被混用了一年的三个词,今天说清楚
android·人工智能·aigc
lolo大魔王2 小时前
Go语言的结构体
开发语言·后端·golang
说点AI2 小时前
我的 Vibe Coding 工具箱:一个人如何从零做出一个产品
前端·后端
洛卡卡了2 小时前
Hermes 接上飞书还不够,飞书 CLI 才是关键这一步
人工智能·aigc
deepdata_cn2 小时前
提示工程(Prompt Engineering)
人工智能·prompt
阿杰学AI2 小时前
AI核心知识124—大语言模型之 智能体工程
人工智能·ai·语言模型·自然语言处理·agent·智能体·智能体工程
SEO_juper2 小时前
2026谷歌 AIO “覆盖卡片” 适配:零点击时代的 GEO 优化方向
人工智能·搜索引擎·谷歌·seo·跨境电商·geo·ai时代
贵慜_Derek2 小时前
我们能从 DeerFlow 学到哪些优秀的技术架构设计
人工智能·设计模式·架构