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
以下是旧方法与新方法的对应关系:
-
tools(String... toolNames)
→toolNames(String... toolNames)
- 当引用在其他地方注册的工具时使用(例如,通过
@Bean
with@Description
)
- 当引用在其他地方注册的工具时使用(例如,通过
-
tools(ToolCallback... toolCallbacks)
→toolCallbacks(ToolCallback... toolCallbacks)
- 用于内联工具回调注册
-
tools(List<ToolCallback> toolCallbacks)
→toolCallbacks(List<ToolCallback> toolCallbacks)
- 当你有一组工具回调时使用
-
tools(ToolCallbackProvider... toolCallbackProviders)
→toolCallbacks(ToolCallbackProvider... toolCallbackProviders)
- 用于实现
ToolCallbackProvider
接口的对象
- 用于实现
-
tools(Object... toolObjects)
保持不变- 仅适用于带有
@Tool
注解的方法的对象
- 仅适用于带有
改进的错误处理
在最新的 PR (spring-projects/spring-ai#2964) 中,tools(Object... toolObjects)
会在提供的对象上未找到@Tool
方法时抛出异常。这有助于开发人员立即识别迁移问题。
迁移摘要
如果要从 M7 升级到 M8:
- 将对
.tools(toolCallback)
的所有调用替换为.toolCallbacks(toolCallback)
- 将对
.tools(toolCallbackProvider)
的所有调用替换为.toolCallbacks(toolCallbackProvider)
- 将对
.tools("toolName")
的所有调用替换为.toolNames("toolName")
这些变化将确保你的工具调用功能在升级到 Spring AI 1.0 M8 后继续正常工作。
新功能
- 聊天记忆增强功能
- 增强型聊天记忆架构
- 模板渲染*
- 引入 TemplateRenderer 进行快速模板化
- 用于模板渲染的灵活的新 API,可在不同的模板引擎之间提供一致的接口
- 新增了
StTemplateRenderer
对内置函数和自定义验证选项的支持。点击此处查看如何使用。 - 直接集成到 ChatClient 中,以简化提示模板
- 已添加
NoOpTemplateRenderer
,适用于不需要模板的情况 - 相关:“在 ChatClient 中配置 TemplateRenderer”、“更新文档以提及 NoOpTemplateRenderer”
- MCP 改进
- 增强的 MCP tool callback 配置
- 在 MCP 客户端属性中添加了 tool callback 配置
- 支持 MCP server 中的完成规范
- 为 MCP server 添加了指令支持
- 向 WebFlux 和 WebMvc 传输提供程序添加了 SSE 端点参数
- 添加 Prompt Engineering Patterns 文档
- 关于 advanced prompt engineering techniques 的全新综合文献
- 为开发人员提供有效提示设计的最佳实践
- 包括各种用例的示例和模式
- Vector Store 增强
- Cosmos DB Entra ID 支持和修复
- 为 Cosmos DB 添加了 Azure Entra ID(原 Azure AD)身份验证功能
- 改进 Azure 部署的安全性和身份验证选项
- Cassandra Vector Store 改进
- 修复了 Cassandra 聊天内存中的消息顺序
- 添加了更好的错误消息并修复了各种问题
更多详情可查看官方公告。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
API 接口开放平台 Crabc 3.1 发布
Crabc是一款API接口开发平台,企业级接口管理、数据服务平台。支持动态数据源、动态SQL和标签,支持接入(mysql、oracle、达梦、TiDB、hive、es 和 mongodb)等 SQL 或 NoSQL 数据源,在线可视化编写SQL快速发布接口,支持一键上下线、接口管理、代理转发、鉴权、限流、熔断和监控告警等一站式API数据服务。 v3.1更新内容 新增: 1、接口详情页新增在线签名认证功能 2、应用管理新增可以指定应用使用者和业务归属 3、日志列表新增应用查询条件和调用方字段显示 4、接口日志写入新增支持异步写入Mysql数据库 5、签名认证新增支持国密SM3加密 6、接口详情页参数新增显示认证参数优化: 1、优化发布接口生效时间 2、优化数据库连接池配置 3、优化日志列表查询逻辑 4、优化网关异常打印 官网地址:crabc 开源地址:crabc-api
- 下一篇
Linkerd 2.18 发布:初步 Windows 支持
Linkerd 2.18 现已发布。公告称,这次发布的主题是 Battlescars:增加了一些特性和更新了一些功能,以减少操作上的痛苦。还引入了适用于 Windows 环境的代理实验构建。 基础设施软件如果不可靠,就毫无意义。Linkerd 经过 9 年的持续改进与发展,我们的目标是构建一个用户可以依赖 100 年的服务网格。Linkerd 2.18 是自去年 10 月宣布 Linkerd 可持续性以来的第二个主要版本,继续专注于操作简单性——以可管理的方式提供复杂的服务网格功能集。 Battlescars 本次发布基于项目团队帮助用户在规模边界上运行 Linkerd 的经验,包含三个重要变化:协议声明、兼容 GitOps 的多集群以及对 Gateway API 支持的更改。 协议声明 Linkerd 2.18 现在可以选择从 Kubernetes Service 对象的 appProto 字段读取端口协议。当指定此字段时,Linkerd 将不进行协议检测,而是直接使用配置的协议。配置 appProtocol 字段非常简单: apiVersion:v1 kind:Service...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装