LangChain4j实战-Java AI应用开源框架之LangChain4j和Spring AI

今天这篇文章我来分享LangChain4j实战-Java AI应用开源框架之LangChain4j和Spring AI。

在贝恩聊架构AI专栏中通过学习如何使用Java相关AI应用开源框架,到后续开发企业级Java AI应用,将大型语言模型和AI工具集成到现有系统中。我们将重点介绍如何使用Spring AI和LangChain4J等开源框架,在Java企业级应用程序中构建高度定制化的AI应用。

随着人工智能(AI)技术的飞速发展,越来越多的开发者开始将目光投向AI应用的开发。然而,目前市场上大多数AI框架如LangChain、PyTorch等主要支持Python,而AI不仅仅是Python开发者所独有的,在Java企业级应用市场一定会涌现出很多基于企业级应用的AI产品,所以对Java AI应用开发框架的掌握是Java开发者将大模型(LLM)和业务系统集成关键的知识点。

AI专栏软件环境

  • IntelliJ IDEA 2024.3.5
  • LangChain4j 0.36.2
  • Spring Boot 3.4.4
  • Spring 6.2.5
  • OpenAI
  • JDK 17.0.13

我们先看本篇文章对应的项目结构,请看下图

接下来我来介绍Java AI技术栈主流的两款开源框架LangChain4j和Spring AI

LangChain4j:docs.langchain4j.dev/

Spring AI:spring.io/projects/sp...

完整代码在文章最后,如果觉得本篇文章对你有用,记得点赞、关注、收藏哦。你的支持是我持续更新的动力!

1 Java AI应用开发框架

1.1 LangChain4j

LangChain4j 是一个专为 Java 开发者设计的开源库,旨在简化将大型语言模型(LLM)集成到 Java 应用程序中的过程。下图为LangChain4j核心组件:

1.1.1 核心组件

  • 基础组件

    • Language Models:模型组件,包含各种类型的模型和模型集成。
    • Prompt Templates:提示模板,负责提示管理、优化和序列化。
    • Output Parsers:输出解析器,将 LLM 的输出解析为更结构化的格式。
    • Memory:记忆组件,用于保存和模型交互时的上下文状态。
  • 高级组件

    • Chains:链,是一系列对各种组件的调用。
    • AI Services:AI 服务,将与 LLMs 和其他组件交互的复杂性隐藏在简单的 API 后面。
    • RAG(检索增强生成) :包含文档加载器、文本切割器、向量模型、向量数据库等组件。

1.1.2 核心功能

  • 统一 API:能方便地接入 15 + 个主流的 LLM 提供商和 20 + 个向量嵌入存储。
  • 综合工具箱:从低级的提示模板、聊天记忆管理到高级的 AI 服务和 RAG 等一应俱全。
  • 多模态支持:支持文本和图像作为输入,能够处理更复杂的应用场景。
  • 模块化设计:不同功能可以独立使用,便于扩展和维护。
  • 高层次抽象:提供低级和高级 api,开发者可按需选择。
  • 良好的集成支持:与 springboot 等流行框架集成良好。
  • 支持流式响应:支持从 LLMs 流式获取响应,允许实时获取模型的输出。

1.1.3 应用场景

  • 企业级应用:在数字化和AI的发展进程中千行百业的应用需要与大模型进行集成。
  • 聊天机器人:可用于构建聊天机器人,实现接受、更改、取消订单等功能
  • 信息提取:能处理大量非结构化数据,如文件、网页等,并从中提取结构化信息,比如从客户评论和支持聊天记录中提取见解。
  • 内容生成与转换:可用于生成应用或网站的内容,还能对信息进行转换。
  • 文本分类与标注:使用内置的模型或者自有模型进行文本分类和标签分配。
  • 机器翻译:整合现有神经网络模型,实现文本间的自动转换。

1.2 Spring AI

Spring AI 是 Spring 生态系统中用于人工智能和机器学习集成的应用程序框架。以下是关于Spring AI详细介绍:

