Spring AI 1.0.0 M8 发布


Spring AI 1.0.0 M8 现已发布。项目团队原定于 Spring AI 1.0.0 M7 为最后一个里程碑版本,但在审查了API 设计和 M7 后的弃用情况后,其确定一些重大变更在 RC1 版本中将成为破坏性变更。因此引入了这个额外的里程碑,为开发者提供一个过渡版本,让弃用的 API 与替代 API 共存,从而在 RC1 之前实现更顺畅的升级体验。

  • 升级说明
  • 可以使用 OpenRewrite 配方自动升级到 1.0.0-M8。此配方有助于应用此版本所需的许多代码更改。可以在Arconia Spring AI 迁移中找到配方和使用说明。

从 Spring AI 1.0 M7 升级到 1.0 M8 时,之前注册过工具回调的用户会遇到重大变更,导致工具调用功能静默失败。这尤其会影响使用已弃用tools()方法的代码。

Breaking Changes

示例

以下是在 M7 中可以运行但在 M8 中不再按预期运行的代码示例:

Copy// Old code in M7 - no longer works correctly in M8
chatClient.prompt("What day is tomorrow?")
.tools(toolCallback)
.call()
.content();

如何调整你的代码

要在升级到 M8 时解决此问题,需要更新代码以使用新toolCallbacks()方法:

Copy// Updated code for M8
chatClient.prompt("What day is tomorrow?")
.toolCallbacks(toolCallback)
.call()
.content();

为何做出这一改变

Spring AI 团队重命名了重载tools()方法,以提高清晰度并避免方法调度中的歧义。之前的 API 设计在 Java 编译器需要根据参数类型在多个重载方法之间进行选择时,容易造成混淆。

Method Mapping from M7 to M8

