diff --git a/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/JsonSchemaGenerator.java b/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/JsonSchemaGenerator.java index 27fae0fcc55..27147c798f4 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/JsonSchemaGenerator.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/JsonSchemaGenerator.java @@ -128,12 +128,7 @@ public static String generateForMethodInput(Method method, SchemaOption... schem for (int i = 0; i < method.getParameterCount(); i++) { String parameterName = method.getParameters()[i].getName(); Type parameterType = method.getGenericParameterTypes()[i]; - if (parameterType instanceof Class parameterClass - && ClassUtils.isAssignable(parameterClass, ToolContext.class)) { - // A ToolContext method parameter is not included in the JSON Schema - // generation. - // It's a special type used by Spring AI to pass contextual data to tools - // outside the model interaction flow. + if (shouldIgnoredInJsonSchema(parameterType)) { continue; } if (isMethodParameterRequired(method, i)) { @@ -155,6 +150,15 @@ public static String generateForMethodInput(Method method, SchemaOption... schem return schema.toPrettyString(); } + private static boolean shouldIgnoredInJsonSchema(final Type parameterType) { + // A ToolContext method parameter is not included in the JSON Schema + // generation. + // It's a special type used by Spring AI to pass contextual data to tools + // outside the model interaction flow. + return parameterType instanceof Class parameterClass + && ClassUtils.isAssignable(parameterClass, ToolContext.class); + } + /** * Generate a JSON Schema for a class type. */