1.2.1 核心功能

  • 简化集成:提供统一且简化的 API,让开发者能轻松将 AI 和机器学习模型集成到 Spring 应用中,无需处理复杂的底层细节。
  • 丰富的生态支持:依托 Spring 强大的生态,可与 Spring Boot、Spring Cloud 等无缝集成,便于构建现代化的 AI 驱动的微服务和分布式系统。
  • 模型管理便捷:支持 OpenAI、Azure OpenAI、Hugging Face、DeepSeek 等多种主流 AI 模型,方便开发者管理和部署。
  • 数据处理优势:借助 Spring Data 等模块,能高效进行数据访问、预处理和后处理,为 AI 模型训练和推理提供优质数据支持1。
  • 集成多种大模型功能:涵盖自然语言处理、机器学习集成、图像处理与计算机视觉、检索增强生成、函数调用、向量数据库集成等。
  • 支持多种接入方式:支持同步 API 和流 API,开发者可以根据自己的需求选择适合的接入方式,以实现更高效的 AI 交互。

1.2.2 核心组件

  • Spring AI Core:核心模块,提供基本的抽象和工具,如模型加载、预测执行等功能,是与各种 AI 框架交互的基础。
  • Spring AI Integrations:集成模块,包含与具体 AI 框架的集成实现,使 Spring 应用能与不同框架的模型进行交互。
  • Spring AI CLI:命令行界面工具,方便开发者通过命令行快速进行模型管理、训练和推理等操作,提高开发效率。

1.2.3 应用场景

  • 企业级应用:在数字化和AI的发展进程中千行百业的应用需要与大模型进行集成。
  • 自然语言处理领域:可构建智能客服系统,集成自然语言处理模型,理解和处理用户输入的文本,实现自动回复。还能进行文本生成、情感分析等任务。
  • 图像识别领域:在图像管理系统中,使用 Spring AI 集成图像识别模型,对上传的图片进行自动分类和标注,也可用于目标检测、图像分割等。
  • 预测分析领域:在金融风险预测等应用里,借助 Spring AI 集成机器学习模型,对金融数据进行分析和预测,帮助企业做出决策。在电商领域,可根据用户行为数据进行购买预测,优化推荐系统。
  • 语音处理领域:支持语音识别和合成技术,使得智能音箱、语音助手等设备能够更好地理解和回应用户的指令。
  • 智能办公领域:可以实现文档内容的自动提取、分类和总结,提高办公效率。

2 LangChain4j和Spring AI

2.1 技术架构

  • LangChain4j:提供从底层的提示模板、聊天记忆管理、输出解析到高级模式(如 AI 服务和检索增强生成 RAG)的工具。有底层和高级两个抽象层次,底层可直接访问核心组件,高级提供更高层次 API 隐藏复杂性。
  • Spring AI:基于 Spring 框架的核心设计理念,提供强大且灵活平台。采用模块化架构,比如支持 RAG 通过提供模块库来构建 RAG 流。

2.2 集成能力

  • LangChain4j:可以与 Spring Boot 等主流 Java 框架无缝集成,还与 Quarkus 集成,支持 20 多个向量嵌入存储。
  • Spring AI:与 Spring Boot、Spring Data、Spring Security 等 Spring 项目无缝集成,利用 Spring 生态优势。

2.3 兼容性

  • LangChain4j:从 0.36 版本开始需要 Java 17 及以上版本,之前兼容 Java 8+。
  • Spring AI:要求 Java 17 + 和 Spring Boot 3。

2.4 社区支持

  • LangChain4j:社区活跃,反馈迅速,能快速整合最新 AI 技术。
  • Spring AI:项目处于成长期,API 变动相对较大

3 LangChain4j实战

3.1 LangChain4j支持的LLMs

供应商 流式调用 函数 JSON 多模态 观测
Amazon Bedrock ✅ ✅ text
Anthropic ✅ ✅ text, image
Azure OpenAI ✅ ✅ ✅ text, image ✅
ChatGLM text
DashScope ✅ ✅ text, image, audio ✅
GitHub Models ✅ ✅ ✅ text ✅
Google AI Gemini ✅ ✅ text, image, audio, video, PDF ✅
Google Vertex AI Gemini ✅ ✅ ✅ text, image, audio, video, PDF ✅
Google Vertex AI PaLM 2 text
Hugging Face text
Jlama ✅ ✅ text
LocalAI ✅ ✅ text
Mistral AI ✅ ✅ ✅ text
Ollama ✅ ✅ ✅ text, image ✅
OpenAI ✅ ✅ ✅ text, image ✅
Qianfan ✅ ✅ text
Cloudflare Workers AI text
Zhipu AI ✅ ✅ text, image ✅

3.2 模型(LLM)选择