以下是旧方法与新方法的对应关系:

  1. tools(String... toolNames)toolNames(String... toolNames)

    • 当引用在其他地方注册的工具时使用(例如,通过@Beanwith @Description
  2. tools(ToolCallback... toolCallbacks)toolCallbacks(ToolCallback... toolCallbacks)

    • 用于内联工具回调注册
  3. tools(List<ToolCallback> toolCallbacks)toolCallbacks(List<ToolCallback> toolCallbacks)

    • 当你有一组工具回调时使用
  4. tools(ToolCallbackProvider... toolCallbackProviders)toolCallbacks(ToolCallbackProvider... toolCallbackProviders)

    • 用于实现ToolCallbackProvider接口的对象
  5. tools(Object... toolObjects)保持不变

    • 仅适用于带有@Tool注解的方法的对象

改进的错误处理

在最新的 PR (spring-projects/spring-ai#2964) 中,tools(Object... toolObjects)会在提供的对象上未找到@Tool方法时抛出异常。这有助于开发人员立即识别迁移问题。

迁移摘要

如果要从 M7 升级到 M8:

  1. 将对.tools(toolCallback)的所有调用替换为.toolCallbacks(toolCallback)
  2. 将对.tools(toolCallbackProvider)的所有调用替换为.toolCallbacks(toolCallbackProvider)
  3. 将对.tools("toolName")的所有调用替换为.toolNames("toolName")

这些变化将确保你的工具调用功能在升级到 Spring AI 1.0 M8 后继续正常工作。

新功能

  1. 聊天记忆增强功能
  • 增强型聊天记忆架构
    • 改进的ChatMemoryAPI,实现更灵活的对话历史管理
    • ChatMemoryRepository界面允许不同的存储策略
    • 添加MessageWindowChatMemory用于维护消息窗口
    • 改进属性命名以确保跨实现的一致性
    • 支持各种存储后端:
      • InMemoryChatMemoryRepository(默认)
      • 用于关系数据库的JdbcChatMemoryRepository
    • 有关聊天内存配置的更多详细信息,参阅内存类型和内存存储。
  1. 模板渲染*
  • 引入 TemplateRenderer 进行快速模板化
    • 用于模板渲染的灵活的新 API,可在不同的模板引擎之间提供一致的接口
    • 新增了StTemplateRenderer对内置函数和自定义验证选项的支持。点击此处查看如何使用。
    • 直接集成到 ChatClient 中,以简化提示模板
    • 已添加NoOpTemplateRenderer,适用于不需要模板的情况
    • 相关:“在 ChatClient 中配置 TemplateRenderer”、“更新文档以提及 NoOpTemplateRenderer”
  1. MCP 改进
  • 增强的 MCP tool callback 配置
    • 在 MCP 客户端属性中添加了 tool callback 配置
    • 支持 MCP server 中的完成规范
    • 为 MCP server 添加了指令支持
    • 向 WebFlux 和 WebMvc 传输提供程序添加了 SSE 端点参数
  1. Prompt Engineering Patterns
  • 添加 Prompt Engineering Patterns 文档
    • 关于 advanced prompt engineering techniques 的全新综合文献
    • 为开发人员提供有效提示设计的最佳实践
    • 包括各种用例的示例和模式
  1. Vector Store 增强
  • Cosmos DB Entra ID 支持和修复
    • 为 Cosmos DB 添加了 Azure Entra ID(原 Azure AD)身份验证功能
    • 改进 Azure 部署的安全性和身份验证选项
  • Cassandra Vector Store 改进
    • 修复了 Cassandra 聊天内存中的消息顺序
    • 添加了更好的错误消息并修复了各种问题

更多详情可查看官方公告。


相關推薦

2022-10-15

Spring Batch 5.0.0-M8 已发布。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 此版本包含两个主要变

2022-09-25

Spring Boot 3.0.0-M5 和 2.6.12 已发布。更新内容主要是功能增强、文档优化、依赖升级和错误修复。 Spring Boot 3.0.0-M5 改进 Ahead-of-Time (AOT) 处理和原生镜像支持 优化 actuator 端点清理 Jersey 支持 re-instated Release Note。 Spring Boot 2

2024-10-22

HServer 3.5.M8 已经发布,高性能 Webserver 此版本更新内容包括: 1,移除disruptor组件 2,优化自带的queue 3,优化cpu占用率高(其实不高,检查软件抽样采取的时候的问题,但是也是设计上导致的) 详情查看:https://gitee.com/HServer/

2024-05-31

Spring AI 1.0.0 Milestone 1 版本现已发布,具有以下新功能和改进: ChatClient Fluent API Fluent API 提供了构造 Prompt 的方法,然后将其作为输入传递给 AI 模型。用户可以使用ChatClient.Builder对象创建一个ChatClient。可以从 Spring Boot 自动配置

2023-10-10

2021 年圣诞节当天,一名 21 岁的男子 Jaswant Singh Chail 因持弩闯入温莎城堡,意图刺杀伊丽莎白女王二世而被捕。近日,英国法庭正式宣布以叛国罪判处 Chail 九年监禁,这也是自 1981 年以 来英国第一个被判叛国罪的人。 C

2023-01-18

3.9.0-java17-rc2 版本更新详情: build spring-boot>3.0.1 spring-boot-admin.version>3.0.0-M8 hutool.version>5.8.11 mybatis-plus.version>3.5.3.1 refactor 废弃 lamp-dozer-starter,对象转换使用BeanUtil或Mapstruct fix 修复 lamp-captcha-starter 模块

2024-03-14

Spring AI 0.8.1 现已发布,一些亮点更新包括: Google Gemini 对 Gemini 的多模态功能支持。 在此处阅读更多相关信息,并查看展示许多 Gemini 功能的示例应用程序。 流式和非流式聊天客户端 函数调用 Gemini 应用程序的 Nati

2024-07-18

苹果公司推出,最新迭代版本 Swift 6 计划于今年晚些时候发布,并将进行多项改进。包括更安全、更简单的编程,新的编码时数据安全保障功能,可以在编码时诊断开发者项目中并发访问内存的情况。这一优化可以在对整个代码

2022-12-21

款企业级微服务架构和服务能力开发平台,是全面拥抱 Spring Authorization Server 的、基于 OAuth2.1 协议的微服务架构。基于 Spring Authorization Server 1.0.0、Spring Boot 3.0.0、Spring Cloud 2022.0.0、Spring Cloud Tencent 1.8.2-2022.0.0、Spring Cloud Alibaba 2021

2023-02-12

款企业级微服务架构和服务能力开发平台,是全面拥抱 Spring Authorization Server 的、基于 OAuth2.1 协议的微服务架构。基于 Spring Authorization Server 1.0.0、Spring Boot 3.0.2、Spring Cloud 2022.0.1、Spring Cloud Tencent 1.9.0-2022.0.1、Spring Cloud Alibaba 2022

2023-01-21

企业级微服务架构和服务能力开发平台。首个全面拥抱 Spring Authorization Server 的版本,基于Spring Authorization Server 0.4.0、Spring Boot 2.7.8、Spring Cloud 2021.0.5、Spring Cloud Alibaba 2021.0.4.0、Nacos 2.2.0 等最新版本开发的多租户系统,遵循SpringB

2024-03-31

企业IM 在线客服 大模型AI助手 技术栈 springboot-3.2.0 for 后端 react-18.2.0 for web前端 react-native-0.73.4 for 移动客户端(ios&android) electron-29.1.0 for 桌面客户端(windows&mac&linux) 快速开始

2022-11-12

Spring Framework 6.0.0 发布了第四个 RC 版本。此版本包括 12 项 Bugfix 和功能改进,应该是 Spring Framework 6.0.0 正式 GA 前的最后一个 RC 版本,目前计划于 11 月中旬发布正式版。 新特性 为 SQL Server 序列引入 DataFieldMaxValueIncrementer 

2025-03-28

开源的根级项目,是 Java 应用开发的生态基座(可替换 Spring 生态)。 追求: 更快、更小、更简单 提倡: 克制、高效、开放、生态 7年开源时长,累计代码提交1.6万次 ,近半年下载量1200万次。 有透明可预期的《版本