首页 > 基础资料 博客日记

Spring AI 2.0 GA 倒计时:先别急,来看看 Java AI 框架的另一条路

2026-05-15 13:30:02基础资料围观1

极客资料网推荐Spring AI 2.0 GA 倒计时:先别急,来看看 Java AI 框架的另一条路这篇文章给大家,欢迎收藏极客资料网享受知识的乐趣

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

// 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 统一接口

// 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 注解

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:

ChatModel chatModel = ... // 自动配置注入

String response = ChatClient.create(chatModel)
        .prompt("帮我设一个10分钟后的闹钟")
        .tools(new DateTimeTools())
        .call()
        .content();

Spring AI 还支持 @Bean 动态注册、FunctionToolCallback 编程式构建等多种方式。

Solon AI:@ToolMapping 注解

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 将工具类动态添加:

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 的行为,本质上是一个请求/响应的拦截器链:

// 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 示例
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 采用"规划 + 推理 + 行动"闭环模式,能自主进行思考、选择工具执行动作并观察结果,直至完成复杂任务:

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 值得认真评估。


文章来源:https://www.cnblogs.com/noear/p/20050709
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云