掘金 人工智能 05月06日 13:54
聊聊 Spring AI 1.0.0-SNAPSHOT 的变更
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文详细介绍了Spring AI 1.0.0-SNAPSHOT版本中的关键变更,主要集中在Artifact ID、包名和模块结构的调整。为了优化依赖管理和减少潜在的冲突,Spring AI Autoconfiguration被拆分为独立的模块,每个模块对应不同的模型和向量存储。此外,一些核心类和接口的包名也进行了更新。通过这些变更,Spring AI 1.0.0-SNAPSHOT版本旨在提供更灵活、更易于维护和更高效的AI开发体验。

📦 **Artifact ID 变更**: Spring AI 1.0.0-SNAPSHOT 版本对 Artifact ID 进行了调整,例如,`spring-ai-{model}-spring-boot-starter` 变更为 `spring-ai-starter-model-{model}`,`spring-ai-{store}-store-spring-boot-starter` 变更为 `spring-ai-starter-vector-store-{store}`,以及 `spring-ai-mcp-{type}-spring-boot-starter` 变更为 `spring-ai-starter-mcp-{type}`。这些变更旨在使依赖关系更加清晰和易于理解。

⚙️ **Autoconfiguration 拆分**: 为了避免引入不必要的依赖并减少冲突风险,Spring AI Autoconfiguration 从单体模块变更为针对每个模型、向量存储等独立的 Autoconfiguration。例如,Model autoconfiguration 使用 `spring-ai-autoconfigure-model-{model}`,Vector Store autoconfiguration 使用 `spring-ai-autoconfigure-vector-store-{store}`,MCP autoconfiguration 使用 `spring-ai-autoconfigure-mcp-{type}`。

📦 **包名变更**: `KeywordMetadataEnricher` 和 `SummaryMetadataEnricher` 从 `org.springframework.ai.transformer` 变更为 `org.springframework.ai.chat.transformer`,`Content`、`MediaContent` 和 `Media` 从 `org.springframework.ai.model` 变更为 `org.springframework.ai.content`,这些包名变更影响了代码的组织结构和模块依赖关系。

🧩 **模块结构调整**: 原本所有的功能都集中在 `spring-ai-core` 模块中,现在被拆分到更具体的领域模块,以减少不必要的依赖。例如,`spring-ai-commons` 包含了核心的 model,`spring-ai-model` 包含了 AI 能力的抽象,`spring-ai-vector-store` 统一了向量数据库的抽象,`spring-ai-client-chat` 提供了高级的 AI 会话 API。

本文主要研究一下Spring AI 1.0.0-SNAPSHOT的变更

Artifact ID变更

示例

<!-- BEFORE --><dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-openai-spring-boot-starter</artifactId></dependency><!-- AFTER --><dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-starter-model-openai</artifactId></dependency>

Spring AI Autoconfiguration从单体模块变更为每个model、vector-store等独立的autoconfiguration,拆开的目的就是避免引入没必要的依赖,减少冲突风险:

<!-- NO LONGER AVAILABLE --><dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-spring-boot-autoconfigure</artifactId>    <version>${project.version}</version></dependency>

取而代之的是:

<dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-autoconfigure-model-openai</artifactId></dependency><dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-autoconfigure-model-anthropic</artifactId></dependency><dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-autoconfigure-model-vertex-ai</artifactId></dependency>
<dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-autoconfigure-vector-store-redis</artifactId></dependency><dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-autoconfigure-vector-store-pgvector</artifactId></dependency><dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-autoconfigure-vector-store-chroma</artifactId></dependency>
<dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-autoconfigure-mcp-client</artifactId></dependency><dependency>    <groupId>org.springframework.ai</groupId>    <artifactId>spring-ai-autoconfigure-mcp-server</artifactId></dependency>

Package Name变更

Module变更

之前是所有的都在spring-ai-core,现在拆分到具体的领域模块来减少不必要的依赖,如下:

Dependency Structure变更如下:

小结

Spring AI 1.0.0-SNAPSHOT主要是涉及了Artifact ID, Package, Module的变更;Spring AI Autoconfiguration从单体模块变更为每个model、vector-store等独立的autoconfiguration,拆开的目的就是避免引入没必要的依赖,减少冲突风险;KeywordMetadataEnricher、SummaryMetadataEnricher、Content、MediaContent以及Media涉及了包名的变更;模块的变更将spring-ai-core拆分到具体的领域模块来减少不必要的依赖。

doc

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Spring AI 升级 依赖管理
相关文章