diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/ChatClient.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/ChatClient.java index d1976b363..03d766a32 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/ChatClient.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/ChatClient.java @@ -213,14 +213,14 @@ public interface ChatClient { ChatClientRequestSpec options(T options); /** - * @deprecated use {@link #function(FunctionCallback)} instead. + * @deprecated use {@link #functions(FunctionCallback...)} instead. */ @Deprecated ChatClientRequestSpec function(String name, String description, java.util.function.Function function); /** - * @deprecated use {@link #function(FunctionCallback)} instead. + * @deprecated use {@link #functions(FunctionCallback...)} instead. */ @Deprecated ChatClientRequestSpec function(String name, String description, @@ -229,7 +229,7 @@ public interface ChatClient { ChatClientRequestSpec functions(FunctionCallback... functionCallbacks); /** - * @deprecated use {@link #function(FunctionCallback)} instead. + * @deprecated use {@link #functions(FunctionCallback...)} instead. */ @Deprecated ChatClientRequestSpec function(String name, String description, Class inputType, @@ -291,13 +291,13 @@ public interface ChatClient { Builder defaultSystem(Consumer systemSpecConsumer); /** - * @deprecated use {@link #defaultFunction(FunctionCallback)} instead. + * @deprecated use {@link #defaultFunctions(FunctionCallback...)} instead. */ @Deprecated Builder defaultFunction(String name, String description, java.util.function.Function function); /** - * @deprecated use {@link #defaultFunction(FunctionCallback)} instead. + * @deprecated use {@link #defaultFunctions(FunctionCallback...)} instead. */ @Deprecated Builder defaultFunction(String name, String description, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java index f6a94f01b..976ddfb5f 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java @@ -82,13 +82,22 @@ public interface FunctionCallback { /** * Creates a new {@link FunctionCallback.Builder} instance used to build a default - * {@link FunctionCallback} instance. * + * {@link FunctionCallback} instance. * @return Returns a new {@link FunctionCallback.Builder} instance. */ static FunctionCallback.Builder builder() { return new DefaultFunctionCallbackBuilder(); } + /** + * Builder for creating a {@link FunctionCallback} instance. This is a hierarchical + * builder with the following structure: + *
    + *
  • {@link Builder} - The root builder interface. + *
  • {@link FunctionInvokingSpec} - The function invoking builder interface. + *
  • {@link MethodInvokingSpec} - The method invoking builder interface. + *
+ */ interface Builder { /** @@ -122,14 +131,26 @@ public interface FunctionCallback { */ Builder objectMapper(ObjectMapper objectMapper); + /** + * Builds a {@link Function} invoking {@link FunctionCallback} instance. + */ FunctionInvokingSpec function(String name, Function function); + /** + * Builds a {@link BiFunction} invoking {@link FunctionCallback} instance. + */ FunctionInvokingSpec function(String name, BiFunction biFunction); + /** + * Builds a {@link Method} invoking {@link FunctionCallback} instance. + */ MethodInvokingSpec method(String methodName, Class... argumentTypes); } + /** + * {@link Function} invoking builder interface. + */ interface FunctionInvokingSpec { /** @@ -152,6 +173,9 @@ public interface FunctionCallback { } + /** + * {@link Method} invoking builder interface. + */ interface MethodInvokingSpec { /** diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java index fc087b106..11ccb7c37 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java @@ -39,7 +39,9 @@ import org.springframework.util.Assert; * * @author Christian Tzolov * @author Sebastien Deleuze + * @deprecated in favor of {@link FunctionCallbackWrapper.Builder} */ +@Deprecated public final class FunctionCallbackWrapper extends AbstractFunctionCallback { private final BiFunction biFunction; @@ -57,7 +59,7 @@ public final class FunctionCallbackWrapper extends AbstractFunctionCallbac } /** - * @deprecated use {@link FunctionCallback#builder(BiFunction)} instead. + * @deprecated use {@link FunctionCallback#builder()} instead. */ @Deprecated public static Builder builder(BiFunction biFunction) { @@ -65,7 +67,7 @@ public final class FunctionCallbackWrapper extends AbstractFunctionCallbac } /** - * @deprecated use {@link FunctionCallback#builder(Function)} instead. + * @deprecated use {@link FunctionCallback#builder()} instead. */ @Deprecated public static Builder builder(Function function) {