
Spring AI 1.0 GA 正式发布!!支持 MCP 很炸裂!! 原创
北京时间 2025 年 5 月 20 日,Spring AI 官方团队宣布 1.0 GA 版本正式发布,并采用了全新的 Logo。
Spring AI 1.0 GA 功能集剖析
第一、Prompt 提示词
创建正确的 Prompt(即传递给大模型的内容)是一项重要技能。掌握几种模式可以充分利用 AI 大模型的推理能力,从而获得最佳结果。
第二、模型增强(The Augmented LLM)
不过,在现实世界的 AI 应用中,对于大模型的需求已经不仅限于与无状态的 AI 大模型 API 进行简单的请求和响应交互。
为了开发出高效的 AI 应用程序,一系列辅助功能是必不可少的。模型增强的概念(如下图所示)正是为了满足这一需求,它为基本大模型增加了数据检索(Retrieval Augmented Generation,简称 RAG)、对话记忆(Memory)和工具调用(Tool)等功能。这些功能使得用户能够将自身的数据和外部 API 直接集成到大模型的推理过程中。
第三、顾问(Advisors)
Spring AI ChatClient 的核心功能之一是 Advisor API。该 API 采用了拦截器链的设计模式,这使得用户能够通过添加检索上下文(Retrieval Context)和对话记忆(Chat Memory)来调整输入的提示(Prompt)。
第四、检索(Retrieval)
在 AI 应用中,检索数据的基础通常是一个数据库,而向量数据库因其特性而成为首选。Spring AI 提供了一个通用的向量存储接口,能够兼容包括 Azure Cosmos DB 和 Weaviate 在内的多达20种不同类型的向量数据库。
使用这些数据库时常见的一个问题是,每种数据库都有其独特的元数据过滤查询语言。为了解决这个问题,Spring AI 引入了一种通用的过滤器表达式语言,该语言采用了类似 SQL 的语法,使得用户能够更加方便地进行查询。如果用户需要更复杂的查询,也可以选择使用数据库的原生查询语言。
Spring AI 还包含了一个轻量级且可配置的 ETL(提取、转换、加载)框架,它简化了将数据导入向量存储的过程。这个框架通过支持多种输入源的 DocumentReader 插件,包括本地文件系统、网页、GitHub 仓库、AWS S3、Azure Blob 存储、Google Cloud Storage、Kafka、MongoDB 以及兼容 JDBC 的数据库,使得用户能够轻松地将内容从几乎任何地方导入到 RAG (检索增强生成)流程中。此外,它还内置了对数据分块、元数据丰富化和嵌入生成的支持。
Spring AI 支持 RAG 模式,这使得 AI 大模型能够基于传入的数据生成响应。用户可以通过简单的 QuestionAnswerAdvisor 方法将相关上下文注入到提示词中,或者使用更复杂、更模块化的 RetrievalAugmentationAdvisor 来扩展 RAG 管道,以满足 AI 应用的具体需求。
第五、记忆(ChatMemory)
对话历史是构建 AI 聊天应用的一个关键要素。Spring AI 利用 ChatMemory 接口来实现这一点,该接口负责管理消息的保存和提取。MessageWindowChatMemory 的实现方式是在滑动窗口中保存最近 N 条消息,并能够随着对话的进行自动更新。它依赖于一个 ChatMemoryRepository,目前我们提供了针对 JDBC、Cassandra 和 Neo4j 的存储库实现,并且还在开发更多的版本。
另一种方案是采用
VectorStoreChatMemoryAdvisor
这种方法不仅记住了最新的对话内容,还能通过向量搜索技术从历史对话中找出语义上最接近的消息。
第六、工具(Tool)
Spring AI 可以轻松通过工具扩展模型的功能--自定义函数,让 AI 检索外部信息或执行实际操作。工具调用(也称为函数调用)由 OpenAI 于 2023 年 6 月首次广泛引入,并在和模型中发布了函数调用功能。
工具可以获取当前天气、查询数据库或返回最新新闻,帮助大模型解答训练数据以外的问题。它们还可以触发工作流、发送电子邮件或更新系统,从而将模型转变为应用程序中的活跃参与者。定义工具很简单:使用 @Tool
注解来声明方法,使用动态注册 Bean @Bean
,或以编程方式创建它们以实现完全控制。
第七、评估(Evaluation)
开发 AI 应用是一件令人兴奋的事情,但是如何评估其效能呢?不幸的是,这并不像编写常规的单元测试或集成测试然后查看测试结果那样直接。我们需要依据一系列准则来评价 AI 模型的输出。比如:答案是否与问题相关?它是否产生了不真实的信息?回答是否基于提供的事实?
为了应对这一挑战,我们应该首先进行所谓的“直觉检查”。顾名思义,这涉及到手动检查答案,并运用个人的判断力来确定答案的正确性。当然,这个过程相当耗时,因此有一系列不断发展的技术来帮助自动化这一过程。
Spring AI 能够轻松地检验 AI 生成内容的准确性和相关性。它提供了一个灵活的评估器(Evaluator)接口和两个实用的内置评估器:
- 相关性评估器(RelevancyEvaluator)- 帮助您判断 AI 的响应是否真正与用户的问题和检索到的上下文相匹配。它非常适合测试 RAG 流程,并使用可定制的提示词来询问另一个模型:“根据检索到的内容,这个响应是否合理?”
- 事实核查评估器(FactCheckingEvaluator)- 根据提供的上下文验证 AI 的响应是否符合事实。它的工作方式是要求模型判断某个陈述是否在逻辑上得到了文档的支持。您可以使用如 Bespoke 的 Minicheck(通过 Ollama)等小型模型来运行此评估器,这比每次都使用 GPT-4 这样的工具成本要低得多。
然而,这并不是万能的解决方案。Hugging Face “LLM as judges”排行榜的主要维护者 Clémentine Fourrier 警告说,“LLM 作为评委”并非万能药。在 Latent Space Podcast 的采访中,她概述了几个关键问题:
- 模式崩溃和位置偏差:法学硕士评委通常更倾向于来自同一系列模型的答案或显示的第一个答案。
- 冗长偏见:无论准确性如何,模型对较长的答案评价更高。
- 评分不稳定:排名比评分更可靠;即便如此,可重复性也很弱。
- 过度自信偏见:人们和模型通常更喜欢自信的答案,即使这些答案可能是错误的。
第八、可观测性(Observability)
在 AI 应用系统的生产环境中,为了确保其性能和效果,可观测性是必不可少的。Spring AI 提供了一种简便的方式来监控模型的运行状况、性能指标以及成本消耗。
Spring AI 通过与 Micrometer 的集成,能够提供关键性能指标的详尽遥测数据,包括:
- 模型响应时间:即模型处理请求并给出响应所需的时间。
- Token 消耗:每个请求的输入和输出 Token 数量,这有助于您追踪并优化成本支出。
- 工具调用和数据检索:这可以帮助您了解模型在何时发挥了实际作用,而不是仅仅在向量数据库中进行无效查询。
此外,您还可以利用 Micrometer Tracing 获得全面的追踪支持,它包含了模型交互过程中每个关键步骤的详细信息。您还可以获取有助于诊断问题的日志信息,这些日志可以展示用户输入的提示或向量数据库的响应内容。
第九、模型上下文协议 MCP
模型上下文协议(MCP) 于 2024 年 11 月问世。它迅速走红,因为它为 AI 模型与外部工具、提示词和资源交互提供了一种标准化的方式。MCP 是一种面向客户端-服务器的协议,一旦构建了 MCP 服务器,就可以轻松地将其应用于您的应用程序,无论 MCP 服务器是用什么编程语言编写的,MCP 客户端是用什么编程语言编写的。
这在工具领域确实取得了长足的进步,尽管 MCP 并不局限于工具。现在,您可以使用“开箱即用”的 MCP 服务器来实现特定功能,比如:与 GitHub 交互,而无需自己编写代码。从 AI 工具的角度来看,它就像一个工具类库,您可以轻松将其添加到您的应用程序中。
Spring AI 团队在 MCP 规范发布后不久就开始支持该规范,并将这些代码捐赠给 Anthropic作为 MCP Java SDK的基础。Spring AI 围绕此基础提供了丰富的功能。
第十、智能体(Agent)
2025年被誉为智能体的元年,而一个价值连城的问题是“智能体究竟是什么”。让我来解答这个问题:智能体的本质在于“利用 AI 模型与外界环境互动,以完成用户指定的任务”。高效的智能体结合了规划、记忆和执行能力来达成用户设定的目标。
智能体主要分为两大类型:
- 工作流型智能体:这种方法更加有序,其中大型语言模型(LLM)和工具按照预设的流程进行组合。这些工作流是规范性的,引导AI按照既定的步骤操作,以实现可预测的结果。
- 自主决策型智能体:这类智能体允许 LLM 自主规划和执行任务,无需明确的指令即可自行确定执行路径,选择使用哪些工具以及它们的使用顺序。
尽管完全自主的智能体因其灵活性而极具吸引力,但对于有明确定义的任务,工作流提供了更好的可预测性和一致性。选择哪种方法取决于您的具体需求和风险偏好。
工作流(Workflow)Spring AI 支持多种构建代理行为的工作流模式,如下所示:
- 评估器-优化器:该模型分析自身的反应,并通过结构化的自我评估过程进行改进。
- 路由:此模式能够根据用户请求和上下文的分类将输入智能地路由到专门的处理器。
- 协调者-执行者:这种模式是一种灵活的方法,用于处理需要动态任务分解和专门处理的复杂任务。
- 链式:该模式将复杂任务分解为一系列步骤,每个 LLM 调用都会处理前一个调用的输出。
- 并行化:该模式对于需要并行执行LLM调用并自动进行输出聚合的情况非常有用。
这些模式可以通过 Spring AI 的聊天模型和工具执行功能来实现,框架可以处理大部分底层复杂性。
自主决策型智能体(Autonomous Agent)Spring AI 还支持通过模型上下文协议(MCP)开发自主代理。正在孵化的 Spring MCP Agent 项目展示了如何创建以下智能体:
- 接受用户指令并自主确定最佳执行方法。
- 通过 MCP 动态发现并利用可用工具。
- 维护执行记忆以跟踪进度和决策。
- 根据结果递归地完善策略。
Spring AI 是一款非常优秀的 AI 应用开发框架,它专为 Java 开发者而设计,帮助 Java 开发者快速构建具备智能化的应用,很高兴看到 Spring AI 在今天达成正式 GA 版本!!
本文转载自玄姐聊AGI 作者:玄姐
