Java 团队做 AI 应用,第一道选择题几乎都是 Spring AI 还是 LangChain4j。两个框架的名字经常被放在一起比,但它们解决的不是同一层问题,选错方向的代价比选错框架大得多。这篇文章把两家的能力边界摆清楚,只讲能落地的差异,不堆功能列表。

先把结论放前面:已经在 Spring Boot 4.x 生态里的团队,选 Spring AI 摩擦最小;需要最广的模型和向量库覆盖、或者根本不绑 Spring 的,选 LangChain4j。往下看理由。

两个框架的定位

Spring AI 2.0.0 在今年 6 月 GA,基于 Spring Boot 4.0 / 4.1 和 Spring Framework 7.0 构建。它的核心是把 AI 能力做成 Spring 生态里的一等公民:自动配置、依赖注入、可观测性都是 Spring 那一套,用写业务代码的方式调模型。官方自己的定位是"AI 世界的 JDBC"——一套 API 通吃多家模型,切换供应商像换数据源。

LangChain4j 从 2023 年初开始做,走的是另一条路:JVM 上的 AI 工具箱,追求覆盖广度。到 1.19.0,它支持的模型和向量存储数量是 Java 生态里最丰富的,框架本身不绑定 Spring,可以跑在 Quarkus、Micronaut 甚至纯 Java 里。

一句话区分:Spring AI 卖的是"集成效率",LangChain4j 卖的是"场景覆盖"。

模型与 MCP 支持

Spring AI 2.0 做了一次收窄。官方明确把核心项目的供应商支持收敛到一组:OpenAI、Anthropic、Amazon Bedrock、Google GenAI、Mistral、DeepSeek、Ollama,并且把 OpenAI、Anthropic、Google 的实现统一到厂商 SDK 上,以便跟上各家的 API 扩展。收敛的好处是行为一致、bug 少;代价是模型覆盖不如 LangChain4j 广。

LangChain4j 的模型支持以"多"著称,30 多个模型开箱即用,向量库覆盖也是最广的。如果团队要接一个冷门供应商或者特殊向量库,LangChain4j 往往已经有人适配好了。

MCP 两家都支持。Spring AI 2.0 用注解把 MCP 工具声明和消费都做进了框架:@McpTool 暴露工具,SyncMcpToolCallbackProvider 消费远程工具。LangChain4j 的 MCP 在 1.19 进入稳定期,配合 MCP 新规范里 Streamable HTTP 无状态化,集成方式在标准化。这一项两家打平,选谁取决于你更熟哪套注解。

工具调用与 Agent

工具调用是这两家最值得对比的地方,因为 2.0 之后的 Spring AI 在这块动了大手术。

Spring AI 1.x 的问题是每个 ChatModel 实现都内嵌了自己的私有工具执行循环,OpenAI 一套、Ollama 一套,行为不一致。2.0 把工具执行循环提升到 Advisor 链,做成一等公民,可组合、可替换:

String answer = ChatClient.builder(chatModel)
        .build()
        .prompt("帮我查一下今天的退款单量")
        .tools(new RefundTools())
        .call()
        .content();

Advisor 链支持循环重入,工具调用 Advisor 可以重新进入下游链,同一套机制还能用来做结构化输出重试、评估循环。这个设计让工具调用的"循环"从黑盒变成了可以挂东西的钩子。

LangChain4j 走的是声明式 AI 服务,用接口 + 注解把模型交互抽象掉:

interface Assistant {
    @SystemMessage("你是客服助手,用中文回答")
    String chat(@UserMessage String question);
}

Assistant assistant = AiServices.create(Assistant.class, model);
String answer = assistant.chat("我的退款到哪了?");

两者都能做工具调用和 Agent,但风格不同:Spring AI 强调 ChatClient 的链式调用和 Advisor 组合,LangChain4j 强调接口声明式的简洁。后者在复杂多步逻辑上的 Agent 机制更成熟,前者在工具循环的可插拔上更现代。

对比表

维度 Spring AI 2.0 LangChain4j
定位 Spring 生态原生 AI 抽象 框架无关的 AI 工具箱
Java 版本 需 Java 17+(Boot 4.x 基线) 起步要求更低
模型覆盖 收敛到核心供应商 30+ 模型,覆盖最广
向量库覆盖 常用几种 最广
MCP @McpTool 注解 + 双向支持 1.19 进入稳定期
工具调用 Advisor 链,可组合可替换 声明式 AiServices
框架绑定 强绑定 Spring 不绑定,Quarkus/Micronaut 可用
学习成本 低(熟 Spring 即上手) 中高(写法更杂)

选型建议

按团队现状对号入座,比纠结"哪个更好"实用:

  • 项目已经是 Spring Boot 4.x、团队熟 Spring,要快速把 AI 接进现有系统:Spring AI 2.0,摩擦最小,自动配置、依赖注入、可观测性全现成。
  • 项目不是纯 Spring(Quarkus、Micronaut、纯 Java),或要接冷门模型 / 特殊向量库:LangChain4j,覆盖广是它的护城河。
  • 要在 Spring 生态里做多 Agent 编排、工作流:看 Spring AI 的衍生项目(比如阿里维护的 Spring AI Alibaba),而不是硬套核心框架。

不适合谁

两个框架都不适合的场景,说清楚能少走弯路:

  • 只是想跑一个 demo、不想引 Spring Boot 全家桶:两者都偏重,先用官方 SDK 直接调模型更轻。
  • 核心诉求是"确定性、可解释的业务流程编排",而不是"连模型、管向量库":这是另一个层级的问题,Agent 编排类框架解决,别指望在模型接入层里找答案。
  • 项目还在 Java 8、且短期不升级:Spring AI 2.0 的 Boot 4.x 基线够不着,LangChain4j 也可能吃紧,先评估升级成本再定。

选型的本质不是选"更强的框架",是选"离你现有工程最近的那个"。两家没有绝对优劣,只有匹配度。