模型供应商 主要特点 优势 备注
OpenAI GPT系列(如GPT-4),具备强大的文本生成与理解能力 灵活性高,适用于多种应用场景。大模型界的事实标准 暂停对国服的API服务,需要通过 Azure 接入
DeepSeek 开源大模型,支持多语言 推理与编码任务表现优异,社区活跃,支持多样化应用 性价比高,输入价格(缓存命中): 缓存未命中):1元/百万
阿里百炼 提供多种大模型服务(如通义千问和各种开源、商用模型) 性能接近GPT-4,API价格较低,支持企业迁移方案 主要面向企业用户 所有新用户可获得超过5000万Tokens的免费额度及4500张图片生成额度,以鼓励更多企业使用
智谱清言 基于GLM架构,支持多轮对话与复杂指令处理 指令理解能力强,支持多场景下的定制化解决方案 模型全面;不定期有大型优惠活动
讯飞星火 强大的生态支持,较全面的商业化场景 高效的推理速度和广泛的应用场景 讯飞星火大模型具有强大的自然语言处理能力、丰富的预训练数据、高效的推理速度
Ollama 支持本地部署,集成多种开源模型,隐私保护优先 强调用户隐私和自主性 需要较高的硬件配置以支持本地部署
硅基流动 专注于AI基础设施,提供SiliconCloud平台 高效推理,多模态支持,降低使用门槛,提升开发效率 主要面向技术开发者。提供了一系列开源大模型的API服务,其中多个开源大模型如Qwen2、GLM4和Yi1.5均为永久免费,这使得开发者可以自由使用这些模型进行应用开发,而无需承担费用
零一万物 开源模型 Yi Model 系列 API 具备较快的推理速度,这不仅缩短了回复延迟,同时也保持了出色的模型效果 零一万物 API 与 OpenAI API 完全兼容,你只需修改少量代码,即可平滑迁移

3.3 项目搭建

3.3.1 pom依赖

xml 复制代码
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>cn.itbeien.ai</groupId>
        <artifactId>langchain4j-labs</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
​
    <artifactId>lab01</artifactId>
​
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <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>
        </dependency>
        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-spring-boot-starter</artifactId>
        </dependency>
​
        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
        </dependency>
    </dependencies>
​
</project>

3.3.2 代码实现

3.3.2.1 实现简单对话
java 复制代码
 package cn.itbeien.langchain4j.ai.controller;
    ​
    import dev.langchain4j.model.chat.ChatLanguageModel;
    import jakarta.annotation.Resource;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    ​
    /**
     * @author itbeien
     * 项目网站:https://www.itbeien.cn
     * 公众号:贝恩聊架构
     * 全网同名,欢迎小伙伴们关注
     * Java/AI学习社群
     * Copyright© 2025 itbeien
     */
    @RestController
    @RequestMapping("/openai")
    public class OpenAIController {
        @Resource
        private ChatLanguageModel chatLanguageModel;
    ​
        /*@Value("${langchain4j.open-ai.chat-model.api-key}")
        private String apiKey;
    ​
        @Value("${langchain4j.open-ai.chat-model.model-name}")
        private String modelName;*/
    ​
       /* @Bean
        public ChatLanguageModel chatLanguageModel() {
            return OpenAiChatModel.builder()
                    .apiKey(this.apiKey)
                    .modelName(this.modelName)
                    .build();
        }*/
    ​
        @GetMapping("/hello")
        public String helloAI() {
            return chatLanguageModel.generate("你是哪家公司开发的");
        }
    }

3.3.3 代码测试

运行 cn.itbeien.langchain4j.ai.test.LangChain4jLab01Test进行单元测试

4 源码地址

贝恩聊架构-AI专栏,SpringBoot3专栏系列文章、资料和源代码会同步到以下地址,代码和资料每周都会同步更新

该仓库地址主要用于存放贝恩聊架构-贝恩聊架构-AI专栏、SpringBoot3专栏、基于企业级支付系统学习微服务整体技术栈所有资料和源码

Gitee gitee.com/itbeien/pro...

Github github.com/itbeien/pro...

相关推荐
哦虎!2 小时前
【JavaEE】网络初识
java
for_ever_love__2 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
我是人✓3 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
欣栀♡3 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
IT研究室4 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项4 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs
Wang's Blog4 小时前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务提供者
java·dubbo·交友
秋饼4 小时前
Spring AI 2.0 结构化输出企业级实战:从 BeanOutputConverter 源码到生产级解析容错
java·ai·技术分享·后端开发
摇滚侠4 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y5 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python