取得領先
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) 中,當提供的物件上沒有找到 @Tool
方法時,tools(Object... toolObjects)
方法現在會丟擲異常,而不是靜默失敗。這有助於開發者立即識別遷移問題。
如果你正在從 M7 升級到 M8
.tools(toolCallback)
的呼叫替換為 .toolCallbacks(toolCallback)
.tools(toolCallbackProvider)
的呼叫替換為 .toolCallbacks(toolCallbackProvider)
.tools("toolName")
的呼叫替換為 .toolNames("toolName")
這些更改將確保你在升級到 Spring AI 1.0 M8 後,工具呼叫功能繼續正常工作。
StTemplateRenderer
,支援內建函式和自定義驗證選項。請在此處檢視如何使用它:here。NoOpTemplateRenderer
,用於不需要模板化的場景需要注意的重要棄用如下:
ChatClient
已更新,確保在顧問執行之前始終渲染使用者和系統提示詞。此更改將 AdvisedRequest
和 AdvisedResponse
API 替換為 ChatClientRequest
和 ChatClientResponse
。TemplateRenderer
介面。userTextAdvise
字串的建構函式和 Builder 方法。spring.ai.chat.memory.jdbc.initialize-schema
屬性已被棄用,取而代之的是 spring.ai.chat.memory.repository.jdbc.initialize-schema
。文件處理:
DocumentPostProcessor
API 替換了諸如 DocumentCompressor
、DocumentRanker
和 DocumentSelector
等已棄用的 API。聊天記憶棄用:
@Deprecated List<Message> get(String conversationId, int lastN);
在 ChatMemory
中已棄用。各領域的廣泛貢獻者還進行了其他重構、錯誤修復和文件增強。如果你的 PR 我們尚未處理,我們會的,請耐心等待。感謝以下貢獻者: