什么是 Spring AI ?

Spring AI 是 Spring 官方推出的、Java/Spring 生态专用的「大模型 / 生成式 AI 开发框架」,目标是让 Java 开发者用熟悉的 Spring Boot 方式,快速把 AI 能力(聊天、知识库、智能体等)集成到企业系统里

核心功能

  • Chat(对话):普通问答、SSE 流式输出、多轮对话记忆Spring
  • Embedding(嵌入):文本向量化,用于语义搜索 / 知识库Spring
  • RAG:结合向量数据库(Milvus、PGVector、Redis 等)做企业私有知识库问答
  • Function Calling:让大模型自动调用你的 Java 服务接口(如查订单、查天气)。
  • Structured Output:把大模型返回的 JSON 直接绑定到Java POJO,避免手动解析字符串Spring
  • 多模态:图文理解、音频转录、文生图等

Spring AI = Spring Boot + 大模型工具箱,帮你用 Java 低成本、安全地把 AI 能力放进企业系统

Spring AI 2.0 核心功能

Spring AI 2.0(最新 2.0.0-M4)核心是:统一 API、增强 RAG、强类型结构化输出、生产级可观测、Agent 化与 MCP 协议、全栈企业级能力,基线升级为 Spring Boot 3.5+ / Java 17+,正式面向生产环境。

统一模型接入层(核心基石)

  • ChatClient 统一 API:一套代码对接 50+ 主流模型(OpenAI GPT-4o/5.4、Claude 4.6、Gemini 3.1、通义千问、DeepSeek、Ollama 本地模型等),配置切换、代码不动
  • 多模态原生支持:文本、图像、音频、视频理解与生成(文生图、语音转文字)。
  • 流式响应(SSE):Flux 逐字输出,支持打字机效果 + 工具调用并行。
  • 结构化输出.entity(Class<T>) 直接绑定 Java POJO/Record,自动生成 JSON Schema,零手动解析 JSON

增强型 RAG(企业知识库标配)

  • 全栈 RAG 流水线:文档解析(PDF/Word/Markdown/HTML)→ 自动分块 → 向量化 → 向量存储 → 检索 → 重排 → 生成,开箱即用
  • 15+ 向量库统一适配:Milvus、PGVector、Redis、Neo4j、Chroma、MongoDB 等,跨库 SQL 风格元数据过滤(如 where category='finance' and date>'2025-01-01')。
  • 对话记忆持久化:ChatMemory 支持 Oracle、MongoDB、H2 等数据库,多轮会话上下文自动管理

Tool Calling / Function Calling(AI 与业务打通)

  • 注解式工具注册@Component + @Tool 自动扫描注册 Spring Bean 为 AI 工具,零手动注册。
  • 流式工具调用:支持 “打字机输出 + 工具调用并行”,提升交互体验。
  • 错误处理与重试:内置重试、熔断、超时、降级、多模型 Failover / 权重路由。
  • 强类型安全:工具参数 / 返回值自动映射 Java 类型,编译期检查。

Advisors 机制(横切能力复用)

  • 类似 Servlet Filter 的链式组件:封装 RAG、记忆、日志、限流、安全、监控等通用逻辑,按需组合、灵活插拔
  • 内置常用 Advisor
    • RetrievalAugmentationAdvisor:RAG 检索注入
    • ChatMemoryAdvisor:对话上下文管理
    • LoggingAdvisor:请求 / 响应日志
    • SafetyAdvisor:内容安全过滤
    • RateLimitingAdvisor:限流保护

Agent 与 MCP 协议(面向智能体时代)

  • Agent Skills 模块化技能系统:可组合、可复用的智能体能力单元(如搜索、计算、数据库查询)。
  • MCP(Model Context Protocol)客户端 / 服务端:标准化智能体上下文交互协议,支持跨平台、跨语言智能体协作
  • 自主规划与执行:智能体可自动拆解复杂任务、调用工具、迭代优化结果。

Spring AI 2.0 是 Java 企业级 AI 开发的生产级框架,以 “统一抽象、强类型安全、企业级可观测、Agent 化” 为核心,让 Spring 开发者用熟悉的方式快速构建 RAG 知识库、AI 助手、智能体应用无需切换技术栈、无需 Python 背景

Spring AI 与 LangChain4j的区别

维度

Spring AI

LangChain4j

归属背景

Spring 官方出品

社区开源,民间主导

生态绑定

强绑定 Spring Boot/Spring Cloud

不绑定,普通 Java、Spring、Quarkus 都能用

自动配置

完整 Starter 自动配置,yml 直接配模型

无自动配置,纯代码手动初始化

上手难度

低,约定大于配置

中等,需要自己组装组件

模型适配

官方维护主流模型:OpenAI、通义、Ollama、DeepSeek 等

社区适配模型更多,更新快

Function Calling

注解式 @Tool

,自动扫描注册

手动定义工具、手动注册,更灵活

RAG 知识库

内置封装向量库(Milvus/Redis/PGVector)

