Apring Ai 和Spring Ai Alibaba有什么区别
✅ Spring AI
- 来源:由 Spring 官方团队(VMware 旗下的 Spring 项目组) 发起。
- 目标:为 Java / Spring 开发者提供一个 统一的 AI 接入抽象层。
- 特点:
- 提供 标准 API,屏蔽不同大模型的 SDK 差异。
- 类似于 Spring Data 对数据库的抽象,Spring AI 对大模型调用进行了抽象。
- 支持多种大模型服务商:OpenAI、Azure OpenAI、HuggingFace、Ollama 等。
- 更偏向于 通用性 + 跨厂商 的解决方案。
例子:
ChatClient chatClient = chatClientBuilder.build();
String response = chatClient.prompt("介绍一下Spring AI").call().content();
开发者不用关心底层调用的是 OpenAI 还是 HuggingFace。
✅ Spring AI Alibaba
- 来源:由 阿里巴巴开源(基于 Spring AI 扩展)。
- 目标:让 Spring AI 更好地适配中国/阿里系的 AI 生态。
- 特点:
- 在 Spring AI 的标准接口 上,增加了对阿里云通义千问等模型的适配。
- 可能还会扩展国内常用的 AI 服务(如百川、智谱、Moonshot 等)。
- 更偏向于 国产大模型支持 + 阿里云生态集成。
- 适合国内企业在 合规/网络限制 下落地使用。
例子:
spring:ai:dashscope:api-key: xxx # 阿里云通义千问 API key
然后代码里依然通过
ChatClient
使用,底层调用阿里大模型。
✅ Spring AI vs Spring AI Alibaba 的对照表
对比维度 | Spring AI | Spring AI Alibaba |
---|---|---|
来源 | Spring 官方团队(VMware/Spring 社区) | 阿里巴巴开源社区(基于 Spring AI 扩展) |
定位 | 通用的 AI 接入标准抽象层,类似 JDBC 统一接口 | 针对国内生态,特别是阿里云通义千问等国产大模型做增强适配 |
支持厂商 | OpenAI、Azure OpenAI、HuggingFace、Ollama 等国际主流模型 | 通义千问(DashScope)、以及可能扩展智谱、百川、Moonshot 等国产模型 |
适用场景 | 跨国项目、多模型切换、需要统一 API 的 Spring Boot 应用 | 国内部署、对接阿里云/国产大模型、合规与本土化需求 |
网络依赖 | 大多需要访问国外 API,可能受网络限制 | 对国内大模型支持更好,减少网络和合规障碍 |
使用方式 | 统一接口(如 ChatClient ),开发者无感知底层厂商 | 在 Spring AI 的标准接口上增加国产模型配置项(例如 spring.ai.dashscope.api-key ) |
类比 | JDBC 规范 | Druid / MyBatis 等国产增强框架 |
✅ 总结
- Spring AI = Spring 官方出品的统一 AI 接入规范,跨平台、跨模型。
- Spring AI Alibaba = 在 Spring AI 基础上,做了阿里生态和国产模型的增强与适配。
✅ 共存
Spring AI 和 Spring AI Alibaba 是可以共存的, 原因如下
- Spring AI 是基础框架
- 它本身提供了统一的 API(比如
ChatClient
、EmbeddingClient
等),相当于“标准接口”。- 不关心底层你用哪个厂商,具体实现由 starter 依赖 或 配置决定。
- Spring AI Alibaba 是扩展
- 它是基于 Spring AI 做的国产化增强,提供 额外的适配器(比如通义千问的
DashScopeChatModel
)。- 底层实现还是符合 Spring AI 的标准接口,所以不会冲突。
- 其实它更像是一个“插件”,帮你多接入一个厂商。
✅ 共存方式
在一个项目里,完全可以:
- 同时引入 Spring AI 官方 starter(比如 OpenAI)
- 同时引入 Spring AI Alibaba(比如 DashScope/通义千问)
然后在配置里写上不同的模型参数:
spring:ai:openai:api-key: xxxbase-url: https://api.openai.com/v1dashscope:api-key: yyy
代码里也可以同时调用:
@Autowired
private ChatClient openAiChatClient;@Autowired
private ChatClient dashscopeChatClient;// 调用 OpenAI
String r1 = openAiChatClient.prompt("介绍一下Spring").call().content();// 调用通义千问
String r2 = dashscopeChatClient.prompt("介绍一下Spring").call().content();
⚠ 注意事项
- 需要确认不同 starter bean 的命名,避免注入冲突(比如都叫
ChatClient
)。 - 解决方法:用
@Qualifier("xxx")
指定。 - 依赖版本要匹配(Spring AI Alibaba 一般会依赖某个版本的 Spring AI)。