Spring AI 1.0 现已正式发布,随之一起发布的还有一首新歌以及一个新 logo。
Spring AI 的核心是ChatClient
,一种可移植且易于使用的 API,是与 AI 模型交互的主要接口。
Spring AI 的 ChatClient 支持调用20 个AI 模型,从 Anthropic 到 ZhiPu。它支持多模态输入和输出(当底层模型支持时)以及结构化响应——通常以 JSON 格式呈现,以便于在应用程序中处理输出。
有关 AI 模型功能集的详细比较,可访问参考文档中的聊天模型比较
要构建高效的 AI 应用程序,一系列支持功能至关重要。增强型 LLM 的概念(如下图所示)正是为此而生,它为基础模型添加了数据检索、对话记忆和工具调用等功能。这些功能允许你将自己的数据和外部 API 直接引入模型的推理过程。
在 Spring AI 中实现此模式的关键是 Advisor。
Spring AI ChatClient 的一个关键特性是 Advisor API。这是一个拦截器链,允许你通过注入检索数据和对话内存来修改传入的提示。可以在参考文档的部分中阅读有关它们的更多信息。
Spring AI 还提供了一个可移植的向量存储抽象,支持从 Azure Cosmos DB 到 Weaviate 的 20 种不同的向量数据库。
Spring AI 包含一个轻量级、可配置的 ETL(提取、转换、加载)框架,可简化将数据导入向量存储的过程。它通过可插拔的 DocumentReader 组件支持多种输入源,包括本地文件系统、网页、GitHub 存储库、AWS S3、Azure Blob Storage、Google Cloud Storage、Kafka、MongoDB 和兼容 JDBC 的数据库。通过内置的分块、元数据充实和嵌入生成支持,可以轻松地将几乎任何地方的内容引入 RAG 管道。
Spring AI 还广泛支持检索增强生成 (RAG) 模式。可以从简单的QuestionAnswerAdvisor
开始,为提示注入相关上下文,或者使用RetrievalAugmentationAdvisor
扩展到更复杂的模块化 RAG 管道,为你的应用量身定制。
可以在参考文档的部分中阅读有关它们的更多信息。
对话历史记录是创建 AI 聊天应用程序的重要组成部分。Spring AI 通过ChatMemory
接口支持这一点,该接口可管理消息的存储和检索。MessageWindowChatMemor
实现在一个滑动窗口中保存最近的 N 条消息,并随着对话的进行不断更新。它委托给一个ChatMemoryRepository
,目前为 JDBC、Cassandra 和 Neo4j 提供了存储库实现,更多实现即将推出。
另一种方法是使用VectorStoreChatMemoryAdvisor
。它不仅仅记住最新消息,还使用向量搜索从过去的对话中检索语义最相似的消息。
可以在参考文档的部分中阅读有关它们的更多信息。
Spring AI 可以通过 tools(让 AI 检索外部信息或采取实际行动的自定义函数)轻松扩展模型的功能。Tools 可以获取当前天气、查询数据库或返回最新消息,帮助模型回答训练数据之外的问题。它们还可以触发工作流、发送电子邮件或更新系统--使模型成为应用程序的积极参与者。
可以在参考文档的部分中阅读有关它们的更多信息。
Spring AI 可以轻松检查 AI 生成内容的准确性和相关性。它配备了灵活的Evaluator
界面和两个方便的内置评估器:
- RelevancyEvaluator – 帮助确定 AI 的响应是否与用户的问题和检索到的上下文真正匹配。它非常适合测试 RAG 流程,并使用可自定义的提示来询问另一个模型:“根据检索到的内容,这个响应是否合理?”
- FactCheckingEvaluator – 根据提供的上下文验证 AI 的响应是否符合事实。它的工作原理是要求模型判断某个语句是否在逻辑上得到文档的支持。可以使用 Bespoke 的 Minicheck(通过 Ollama)等小型模型来运行此模型,这比每次检查都使用 GPT-4 之类的工具要便宜得多。
可以在参考文档的部分中阅读更多信息。
Spring AI 可以轻松观察模型的运行情况、性能以及成本。Spring AI 与Micrometer集成,提供有关关键指标的详细遥测,例如:
- 模型延迟——你的模型需要多长时间才能做出反应(不仅仅是情感上的)。
- token 使用情况——每个请求的输入/输出 token,因此可以跟踪和优化成本。
- 工具调用和检索——了解你的模型何时充当有用的助手,而不是仅仅在向量存储上免费加载。
还可以通过Micrometer Tracing获得全面的跟踪支持,其中包含模型交互中每个主要步骤的跨度。可以获取有助于故障排除的日志消息,以便查看用户提示或向量存储响应的内容。
可以在参考文档的部分中阅读更多信息。
此外, Spring AI 团队在 MCP 规范发布后不久就开始支持该规范,并将这些代码捐赠给 Anthropic作为MCP Java SDK的基础。Spring AI 围绕此基础提供了丰富的功能。
Spring AI 通过其客户端启动模块,简化了 MCP 工具的使用。添加 `spring-ai-starter-mcp-client` 依赖项,即可快速连接远程 MCP 服务器。Spring Boot 的自动配置功能可处理繁重的工作,因此你的客户端无需过多的样板代码即可调用 MCP 服务器公开的工具,让你专注于构建高效的 AI 工作流。Spring 让你可以轻松连接到 MCP 服务器提供的 stdio 和基于 HTTP 的 SSE 端点。
Spring AI 还简化了 MCP 服务器的创建。只需添加spring-ai-starter-mcp-server
依赖项,即可快速将 Spring 组件转换为符合 MCP 标准的服务器。
Spring AI 支持几种构建代理行为的工作流模式:
- Evaluator Optimizer —— 该模型分析自身的反应,并通过结构化的自我评估过程对其进行改进。
- Routing —— 此模式能够根据用户请求和上下文的分类将输入智能路由到专门的处理程序。
- Orchestrator Workers —— 这种模式是一种灵活的方法,用于处理需要动态任务分解和专门处理的复杂任务
- Chaining —— 该模式将复杂的任务分解为一系列步骤,其中每个 LLM 调用都会处理前一个调用的输出。
- Parallelizatio —— 该模式对于需要并行执行 LLM 调用并自动进行输出聚合的情况很有用。
这些模式可以使用 Spring AI 的聊天模型和工具执行功能来实现,其中框架可以处理大部分底层复杂性。Spring AI 还支持通过 MCP 开发自主代理。
更多详情可查看官方公告。