From 4caf2bc7dfa1d34539680fcd81f855740384261e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=99=8E=E9=B8=A3?= Date: Thu, 6 Mar 2025 15:34:37 +0800 Subject: [PATCH] feat: Add helper method to ToolCallbackProvider for ToolCallback. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 虎鸣 --- .../ai/tool/StaticToolCallbackProvider.java | 14 ++++++++++++++ .../ai/tool/ToolCallbackProvider.java | 12 ++++++++++++ 2 files changed, 26 insertions(+) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/StaticToolCallbackProvider.java b/spring-ai-core/src/main/java/org/springframework/ai/tool/StaticToolCallbackProvider.java index 4ab2fc87069..5b9b80ac03e 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/tool/StaticToolCallbackProvider.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/tool/StaticToolCallbackProvider.java @@ -15,6 +15,7 @@ */ package org.springframework.ai.tool; +import java.util.Collection; import java.util.List; import org.springframework.ai.model.function.FunctionCallback; @@ -76,6 +77,19 @@ public StaticToolCallbackProvider(List toolCallbacks this.toolCallbacks = toolCallbacks.toArray(new FunctionCallback[0]); } + /** + * Constructs a new StaticToolCallbackProvider with the specified list of function + * callbacks. The list is converted to an array internally. + * @param toolCallbacks the list of function callbacks to be provided by this + * provider. Must not be null and must not contain null elements. + * @throws IllegalArgumentException if the toolCallbacks list is null or contains null + * elements + */ + public StaticToolCallbackProvider(Collection toolCallbacks) { + Assert.noNullElements(toolCallbacks, "toolCallbacks cannot contain null elements"); + this.toolCallbacks = toolCallbacks.toArray(new FunctionCallback[0]); + } + /** * Returns the array of function callbacks held by this provider. * @return an array containing all function callbacks provided during construction. diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/ToolCallbackProvider.java b/spring-ai-core/src/main/java/org/springframework/ai/tool/ToolCallbackProvider.java index df17efffa46..02fec6c4f57 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/tool/ToolCallbackProvider.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/tool/ToolCallbackProvider.java @@ -16,6 +16,7 @@ package org.springframework.ai.tool; +import java.util.Collection; import java.util.List; import org.springframework.ai.model.function.FunctionCallback; @@ -30,12 +31,23 @@ public interface ToolCallbackProvider { FunctionCallback[] getToolCallbacks(); + @Deprecated public static ToolCallbackProvider from(List toolCallbacks) { return new StaticToolCallbackProvider(toolCallbacks); } + @Deprecated public static ToolCallbackProvider from(FunctionCallback... toolCallbacks) { return new StaticToolCallbackProvider(toolCallbacks); } + static ToolCallbackProvider from(Collection toolCallbacks) { + return new StaticToolCallbackProvider(toolCallbacks); + } + + static ToolCallbackProvider from(ToolCallback... toolCallbacks) { + return new StaticToolCallbackProvider(toolCallbacks); + } + + }