SpringAI做对了什么

开发|界面|引擎|交付|副驾——重写全栈法则:AI原生的倍速造应用流

你好,这里是nine[谈架构]系列。

欢迎关注评论私信交流~

springai

SpringAI 在 AI 编程领域延续了Spring的诸多优势,从易于集成、到通用API设计进行模型切换等。

springai

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
。该项目提供了文本、语音、向量库等相关模型的集成示例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值