开发|界面|引擎|交付|副驾——重写全栈法则:AI原生的倍速造应用流
你好,这里是nine[谈架构]系列。
欢迎关注评论私信交流~
SpringAI 在 AI 编程领域延续了Spring的诸多优势,从易于集成、到通用API设计进行模型切换等。
mindmap
root((SpringAI的优势与设计))
为什么好用
易于集成
Spring生态系统
无缝集成
丰富的模型支持
多平台支持
灵活扩展
高效的开发体验
自动配置
文档齐全
性能优化
批处理支持
重试机制
社区支持
活跃社区
持续更新
从源码看设计
模块化设计
核心模块
模型支持模块
向量存储模块
文档读取器模块
自动配置模块
依赖管理
Maven管理
BOM文件
常用库引入
配置灵活性
丰富配置属性
集成测试
单元与集成测试
模拟外部服务
参考
相关文章链接
SpringAI为什么好用
1. 易于集成
- Spring 生态系统:基于 Spring Boot 构建,继承了其强大的依赖注入、自动配置和应用启动特性。
- 无缝集成:可以轻松地与其他 Spring 项目(如 Spring Data, Spring Cloud)结合使用,形成完整的解决方案。
2. 丰富的模型支持
- 多平台支持:支持多种主流 AI 平台(如 OpenAI, Hugging Face, IBM Watson 等),满足不同用户的需求。
- 灵活扩展:用户可以根据需要添加新的 AI 模型或服务,只需遵循现有的模块化设计模式。
3. 高效的开发体验
- 自动配置:通过 Spring Boot 的自动配置机制,减少了繁琐的手动配置工作。
- 文档齐全:提供了详尽的文档和示例代码,帮助开发者快速上手。
4. 性能优化
- 批处理支持:部分模型支持批量处理请求,提高了处理效率。
- 重试机制:引入了
spring-ai-retry
模块,增强了系统的容错能力,确保在不稳定网络环境下也能稳定运行。
5. 社区支持
- 活跃社区:作为 Spring 官方项目的一部分,拥有庞大的开发者社区和丰富的资源支持。
- 持续更新:定期发布新版本,修复 bug 并引入新特性,保持项目的活力和竞争力。
从SpringAI源码看设计
1. 模块化设计
-
核心模块 (
spring-ai-core
):- 提供了 AI 编程的核心领域模型和接口。
- 包含了如
Document
,EmbeddingModel
,ChatClient
等基础类。 - 定义了通用的工具类和辅助函数。
-
模型支持模块:
- 每个 AI 模型(如 Ollama, WatsonX, Bedrock, QianFan 等)都有独立的模块。
- 这些模块依赖于
spring-ai-core
,并实现了特定 AI 服务的客户端和配置。 - 例如,
spring-ai-ollama
模块提供了对 Ollama 模型的支持,并集成了 Jackson 库用于 JSON 处理。
-
向量存储模块:
- 支持多种向量数据库(如 Elasticsearch, Cassandra, MongoDB, Pinecone 等)。
- 提供了统一的 API 来与这些数据库进行交互,方便用户选择合适的存储方案。
-
文档读取器模块:
- 包含了 PDF、Markdown 和 Tika 文档读取器,用于处理不同格式的文本文件。
- 提供了灵活的配置选项,以适应不同的应用场景。
-
自动配置模块 (
spring-ai-spring-boot-autoconfigure
):- 利用 Spring Boot 的自动配置机制,简化了应用程序的初始化过程。
- 提供了针对不同 AI 模型和服务的自动配置类,减少了用户的配置负担。
2. 依赖管理
- 使用 Maven 进行依赖管理,确保所有子模块共享相同的版本控制。
- 通过 BOM(Bill of Materials)文件统一管理依赖版本,避免版本冲突。
- 引入了诸如 Jackson、Micrometer、JUnit 等常用库,增强了项目的可扩展性和测试能力。
3. 配置灵活性
- 提供了丰富的配置属性,允许用户自定义 AI 模型的行为。
- 例如,
BedrockTitanEmbeddingProperties
类允许用户配置 Titan Embedding 模型的启用状态、模型名称和输入类型。
4. 集成测试
- 各个模块都包含了详细的单元测试和集成测试,确保功能的正确性。
- 使用了 Testcontainers 和 Docker Compose 来模拟外部服务(如 Redis、Elasticsearch 等),提高了测试环境的真实性和可靠性。
案例
其他类似的框架还有:
- hncboy/ai-beehiveAI 蜂巢,基于 Java 使用 Spring Boot 3 和 JDK 17,支持的功能有 ChatGPT、OpenAi Image、Midjourney、NewBing、文心一言等等。
- alibaba/spring-ai-alibaba整合阿里生态基于SpringAI开发的框架。
更多使用demo可以查看 ThomasVitale/llm-apps-java-spring-ai 。该项目提供了文本、语音、向量库等相关模型的集成示例。