領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多在審查了 M7 之後的 API 設計和棄用資訊後,我們確定了幾項重大更改將在 RC1 版本中成為破壞性更改。因此,我們引入了這個額外的里程碑,為開發者提供一個過渡版本,其中棄用的 API 與其替換項共存,從而在 RC1 釋出之前實現更平滑的升級體驗。
以下是本次釋出的主要變更。
在從 Spring AI 1.0 M7 升級到 1.0 M8 時,先前註冊了工具回撥的使用者會遇到破壞性更改,導致工具呼叫功能無聲地失敗。這尤其影響了使用已棄用的 tools() 方法的程式碼。
以下是一個在 M7 中有效但在 M8 中不再按預期工作的程式碼示例
// Old code in M7 - no longer works correctly in M8
chatClient.prompt("What day is tomorrow?")
.tools(toolCallback)
.call()
.content();
要修復升級到 M8 時出現此問題,您需要更新程式碼以使用新的 toolCallbacks() 方法
// 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)
@Description 的 @Bean)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 用於提示模板化
StTemplateRenderer,支援內建函式和自定義驗證選項。在此 處 檢視如何使用它。ChatClient 中,以簡化提示模板化NoOpTemplateRenderer,用於不需要模板化的場景需要注意的重要棄用資訊包括
ChatClient 已更新,以確保使用者和系統提示始終在顧問執行之前進行渲染。此更改用 ChatClientRequest 和 ChatClientResponse 替換了 AdvisedRequest 和 AdvisedResponse API。TemplateRenderer 介面。userTextAdvise 字串的建構函式和構建器方法。spring.ai.chat.memory.jdbc.initialize-schema 屬性已被棄用,取而代之的是 spring.ai.chat.memory.repository.jdbc.initialize-schema。文件處理:
DocumentPostProcessor API 取代了 DocumentCompressor、DocumentRanker 和 DocumentSelector 等已棄用的 API。聊天記憶體棄用:
ChatMemory 中的 @Deprecated List<Message> get(String conversationId, int lastN); 已被棄用。還有許多其他重構、錯誤修復、文件增強等工作由眾多貢獻者完成。如果您的 PR 尚未被處理,我們會盡快處理,請耐心等待。感謝