什么是 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 浪潮飞速迭代,唯有坚持持续学习,才能紧跟技术趋势,站稳时代风口。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