2026 年 5 月 28 日,Spring AI 2.0.0 GA 正式发布在即。对于 Java 开发者而言,这无疑是 AI 工程化的一座里程碑。但在你决定 All In 之前,不妨花十分钟,了解一下 Java AI 框架的另一条路。
一、同一个目标,不同的路线
Spring AI 和 Solon AI 都在解决同一个问题:让 Java 开发者能够以工程化的方式接入和使用 AI 能力。但两者的路线截然不同。
Spring AI 2.0 的定位是 "Spring 生态的 AI 层"。它建立在 Spring Boot 4.0 + Spring Framework 7.0 的基线之上,深度融入 Spring 的 IoC、自动配置、可观测性体系。如果你已经是 Spring 生态的重度用户,这是最自然的选择。
Solon AI 的定位是 "框架无关的 AI 全栈"。它从 Java 8 到 Java 25 全覆盖,不绑定任何特定框架,可以嵌入 Solon、Spring Boot,甚至纯 Java SE 项目。更重要的是,它不仅提供了 LLM 调用层,还构建了一套完整的 Agent 体系、RAG 管道、多 Agent 协作协议和智能体运行时引擎。
用一个比喻来说:Spring AI 像是一家豪华酒店的全套客房服务,你在里面住着很舒服;Solon AI 则像是一辆功能齐全的房车,你可以把它开到任何地方。
二、核心能力逐项对比
2.1 总览对比
先看一张全景对比表:
| 维度 | Spring AI 2.0 | Solon AI |
|---|---|---|
| 当前版本 | 2.0.0-M6(GA: 2026-05-28) | v3.10.6(2026-05-13) |
| Java 版本 | 21+ | 8 ~ 25 |
| 框架依赖 | 强依赖 Spring Boot 4.0 | 框架无关(可嵌入任意框架) |
| LLM 调用 | ChatClient + ChatModel | ChatModel(统一接口+多方言) |
| Tool Calling | @Tool + ToolCallback | @ToolMapping + MethodToolProvider |
| Agent 体系 | 无原生 Agent(依赖 Advisor) | 三级原生 Agent |
| Multi-Agent | 无原生,需 Spring AI Alibaba | 7 种 MAS 协作协议(含 A2A) |
| MCP | Client + Server + Auto-Config | Client + Server + Proxy + Remote Skills |
| ACP/A2A | 支持 | 支持 |
| Harness 运行时 | 无 | 完整智能体运行时引擎 |
| 可观测性 | Micrometer 原生 | 基础日志 |
| 模型后端 | 20+ | 多方言适配 |
| 语义缓存 | Redis 语义缓存 | 未明确 |
接下来,我们挑几个核心能力做代码级对比。
2.2 LLM 调用方式对比
Spring AI 2.0:ChatClient 流式 API
java
// Spring AI 2.0 - ChatClient 调用示例
ChatModel chatModel = ... // 通过自动配置注入
String response = ChatClient.create(chatModel)
.prompt("请介绍一下 Java 21 的虚拟线程")
.call()
.content();
System.out.println(response);
Spring AI 提供了两种调用层次:
- ChatClient:高层流式 API,类似 WebClient 的风格,适合大多数场景
- ChatModel:底层接口,直接操作 Prompt 和 ChatResponse,适合需要精细控制的场景
Solon AI:ChatModel 统一接口
java
// Solon AI - ChatModel 调用示例
ChatModel chatModel = ChatModel.of("https://api.moark.com/v1/chat/completions")
.apiKey("***")
.model("Qwen3-32B")
.build();
String response = chatModel.prompt("请介绍一下 Java 21 的虚拟线程")
.call()
.getContent();
System.out.println(response);
Solon AI 的 ChatModel 是统一入口,通过"方言"机制适配不同模型供应商。它不依赖自动配置,纯 Java 构建即可运行。
小结:两者在基础 LLM 调用上体验接近。Spring AI 更依赖 Spring 容器注入;Solon AI 更像纯 Java API,手动构建即用。
2.3 Tool / Function Calling 对比
Tool Calling 是 AI 应用最核心的增强能力之一,让模型能够调用外部工具来获取信息或执行动作。
Spring AI 2.0:@Tool 注解
java
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.context.i18n.LocaleContextHolder;
import java.time.LocalDateTime;
class DateTimeTools {
@Tool(description = "获取用户所在时区的当前日期和时间")
String getCurrentDateTime() {
return LocalDateTime.now()
.atZone(LocaleContextHolder.getTimeZone().toZoneId())
.toString();
}
@Tool(description = "为用户设置指定时间的闹钟,时间格式为 ISO-8601")
void setAlarm(@ToolParam(description = "ISO-8601 格式的时间") String time) {
System.out.println("闹钟已设置: " + time);
}
}
调用时将工具实例传入 ChatClient:
java
ChatModel chatModel = ... // 自动配置注入
String response = ChatClient.create(chatModel)
.prompt("帮我设一个10分钟后的闹钟")
.tools(new DateTimeTools())
.call()
.content();
Spring AI 还支持 @Bean 动态注册、FunctionToolCallback 编程式构建等多种方式。
Solon AI:@ToolMapping 注解
java
import org.noear.solon.ai.annotation.ToolMapping;
import org.noear.solon.annotation.Param;
public class WeatherTools {
@ToolMapping(description = "获取指定城市的天气情况")
public String get_weather(
@Param(name = "location", description = "根据用户提到的地点推测城市")
String location) {
return "晴,24度"; // 实际业务中可查询数据库或网络接口
}
}
调用时通过 options 将工具类动态添加:
java
chatModel.prompt("今天杭州的天气情况?")
.options(o -> o.toolAdd(new WeatherTools()))
.call();
Solon AI 也支持 MethodToolProvider 显式包装,或者将工具类配置为 Solon 组件(@Component),从而支持依赖注入和 AOP 拦截。
小结 :两者的 Tool 声明体验高度相似------都是注解驱动 + 自动 Schema 生成。Spring AI 的 @Tool + @ToolParam 与 Solon AI 的 @ToolMapping + @Param 在功能上对等。差异在于 Spring AI 强绑定 Spring 容器,而 Solon AI 可以在任意环境中使用。
2.4 Agent 体系对比 ------ 最大的差异点
这是两个框架之间最大的结构性差异。
Spring AI 2.0:无原生 Agent 抽象
Spring AI 2.0 没有提供原生的 Agent 抽象。它通过 Advisors API 来实现类似 Agent 的行为,本质上是一个请求/响应的拦截器链:
java
// Spring AI - 使用 ToolCallAdvisor 实现工具调用循环
var toolCallAdvisor = ToolCallAdvisor.builder()
.toolCallingManager(toolCallingManager)
.advisorOrder(BaseAdvisor.HIGHEST_PRECEDENCE + 300)
.build();
var chatClient = ChatClient.builder(chatModel)
.defaultAdvisors(toolCallAdvisor)
.build();
String response = chatClient.prompt("帮我查询订单状态并更新")
.tools(new OrderTools())
.call()
.content();
如果需要多 Agent 协作能力,通常需要引入 Spring AI Alibaba 扩展包,或者自行基于 Advisor 链组合实现。
Solon AI:三级原生 Agent 体系
Solon AI 内置了三个层级的 Agent 实现,覆盖从简单到复杂的全部场景:
| Agent 层级 | 类名 | 特征 |
|---|---|---|
| 点 | SimpleAgent | 单次调用,直接与 LLM 交互 |
| 圈 | ReActAgent | 推理-行动闭环,自主规划、选工具、观察结果 |
| 网 | TeamAgent | 多 Agent 协作,7 种 MAS 协作协议 |
SimpleAgent 示例
java
import org.noear.solon.ai.agent.simple.SimpleAgent;
import org.noear.solon.ai.chat.ChatModel;
public class SimpleAgentDemo {
public static void main(String[] args) throws Throwable {
ChatModel chatModel = ChatModel.of("https://api.moark.com/v1/chat/completions")
.apiKey("***")
.model("Qwen3-32B")
.build();
SimpleAgent robot = SimpleAgent.of(chatModel)
.defaultToolAdd(new TimeTool())
.build();
String answer = robot.prompt("现在几点了?")
.call()
.getContent();
System.out.println("Robot 答复: " + answer);
}
public static class TimeTool {
@ToolMapping(description = "获取当前系统时间")
public String getTime() {
return java.time.LocalDateTime.now().toString();
}
}
}
ReActAgent 示例
ReActAgent 采用"规划 + 推理 + 行动"闭环模式,能自主进行思考、选择工具执行动作并观察结果,直至完成复杂任务:
java
import org.noear.solon.ai.agent.react.ReActAgent;
import org.noear.solon.ai.chat.ChatModel;
public class ReActAgentDemo {
public static void main(String[] args) throws Throwable {
ChatModel chatModel = ChatModel.of("https://api.moark.com/v1/chat/completions")
.apiKey("***")
.model("Qwen3-32B")
.build();
ReActAgent agent = ReActAgent.of(chatModel)
.defaultToolAdd(new CalculatorTool())
.defaultToolAdd(new SearchTool())
.build();
String answer = agent.prompt("计算 (123 + 456) * 2 的结果")
.call()
.getContent();
System.out.println("Agent 答复: " + answer);
}
}
ReActAgent 的执行过程类似人类:先 思考 要怎么做,然后 选择工具 执行,再 观察 结果,循环往复直到问题解决。它还支持 Plan-ReAct 模式(先规划再执行)、人工介入(HITL)、上下文摘要压缩等高级能力。
TeamAgent + 7 种协作协议
当任务复杂到单个 Agent 无法胜任时,TeamAgent 登场。它支持 7 种多 Agent 协作协议:
| 协议 | 说明 | 适用场景 |
|---|---|---|
| NONE | 透明式,Agent 自由协商 | 简单协作 |
| HIERARCHICAL | 层级式,主 Agent 分配任务 | 项目管理 |
| SEQUENTIAL | 顺序式,Agent 依次执行 | 流水线任务 |
| SWARM | 蜂群式,按能力自发认领 | 并行处理 |
| A2A | 对等式,Agent 间直接通信 | 跨系统互联 |
| CONTRACT_NET | 合同网,招标-投标机制 | 资源分配 |
| MARKET_BASED | 市场式,基于价格协商 | 竞争性任务 |
这意味着你不需要从零构建多 Agent 编排逻辑,Solon AI 直接提供了经过验证的协作协议实现。
2.5 MCP 集成对比
MCP(Model Context Protocol)是 Anthropic 提出的模型上下文协议,正在成为 AI 工具互操作的事实标准。
| MCP 能力 | Spring AI 2.0 | Solon AI |
|---|---|---|
| MCP Client | 支持 | 支持 |
| MCP Server | 支持 | 支持 |
| 自动配置 | Boot Starter 自动配置 | 配置式集成 |
| MCP Proxy | 无 | 支持 |
| Remote MCP Skills | 无 | 支持 |
Spring AI 通过 Boot Starter 提供 MCP 的自动配置,开箱即用体验好;Solon AI 除了 Client/Server 之外,额外提供了 MCP Proxy(代理转发)和 Remote Skills(远程技能发现),在分布式场景下更为灵活。
三、Solon AI 独有能力深度解读
上面提到的 Agent 体系之外,Solon AI 还有几个值得深入介绍的独有模块。
3.1 Harness 智能体运行时引擎
solon-ai-harness 是 Solon AI 的"马具框架",提供了智能体运行所需的全部基础设施:
- 会话与记忆管理:支持短期会话记忆和长期持久化记忆
- 动态工具挂载与发现:运行时动态添加/移除工具
- 上下文工程:自动管理对话上下文窗口
- 沙盒与安全:工具执行的安全隔离
- 多模型动态切换:同一个 Agent 可以在不同模型间切换
- 子代理池与技能池:管理 Agent 的能力集合
- 扩展机制:可插拔的生命周期钩子
如果说 Agent 是"大脑",那 Harness 就是"躯干和四肢",解决了 Agent 从 demo 到生产环境的最后一公里问题。
3.2 ACP 与 A2A 协议支持
- ACP(Agent Communication Protocol) :
solon-ai-acp模块提供了完整的 ACP 协议 SDK - A2A(Agent-to-Agent) :
solon-ai-a2a模块实现了 Google 提出的 A2A 协议,支持 Agent 间的直接通信和协作
这在构建跨组织、跨平台的 Agent 互联场景中尤为重要。Spring AI 目前没有对应的实现。
3.3 AI Flow 工作流
solon-ai-flow 提供了基于 YAML 编排的 AI 工作流能力,可以将多个 AI 步骤、条件分支、循环逻辑编排为可复用的工作流定义。
四、Spring AI 的独有优势
客观地说,Spring AI 也有其不可替代的优势。
4.1 Micrometer 可观测性
Spring AI 与 Micrometer 深度集成,提供了完整的可观测性支持:
- Tracing:自动关联 LLM 调用链路
- Metrics:Token 消耗、响应延迟、工具调用次数等指标
- Span Attributes:可选择性导出工具调用参数和结果
对于需要严格监控 AI 调用质量、成本和延迟的企业级场景,这是刚需。Solon AI 目前仅有基础日志支持。
4.2 Spring 生态红利
如果你已经在 Spring Boot 上构建了整个技术栈:
- 自动配置:引入 Starter 即可使用,零配置
- 向量存储:15+ 种向量数据库的 Boot Starter
- 语义缓存:基于 Redis 的语义缓存支持
- 模型后端:20+ 供应商的适配器
- Testcontainers:AI 模型的集成测试支持
这些开箱即用的能力,是深度绑定 Spring 生态换来的效率红利。
4.3 模型后端广度
Spring AI 目前支持 20+ 模型供应商,包括 OpenAI、Azure OpenAI、Anthropic、Google GenAI、Amazon Bedrock、Ollama、DeepSeek、Mistral AI、Groq 等,覆盖面目前是 Java 生态中最广的。
五、选型决策矩阵
最后,给出一个结构化的选型决策参考:
| 你的场景 | 推荐方案 | 理由 |
|---|---|---|
| Java 8、11 遗留系统需要 AI 化 | Solon AI | 唯一支持 Java 8 的选择 |
| 已有 Spring Boot 项目,需要快速接入 AI | Spring AI | 生态无缝集成,自动配置开箱即用 |
| 框架无关,需要嵌入任意项目 | Solon AI | 无框架依赖,纯 Java API |
| 需要复杂多 Agent 协作 | Solon AI | 原生三级 Agent + 7 种 MAS 协议 |
| 企业级可观测性优先 | Spring AI | Micrometer 深度集成 |
| 模型后端多样性优先 | Spring AI | 20+ 供应商适配 |
| 需要智能体运行时(Harness) | Solon AI | 唯一提供完整运行时引擎 |
| 需要从 Demo 快速走向生产 | Solon AI | Harness 提供完整的运行时基础设施 |
六、结语:不是零和博弈
Spring AI 和 Solon AI 不是你死我活的竞争关系。
Spring AI 走的是"生态整合"路线------把 AI 能力变成 Spring 生态的一等公民,让 Spring 开发者零门槛使用 AI。这种策略在企业级 Java 世界里非常有效。
Solon AI 走的是"全栈自建"路线------从 LLM 调用到 Agent 编排,从多 Agent 协作到运行时引擎,构建了一套完整的 AI 工程化基础设施,而且不绑定任何框架。这种策略在跨框架、遗留系统改造、以及对 Agent 能力有深度需求的场景下,优势明显。
作为 Java 开发者,好消息是:我们有两个成熟且各具特色的 AI 框架可选。根据自己的项目现状和技术需求,选择最合适的那一个就好。
如果你是 Spring 生态的重度用户,Spring AI 是最自然的选择。如果你需要框架无关的灵活性,或者需要深度的 Agent 能力,Solon AI 值得认真评估。