Spring AI 1.0.0 M8 现已发布。项目团队原定于 Spring AI 1.0.0 M7 为最后一个里程碑版本,但在审查了API 设计和 M7 后的弃用情况后,其确定一些重大变更在 RC1 版本中将成为破坏性变更。因此引入了这个额外的里程碑,为开发者提供一个过渡版本,让弃用的 API 与替代 API 共存,从而在 RC1 之前实现更顺畅的升级体验。
从 Spring AI 1.0 M7 升级到 1.0 M8 时,之前注册过工具回调的用户会遇到重大变更,导致工具调用功能静默失败。这尤其会影响使用已弃用tools()方法的代码。
tools()
以下是在 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()方法:
toolCallbacks()
Copy// Updated code for M8 chatClient.prompt("What day is tomorrow?") .toolCallbacks(toolCallback) .call() .content();
Spring AI 团队重命名了重载tools()方法,以提高清晰度并避免方法调度中的歧义。之前的 API 设计在 Java 编译器需要根据参数类型在多个重载方法之间进行选择时,容易造成混淆。
以下是旧方法与新方法的对应关系:
tools(String... toolNames)→toolNames(String... toolNames)
tools(String... toolNames)
toolNames(String... toolNames)
@Bean
@Description
tools(ToolCallback... toolCallbacks)→toolCallbacks(ToolCallback... toolCallbacks)
tools(ToolCallback... toolCallbacks)
toolCallbacks(ToolCallback... toolCallbacks)
tools(List<ToolCallback> toolCallbacks)→toolCallbacks(List<ToolCallback> toolCallbacks)
tools(List<ToolCallback> toolCallbacks)
toolCallbacks(List<ToolCallback> toolCallbacks)
tools(ToolCallbackProvider... toolCallbackProviders)→toolCallbacks(ToolCallbackProvider... toolCallbackProviders)
tools(ToolCallbackProvider... toolCallbackProviders)
toolCallbacks(ToolCallbackProvider... toolCallbackProviders)
ToolCallbackProvider
tools(Object... toolObjects)保持不变
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 后继续正常工作。
ChatMemory
ChatMemoryRepository
MessageWindowChatMemory
InMemoryChatMemoryRepository
JdbcChatMemoryRepository
StTemplateRenderer
NoOpTemplateRenderer
更多详情可查看官方公告。
评论删除后,数据将无法恢复
Spring AI 1.0.0 M8 发布
Spring AI 1.0.0 M8 现已发布。项目团队原定于 Spring AI 1.0.0 M7 为最后一个里程碑版本,但在审查了API 设计和 M7 后的弃用情况后,其确定一些重大变更在 RC1 版本中将成为破坏性变更。因此引入了这个额外的里程碑,为开发者提供一个过渡版本,让弃用的 API 与替代 API 共存,从而在 RC1 之前实现更顺畅的升级体验。
从 Spring AI 1.0 M7 升级到 1.0 M8 时,之前注册过工具回调的用户会遇到重大变更,导致工具调用功能静默失败。这尤其会影响使用已弃用
tools()方法的代码。Breaking Changes
示例
以下是在 M7 中可以运行但在 M8 中不再按预期运行的代码示例:
如何调整你的代码
要在升级到 M8 时解决此问题,需要更新代码以使用新
toolCallbacks()方法:为何做出这一改变
Spring AI 团队重命名了重载
tools()方法,以提高清晰度并避免方法调度中的歧义。之前的 API 设计在 Java 编译器需要根据参数类型在多个重载方法之间进行选择时,容易造成混淆。Method Mapping from M7 to M8
以下是旧方法与新方法的对应关系:
tools(String... toolNames)→toolNames(String... toolNames)@Beanwith@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 后继续正常工作。
新功能
ChatMemoryAPI,实现更灵活的对话历史管理ChatMemoryRepository界面允许不同的存储策略MessageWindowChatMemory用于维护消息窗口InMemoryChatMemoryRepository(默认)JdbcChatMemoryRepositoryStTemplateRenderer对内置函数和自定义验证选项的支持。点击此处查看如何使用。NoOpTemplateRenderer,适用于不需要模板的情况更多详情可查看官方公告。