同一个目标,不同的路线

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 = ... // 自动配置注入
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