组件化拼装,自由度更高

结构化输出

原生支持直接返 POJO/Record

需自己封装解析或用官方工具

流式 SSE

原生适配 Web/SSE,适配前后端

需自己封装 SSE 推送

可观测性

原生对接 Spring Boot Actuator、监控链路

无内置监控,需自己接入

版本稳定性

官方维护,版本规范,适合生产

社区迭代快,偶尔有兼容小坑

适用场景

企业项目、微服务、Spring 栈团队、生产落地

个人 demo、原型快速开发、非 Spring 项目、轻量化 AI

总结

企业正规开发、Spring 技术栈 → 首选 Spring AI

个人研究、原型开发、追求灵活自定义 → 选 LangChain4j

3分钟跑通 第一个 AI 应用对话

新建项目,SpringBoot 2.0.0-M4、jdk17、SpringBoot版本 4.0.6

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>4.0.6</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
        <java.version>17</java.version>
        <spring-ai.version>2.0.0-M4</spring-ai.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webmvc</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-openai</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

配置文件

  ai:
    openai:
      api-key: ${API_KEY}
      base-url: https://dashscope.aliyuncs.com/compatible-mode
      chat:
        options:
          model: qwen3.6-plus

创建对话类

@RestController
@RequestMapping("/ai/")
public class AiController {

    private final ChatClient chatClient;

    public AiController(ChatClient.Builder builder) {
        this.chatClient = builder.build();
    }

    @RequestMapping("chat")
    public String ai(String question) {
        return chatClient.prompt() // 创建一个 Prompt 对象,用于构建聊天请求。
                .user( question) // 设置用户输入的文本。
                .call() // 调用 ChatClient 对象的 call() 方法,发送聊天请求给大模型并获取响应。
                .content(); // 获取响应的文本内容。
    }

请求:localhost:8080/ai/chat?question=你好

SSE 流式输出,实现打字机效果

@RequestMapping(value = "chat-stream", produces = "text/html;charset=utf-8")
public Flux<String> chatStream(@RequestParam("message") String message) {
    return chatClient.prompt(message)
            .stream()
            .content();
}

请求:localhost:8080/ai/chat-stream?message=你好

接入 Function Call 让大模型调用你的方法

新增 Tool 工具类

@Component
public class AiTools {

    @Tool(description = "查询城市实时天气信息")
    public String getWeather(@ToolParam(description = "城市") String city) {
        System.out.println(city);
        return city + "晴 26℃ 东风 3 级";
    }

    @Tool(description = "查询订单状态,输入订单号返回订单信息")
    public String queryOrderInfo(@ToolParam(description = "订单号") String order) {
        //实际项目中查询数据库
        return order + "已发货,目前到达 杭州,预计还有1天送达";
    }

}

新增接口

@GetMapping("/with-tools")
public String chatWithTools(@RequestParam String message) {
    return chatClient.prompt()
            .user(message)
            .tools(aiTools)
            .call()
            .content();
}

调用:http://localhost:8080/ai/with-tools?message=北京天气怎么样

调用:http://localhost:8080/ai/with-tools?message=查询订单 00123状态

结构化输出 AI 回复内容 直接转为Java对象

@GetMapping("/recommend")
public MovieList recommend(@RequestParam String genre) {
    return chatClient.prompt("推荐 3 部" + genre + "类型的经典电影,包含名称、类型、年份、评分和推荐理由")
            .call()
            .entity(MovieList.class);  // 直接映射到 Java 对象
}

public record MovieRecommendation(
        String title,
        String genre,
        int year,
        double rating,
        String reason
) {}

public record MovieList(
        List<MovieRecommendation> movies
) {}

请求:http://localhost:8080/ai/recommend?genre=%E5%8A%A8%E7%94%BB

多模态切换 多个模型实时切换

@GetMapping("/with-model")
public String chatWithModel(
        @RequestParam String message,
        @RequestParam(defaultValue = "anthropic/claude-opus-4.6") String model
) {
    return chatClient.prompt(message)
            .options(OpenAiChatOptions.builder()
                    .model(model)
                    .temperature(0.7)
                    .build())
            .call()
            .content();
}

请求 localhost:8080/ai/with-model?message=你是谁&model=deepseek-v4

结语

2026,Java 正式全面拥抱 AI!

依托 Spring AI,Spring 生态开发者无需切换技术栈、不用 Python 基础,沿用熟悉的开发模式,就能快速落地 RAG 知识库、AI 对话助手、多智能体协作等企业级 AI 应用,轻松完成传统业务系统智能化升级。

值得一提的是,阿里推出的 Spring AI Alibaba,更是基于 Spring AI 深度优化,生态开发者可凭借熟悉的开发模式,快速落地 RAG 知识库、AI 对话助手、多智能体协作等企业级 AI 应用,更适配国内业务场景,对接阿里云大模型更便捷、开发落地更高效!

AI 浪潮飞速迭代,唯有坚持持续学习,才能紧跟技术趋势,站稳时代风口。

更多推荐