Spring AI[01]:初识 Spring AI-Java 开发者的 AI 新纪元

Spring AI[01]:初识 Spring AI-Java 开发者的 AI 新纪元

1.1 什么是 Spring AI?

你可能已经听说过 LangChain(Python 生态中最流行的 AI 应用开发框架),它让开发者可以轻松地将大语言模型(LLM)与数据、工具和业务逻辑结合起来,构建出强劲的 AI 应用。而 Spring AI,正是 Spring 团队为 Java 开发者打造的“LangChain for Java”。

它不是简单地把 LangChain 翻译成 Java,而是基于 Spring 生态(尤其是 Spring Boot)重新设计的一套企业级 AI 集成框架,目标是:

✅ 让 Java 开发者也能像 Python 开发者一样,快速、安全、可维护地构建 AI 增强的应用程序。

1.2 为什么 Java 开发者也需要玩转 AI?

大多数人都觉得,在AI应用开发方面,用Python是最佳的选择,甚至许多 Java 工程师可能会觉得:“AI 是 Python 的天下,我用不到。”

但现实是:

  • 90% 以上的企业核心系统是用 Java(Spring)构建的(ERP、CRM、金融系统等)。
  • 这些系统积累了海量的业务数据和流程。
  • 如果能让这些系统“变机智”,列如:自动生成报表、智能客服问答、自动化审批、文档摘要提取,那将极大提升企业效率。

而 Spring AI 正是连接 企业级 Java 系统前沿 AI 模型 的桥梁。

1.3 Spring AI 与 LangChain 的异同

LangChain 作为 Python 生态的 “AI 开发瑞士军刀”,以模块化、高灵活性著称,但 Spring AI 在企业级场景中展现出独特价值,核心差异如下:

对比维度

Spring AI 优势体现

LangChain 特点

技术栈适配性

原生支持 Java 技术栈,API 设计符合 Spring 编程习惯(注解、依赖注入),可直接复用 Java 成熟库(如 JDBC、Apache POI),无需跨语言协作。

基于 Python 构建,依赖 Pandas、Matplotlib 等 Python 生态工具,Java 团队需额外维护 Python 服务。

生态集成

与 Spring Boot、Spring Cloud 深度融合,可将 AI 能力直接嵌入 CRM、ERP 等现有系统,避免系统重构,让老系统迅速具备AI 能力

需通过 HTTP 接口与 Java 系统对接,增加跨服务调用复杂度和故障点。

部署与运维

支持打包为 JAR 包或 GraalVM 原生镜像,无缝对接 K8s、Serverless 等企业级环境,与现有 Spring 应用运维体系一致。

依赖 Python 虚拟环境,在企业级运维中兼容性较弱,跨环境部署易出现依赖冲突。

学习与迁移成本

Java 开发者无需学习新范式,可复用 Spring 技术积累;模型切换仅需修改配置,代码复用率高。

需掌握 Python 及 LangChain 特有概念(如 Chain、Agent),跨语言团队沟通成本高。

简单说:LangChain 更适合研究和原型,Spring AI 更适合生产环境。

Spring AI[01]:初识 Spring AI-Java 开发者的 AI 新纪元

1.4 开发前准备工作

1.4.1 大模型选型

Spring AI 通过统一接口支持多厂商模型,无需修改代码即可切换,结合 2025 年最新生态支持,推荐选型如下:

模型类型

代表产品

适用场景

优势说明

海外主流模型

OpenAI GPT-3.5/4/4o/5

通用对话、代码生成

生态成熟,支持复杂 Prompt 工程,适合原型验证

Anthropic Claude 3

长文本处理(10 万 + tokens)

上下文窗口大,金融法律文档分析场景适配

国产开源模型

阿里通义千问 QwQ-32B

企业级部署、成本敏感场景

国家超算平台提供免费 100 万 tokens 试用,320 亿参数量性能接近大模型

DeepSeek Chat

代码生成、数学推理

原生支持 Spring AI Starter 依赖,国内访问延迟低

本地部署模型

Ollama + Llama 3

隐私敏感、离线场景

支持 Docker 部署,适配嵌入式向量数据库查询

选型提议:测试阶段优先使用通义千问 QwQ-32B(免费额度),生产环境根据合规要求选择阿里云 / OpenAI 企业版。

当然可选的大模型还有许多。海外模型由于一些缘由,我们可能无法直接使用,但AI喵已经为大家清除了这些障碍,请扫描文章最下方二维码。

