Spring AI 1.0 GA版本终于正式发布!第一个正式版本,超多内容,每个Java开发者都必须了解一下!
核心功能包括支持20个AI模型的ChatClient
接口、适配20个向量数据库的检索模块、支持滑动窗口和向量搜索的对话记忆功能、基于@Tool
注解的工具调用机制,以及模型评估、可观测性和Model Context Protocol(MCP)支持。此外,新增RAG流水线、ETL框架、工作流驱动和自主代理功能,并提供与微软Azure、AWS、Google Cloud等云服务商的集成案例。
1. ChatClient核心接口
-
• 作为与AI模型交互的主要接口,支持20个AI模型(如Anthropic、ZhiPu、DeepSeek、MiniMax等),涵盖多模态输入输出(若模型支持)和JSON格式结构化响应。 -
• 各支持模型的横向特性对比如下: -
2. 检索增强生成(RAG)与向量数据库
-
-
• 向量存储抽象:适配20个向量数据库(如Azure Cosmos DB、Weaviate),支持SQL-like过滤语言及原生查询回退。 -
• ETL框架:通过可插拔 DocumentReader
支持本地文件、网页、GitHub、云存储(AWS S3、Azure Blob等)及数据库输入,内置分块、元数据 enrichment 和嵌入生成。
-
-
• RAG流水线:基础 QuestionAnswerAdvisor
和模块化RetrievalAugmentationAdvisor
,参考案例Retrieval Augmented Generation (R.A.G.) with Vector Stores
3. 对话记忆(ChatMemory)
-
• 基础实现: MessageWindowChatMemory
通过滑动窗口存储最近N条消息,支持JDBC、Cassandra、Neo4j等持久化存储。 -
• 高级功能: VectorStoreChatMemoryAdvisor
基于向量搜索检索语义相似历史消息,参考案例《Guide to chat memory implementation》。
4. 工具调用(Function Calling)
-
• 通过 @Tool
注解声明工具方法,支持动态注册Bean或编程式创建,可调用天气查询、数据库操作等外部功能,配套《Guide to local tool calling》。 -
@Component class DogAdoptionScheduler { @Tool(description = "schedule an appointment to pickup or adopt a " + "dog from a Pooch Palace location") String schedule(int dogId, String dogName) { System.out.println("Scheduling adoption for dog " + dogName); return Instant .now() .plus(3, ChronoUnit.DAYS) .toString(); } }
5. 模型评估与可观测性
-
-
• 评估组件: RelevancyEvaluator
验证响应相关性,FactCheckingEvaluator
基于上下文校验事实准确性,Hugging Face专家指出“LLM作为裁判”的局限性(如模式崩溃、冗长偏见)。
-
-
• 可观测性:集成Micrometer追踪模型延迟、Token使用、工具调用等指标,支持日志记录和Micrometer Tracing。
6. 模型上下文协议(MCP)
-
• 客户端:通过 spring-ai-starter-mcp-client
快速连接MCP服务器,支持stdio和HTTP-SSE端点,示例连接Brave搜索引擎。 -
• 服务器:使用 spring-ai-starter-mcp-server
和@Tool
注解构建MCP服务器,集成Spring Batch/Cloud Config提供企业级工具,支持OAuth安全认证。
7. 代理支持
-
• 工作流驱动代理:包含评估优化(自评估响应)、路由(智能分配请求)、编排(动态任务分解)、链式(分步处理)、并行化(批量调用聚合结果)等模式。 -
• 自主代理:通过MCP动态发现工具,维护执行记忆,支持递归策略优化,孵化项目Spring MCP Agent演示相关能力。
小结
这次 Spring AI 的正式发布,对于 Java 开发者来说,是一次重大的升级。它不仅提供了强大的 AI 能力,还提供了丰富的工具和框架,帮助开发者更轻松地构建 AI 应用。DD也一直有在用Spring AI,最近也会第一时间把项目升级到正式版本,如果遇到问题,再继续分享。
最后,做个小调研,你现在用什么框架来构建AI应用呢?留言区聊一聊吧~
没有回复内容