Skip to content

Commit 75e3a08

Browse files
committed
refactor: revise function callback API deprecation messages and documentation
- Update deprecated annotation messages to correctly reference functions() instead of function() - Add detailed documentation for FunctionCallback.Builder hierarchy - Deprecate FunctionCallbackWrapper class in favor of Builder pattern - Fix typos and improve code documentation
1 parent 944fb99 commit 75e3a08

File tree

3 files changed

+34
-8
lines changed

3 files changed

+34
-8
lines changed

spring-ai-core/src/main/java/org/springframework/ai/chat/client/ChatClient.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,14 +213,14 @@ interface ChatClientRequestSpec {
213213
<T extends ChatOptions> ChatClientRequestSpec options(T options);
214214

215215
/**
216-
* @deprecated use {@link #function(FunctionCallback)} instead.
216+
* @deprecated use {@link #functions(FunctionCallback...)} instead.
217217
*/
218218
@Deprecated
219219
<I, O> ChatClientRequestSpec function(String name, String description,
220220
java.util.function.Function<I, O> function);
221221

222222
/**
223-
* @deprecated use {@link #function(FunctionCallback)} instead.
223+
* @deprecated use {@link #functions(FunctionCallback...)} instead.
224224
*/
225225
@Deprecated
226226
<I, O> ChatClientRequestSpec function(String name, String description,
@@ -229,7 +229,7 @@ <I, O> ChatClientRequestSpec function(String name, String description,
229229
<I, O> ChatClientRequestSpec functions(FunctionCallback... functionCallbacks);
230230

231231
/**
232-
* @deprecated use {@link #function(FunctionCallback)} instead.
232+
* @deprecated use {@link #functions(FunctionCallback...)} instead.
233233
*/
234234
@Deprecated
235235
<I, O> ChatClientRequestSpec function(String name, String description, Class<I> inputType,
@@ -291,13 +291,13 @@ interface Builder {
291291
Builder defaultSystem(Consumer<PromptSystemSpec> systemSpecConsumer);
292292

293293
/**
294-
* @deprecated use {@link #defaultFunction(FunctionCallback)} instead.
294+
* @deprecated use {@link #defaultFunctions(FunctionCallback...)} instead.
295295
*/
296296
@Deprecated
297297
<I, O> Builder defaultFunction(String name, String description, java.util.function.Function<I, O> function);
298298

299299
/**
300-
* @deprecated use {@link #defaultFunction(FunctionCallback)} instead.
300+
* @deprecated use {@link #defaultFunctions(FunctionCallback...)} instead.
301301
*/
302302
@Deprecated
303303
<I, O> Builder defaultFunction(String name, String description,

spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,22 @@ default String call(String functionInput, ToolContext tooContext) {
8282

8383
/**
8484
* Creates a new {@link FunctionCallback.Builder} instance used to build a default
85-
* {@link FunctionCallback} instance. *
85+
* {@link FunctionCallback} instance.
8686
* @return Returns a new {@link FunctionCallback.Builder} instance.
8787
*/
8888
static FunctionCallback.Builder builder() {
8989
return new DefaultFunctionCallbackBuilder();
9090
}
9191

92+
/**
93+
* Builder for creating a {@link FunctionCallback} instance. This is a hierarchical
94+
* builder with the following structure:
95+
* <ul>
96+
* <li>{@link Builder} - The root builder interface.
97+
* <li>{@link FunctionInvokingSpec} - The function invoking builder interface.
98+
* <li>{@link MethodInvokingSpec} - The method invoking builder interface.
99+
* </ul>
100+
*/
92101
interface Builder {
93102

94103
/**
@@ -122,14 +131,26 @@ interface Builder {
122131
*/
123132
Builder objectMapper(ObjectMapper objectMapper);
124133

134+
/**
135+
* Builds a {@link Function} invoking {@link FunctionCallback} instance.
136+
*/
125137
<I, O> FunctionInvokingSpec<I, O> function(String name, Function<I, O> function);
126138

139+
/**
140+
* Builds a {@link BiFunction} invoking {@link FunctionCallback} instance.
141+
*/
127142
<I, O> FunctionInvokingSpec<I, O> function(String name, BiFunction<I, ToolContext, O> biFunction);
128143

144+
/**
145+
* Builds a {@link Method} invoking {@link FunctionCallback} instance.
146+
*/
129147
MethodInvokingSpec method(String methodName, Class<?>... argumentTypes);
130148

131149
}
132150

151+
/**
152+
* {@link Function} invoking builder interface.
153+
*/
133154
interface FunctionInvokingSpec<I, O> {
134155

135156
/**
@@ -152,6 +173,9 @@ interface FunctionInvokingSpec<I, O> {
152173

153174
}
154175

176+
/**
177+
* {@link Method} invoking builder interface.
178+
*/
155179
interface MethodInvokingSpec {
156180

157181
/**

spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@
3939
*
4040
* @author Christian Tzolov
4141
* @author Sebastien Deleuze
42+
* @deprecated in favor of {@link FunctionCallbackWrapper.Builder}
4243
*/
44+
@Deprecated
4345
public final class FunctionCallbackWrapper<I, O> extends AbstractFunctionCallback<I, O> {
4446

4547
private final BiFunction<I, ToolContext, O> biFunction;
@@ -57,15 +59,15 @@ public O apply(I input, ToolContext context) {
5759
}
5860

5961
/**
60-
* @deprecated use {@link FunctionCallback#builder(BiFunction)} instead.
62+
* @deprecated use {@link FunctionCallback#builder()} instead.
6163
*/
6264
@Deprecated
6365
public static <I, O> Builder<I, O> builder(BiFunction<I, ToolContext, O> biFunction) {
6466
return new Builder<>(biFunction);
6567
}
6668

6769
/**
68-
* @deprecated use {@link FunctionCallback#builder(Function)} instead.
70+
* @deprecated use {@link FunctionCallback#builder()} instead.
6971
*/
7072
@Deprecated
7173
public static <I, O> Builder<I, O> builder(Function<I, O> function) {

0 commit comments

Comments
 (0)