1.4.2 阿里云百炼

本系列教程将使用阿里百炼平台提供的大模型,需要您到阿里百炼平台注册账号。注册地址:
https://bailian.console.aliyun.com/

注册完毕登录控制台,左侧秘钥管理中可以创建 API-KEY, 这样我们就可以在应用中使用了。

1.4.3 本地项目搭建

  • 基础环境要求

组件

最低版本

推荐版本

说明

JDK

17

21(LTS)

Spring AI 1.0.0 + 需 JDK 17+,JDK 21 支持虚拟线程优化 AI 任务调度

Spring Boot

3.2.x

3.4.5

需与 Spring AI 版本匹配(如 Spring AI 1.0.2 适配 Spring Boot 3.4.5)

构建工具

Maven 3.6+ / Gradle 8.0+

Maven 3.9.6

推荐 Maven 管理依赖,通过 BOM 统一版本控制

开发工具

IntelliJ IDEA 2023+

2024.2

安装 Spring Assistant 插件快速创建项目

可选依赖

Docker 20.10+

25.0.0

用于本地部署向量数据库(如 Milvus)或 Ollama 模型

  • 项目说明

本系列教程采用maven父子项目,每个章节作为一个子项目(模块),并放到 github上。所有版本将采用基础环境要求的推荐版本。

Spring AI[01]:初识 Spring AI-Java 开发者的 AI 新纪元

<!-- 
这里只给出重大部分,完整文件请移步
https://github.com/kaiwill/kaifamiao/blob/master/pom.xml
-->
<properties>
  ...
  <java.version>21</java.version>

  <!-- Spring AI -->
  <spring-ai.version>1.0.2</spring-ai.version>
 
  <!-- Spring Boot -->
  <spring-boot.version>3.4.5</spring-boot.version>
  <!--阿里百炼提供了SDK,为了方便这里引入了 Alibaba Cloud AI -->
  <spring-ai-alibaba.version>1.0.0.3</spring-ai-alibaba.version>
  
  <fastjson.version>2.0.51</fastjson.version>
  ...
</properties>
...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.fastjson2</groupId>
            <artifactId>fastjson2</artifactId>
            <version>${fastjson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
            <version>${spring-ai-alibaba.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
...
<!--  完整文件请查看  -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 模型依赖:根据选型替换(如openai/deepseek/qwq) -->
    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>
        <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

本章节将会在 chapter01 中配置Spring AI基础环境,选择的是 阿里云百炼平台。

  • 获取API Key,参考文档 https://bailian.console.aliyun.com/?tab=api#/api
  • 测试环境中,我们可以将 API Key 配置到环境变量中。参考文档:https://bailian.console.aliyun.com/?tab=api#/api/?type=model&url=2803795
  • 这里选择用阿里百炼提供的SDK,所以引入了 spring-ai-alibaba-starter-dashscope这个starter
  • ,如果使用`spring-ai-starter-model-openai`则需要配置 `base_url`为 `[https://dashscope.aliyuncs.com/compatible-mode/v1](https://dashscope.aliyuncs.com/compatible-mode/v1)` 即可,由于`spring-ai-starter-model-openai`默认访问的是 openai
spring:
  ai:
    dashscope:
      api-key: ${AI_BAI_LIAN_API_KEY} # 必填,在操作系统环境变量中设置这个变量后,重启IDEA才能生效。由于IDEA启动的时候会缓存这个变量
      chat:
        options:
          model: qwen-plus
          # 这个值0~1,值越大代表生成的结果随机性越强。如果是一个聊天,这个值可以大一点。如果是一些严谨的规划,则这个值可以设置小一些
          temperature: 0.7
// chapter01/src/main/java/com/kaifamiao/chapter01/Application.java
@SpringBootApplication
@Slf4j
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

如果项目能正常启动,那么说明基本环境已经搭建好了。

下一章预告:第2章《核心 API 入门 —— 使用 ChatClient 与大模型对话》

在下一章中,我们将深入 ChatClient API,学习:

  • 如何发送结构化消息(User/System/Assistant)
  • 如何使用流式响应(Streaming)实现“打字机效果”
  • 如何使用 PromptTemplate 构建动态提示词
  • 实战:构建一个“AI 写周报”功能

准备好了吗?我们下一章继续!

源代码地址:
https://github.com/kaiwill/kaifamiao

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...