- implements FunctionCallback.MethodInvokingSpec {
+ implements MethodInvokingSpec {
private String name;
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallbackResolver.java b/spring-ai-model/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallbackResolver.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallbackResolver.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallbackResolver.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallingOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallingOptions.java
similarity index 98%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallingOptions.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallingOptions.java
index 9d1456f29..5d580e54d 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallingOptions.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallingOptions.java
@@ -195,7 +195,7 @@ public class DefaultFunctionCallingOptions implements FunctionCallingOptions {
}
public FunctionCallingOptions merge(ChatOptions options) {
- FunctionCallingOptions.Builder builder = FunctionCallingOptions.builder();
+ Builder builder = FunctionCallingOptions.builder();
builder.model(StringUtils.hasText(options.getModel()) ? options.getModel() : this.getModel())
.frequencyPenalty(
options.getFrequencyPenalty() != null ? options.getFrequencyPenalty() : this.getFrequencyPenalty())
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallingOptionsBuilder.java b/spring-ai-model/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallingOptionsBuilder.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallingOptionsBuilder.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallingOptionsBuilder.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java b/spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallback.java
similarity index 97%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallback.java
index 08f5b0f1f..0553c0d7f 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallback.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallback.java
@@ -87,11 +87,11 @@ public interface FunctionCallback {
}
/**
- * Creates a new {@link FunctionCallback.Builder} instance used to build a default
+ * Creates a new {@link Builder} instance used to build a default
* {@link FunctionCallback} instance.
- * @return Returns a new {@link FunctionCallback.Builder} instance.
+ * @return Returns a new {@link Builder} instance.
*/
- static FunctionCallback.Builder builder() {
+ static Builder builder() {
return new DefaultFunctionCallbackBuilder();
}
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackResolver.java b/spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallbackResolver.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackResolver.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallbackResolver.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingHelper.java b/spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallingHelper.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingHelper.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallingHelper.java
index ececf6fd7..cdbe33ba1 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingHelper.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallingHelper.java
@@ -23,7 +23,6 @@ import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
-import org.springframework.ai.model.tool.ToolCallingManager;
import reactor.core.publisher.Flux;
import org.springframework.ai.chat.messages.AssistantMessage;
@@ -35,6 +34,7 @@ import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.model.Generation;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.model.ModelOptionsUtils;
+import org.springframework.ai.model.tool.ToolCallingManager;
import org.springframework.util.CollectionUtils;
/**
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java
similarity index 99%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java
index 1e886f6cb..2363bc123 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java
@@ -38,7 +38,7 @@ public interface FunctionCallingOptions extends ChatOptions {
* @return Returns {@link DefaultFunctionCallingOptionsBuilder} to create a new
* instance of {@link FunctionCallingOptions}.
*/
- static FunctionCallingOptions.Builder builder() {
+ static Builder builder() {
return new DefaultFunctionCallingOptionsBuilder();
}
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionInvokingFunctionCallback.java b/spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionInvokingFunctionCallback.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionInvokingFunctionCallback.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/function/FunctionInvokingFunctionCallback.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/MethodInvokingFunctionCallback.java b/spring-ai-model/src/main/java/org/springframework/ai/model/function/MethodInvokingFunctionCallback.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/function/MethodInvokingFunctionCallback.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/function/MethodInvokingFunctionCallback.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptions.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptions.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptions.java
index 327435a58..dce2f9208 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptions.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptions.java
@@ -16,11 +16,6 @@
package org.springframework.ai.model.tool;
-import org.springframework.ai.chat.prompt.ChatOptions;
-import org.springframework.ai.model.function.FunctionCallback;
-import org.springframework.lang.Nullable;
-import org.springframework.util.Assert;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -29,6 +24,11 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.springframework.ai.chat.prompt.ChatOptions;
+import org.springframework.ai.model.function.FunctionCallback;
+import org.springframework.lang.Nullable;
+import org.springframework.util.Assert;
+
/**
* Default implementation of {@link ToolCallingChatOptions}.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingManager.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingManager.java
similarity index 99%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingManager.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingManager.java
index 3e38ea6ea..9dcca588f 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingManager.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingManager.java
@@ -16,9 +16,16 @@
package org.springframework.ai.model.tool;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
import io.micrometer.observation.ObservationRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.ToolResponseMessage;
@@ -31,19 +38,13 @@ import org.springframework.ai.model.function.FunctionCallingOptions;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.definition.ToolDefinition;
import org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;
-import org.springframework.ai.tool.execution.ToolExecutionExceptionProcessor;
import org.springframework.ai.tool.execution.ToolExecutionException;
+import org.springframework.ai.tool.execution.ToolExecutionExceptionProcessor;
import org.springframework.ai.tool.resolution.DelegatingToolCallbackResolver;
import org.springframework.ai.tool.resolution.ToolCallbackResolver;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
/**
* Default implementation of {@link ToolCallingManager}.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/DefaultToolExecutionResult.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolExecutionResult.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/tool/DefaultToolExecutionResult.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolExecutionResult.java
index 5129fe40f..81be2caed 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/DefaultToolExecutionResult.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolExecutionResult.java
@@ -16,11 +16,11 @@
package org.springframework.ai.model.tool;
+import java.util.List;
+
import org.springframework.ai.chat.messages.Message;
import org.springframework.util.Assert;
-import java.util.List;
-
/**
* Default implementation of {@link ToolExecutionResult}.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/LegacyToolCallingManager.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/LegacyToolCallingManager.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/tool/LegacyToolCallingManager.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/tool/LegacyToolCallingManager.java
index f88f7c7b2..71019a803 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/LegacyToolCallingManager.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/LegacyToolCallingManager.java
@@ -16,6 +16,12 @@
package org.springframework.ai.model.tool;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.ToolResponseMessage;
@@ -30,18 +36,12 @@ import org.springframework.ai.model.function.FunctionCallingOptions;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.definition.ToolDefinition;
import org.springframework.ai.tool.execution.DefaultToolExecutionExceptionProcessor;
-import org.springframework.ai.tool.execution.ToolExecutionExceptionProcessor;
import org.springframework.ai.tool.execution.ToolExecutionException;
+import org.springframework.ai.tool.execution.ToolExecutionExceptionProcessor;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
/**
* Implementation of {@link ToolCallingManager} supporting the migration from
* {@link AbstractToolCallSupport} to {@link ToolCallingManager} and ensuring AI
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/ToolCallingChatOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolCallingChatOptions.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/tool/ToolCallingChatOptions.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolCallingChatOptions.java
index 430fe4ad0..81bfb7fcd 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/ToolCallingChatOptions.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolCallingChatOptions.java
@@ -16,6 +16,13 @@
package org.springframework.ai.model.tool;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.ChatOptions;
import org.springframework.ai.model.function.FunctionCallback;
@@ -25,13 +32,6 @@ import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
/**
* A set of options that can be used to configure the interaction with a chat model,
* including tool calling.
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/ToolCallingManager.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolCallingManager.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/tool/ToolCallingManager.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolCallingManager.java
index c93a38a21..d31a490a7 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/ToolCallingManager.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolCallingManager.java
@@ -16,12 +16,12 @@
package org.springframework.ai.model.tool;
+import java.util.List;
+
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.tool.definition.ToolDefinition;
-import java.util.List;
-
/**
* Service responsible for managing the tool calling process for a chat model.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/ToolExecutionResult.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolExecutionResult.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/tool/ToolExecutionResult.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolExecutionResult.java
index 41db567d4..1b2df957d 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/ToolExecutionResult.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolExecutionResult.java
@@ -16,15 +16,15 @@
package org.springframework.ai.model.tool;
+import java.util.ArrayList;
+import java.util.List;
+
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.ToolResponseMessage;
import org.springframework.ai.chat.metadata.ChatGenerationMetadata;
import org.springframework.ai.chat.model.Generation;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* The result of a tool execution.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/tool/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/model/tool/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/model/tool/package-info.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/Categories.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/Categories.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/Categories.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/Categories.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/CategoryScores.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/CategoryScores.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/CategoryScores.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/CategoryScores.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/Generation.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/Generation.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/Generation.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/Generation.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/Moderation.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/Moderation.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/Moderation.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/Moderation.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationGenerationMetadata.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationGenerationMetadata.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationGenerationMetadata.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationGenerationMetadata.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationMessage.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationMessage.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationMessage.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationMessage.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationModel.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationModel.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationModel.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationModel.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationOptions.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationOptions.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationOptions.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationOptionsBuilder.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationOptionsBuilder.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationOptionsBuilder.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationOptionsBuilder.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationPrompt.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationPrompt.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationPrompt.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationPrompt.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationResponse.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationResponse.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationResponse.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationResponse.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationResponseMetadata.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationResponseMetadata.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationResponseMetadata.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationResponseMetadata.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationResult.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationResult.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/moderation/ModerationResult.java
rename to spring-ai-model/src/main/java/org/springframework/ai/moderation/ModerationResult.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/StaticToolCallbackProvider.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/StaticToolCallbackProvider.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/StaticToolCallbackProvider.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/StaticToolCallbackProvider.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/ToolCallback.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallback.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/ToolCallback.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallback.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/ToolCallbackProvider.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallbackProvider.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/ToolCallbackProvider.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallbackProvider.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/ToolCallbacks.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallbacks.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/ToolCallbacks.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallbacks.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/annotation/Tool.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/annotation/Tool.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/annotation/Tool.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/annotation/Tool.java
index 937d498b2..d17b2fc47 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/annotation/Tool.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/annotation/Tool.java
@@ -16,15 +16,15 @@
package org.springframework.ai.tool.annotation;
-import org.springframework.ai.tool.execution.DefaultToolCallResultConverter;
-import org.springframework.ai.tool.execution.ToolCallResultConverter;
-
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.springframework.ai.tool.execution.DefaultToolCallResultConverter;
+import org.springframework.ai.tool.execution.ToolCallResultConverter;
+
/**
* Marks a method as a tool in Spring AI.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/annotation/ToolParam.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/annotation/ToolParam.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/annotation/ToolParam.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/annotation/ToolParam.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/annotation/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/annotation/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/annotation/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/annotation/package-info.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/definition/DefaultToolDefinition.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/definition/DefaultToolDefinition.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/definition/DefaultToolDefinition.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/definition/DefaultToolDefinition.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/definition/ToolDefinition.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/definition/ToolDefinition.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/definition/ToolDefinition.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/definition/ToolDefinition.java
index 19dc01781..10fef32f0 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/definition/ToolDefinition.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/definition/ToolDefinition.java
@@ -16,12 +16,12 @@
package org.springframework.ai.tool.definition;
+import java.lang.reflect.Method;
+
import org.springframework.ai.tool.util.ToolUtils;
import org.springframework.ai.util.json.schema.JsonSchemaGenerator;
import org.springframework.util.Assert;
-import java.lang.reflect.Method;
-
/**
* Definition used by the AI model to determine when and how to call the tool.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/definition/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/definition/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/definition/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/definition/package-info.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/execution/DefaultToolCallResultConverter.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/DefaultToolCallResultConverter.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/execution/DefaultToolCallResultConverter.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/execution/DefaultToolCallResultConverter.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/execution/DefaultToolExecutionExceptionProcessor.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/DefaultToolExecutionExceptionProcessor.java
similarity index 99%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/execution/DefaultToolExecutionExceptionProcessor.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/execution/DefaultToolExecutionExceptionProcessor.java
index 1998d9515..8dad5c031 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/execution/DefaultToolExecutionExceptionProcessor.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/DefaultToolExecutionExceptionProcessor.java
@@ -18,6 +18,7 @@ package org.springframework.ai.tool.execution;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.springframework.util.Assert;
/**
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/execution/ToolCallResultConverter.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolCallResultConverter.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/execution/ToolCallResultConverter.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolCallResultConverter.java
index 2b933828b..d9d134332 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/execution/ToolCallResultConverter.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolCallResultConverter.java
@@ -16,10 +16,10 @@
package org.springframework.ai.tool.execution;
-import org.springframework.lang.Nullable;
-
import java.lang.reflect.Type;
+import org.springframework.lang.Nullable;
+
/**
* A functional interface to convert tool call results to a String that can be sent back
* to the AI model.
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/execution/ToolExecutionException.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolExecutionException.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/execution/ToolExecutionException.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolExecutionException.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/execution/ToolExecutionExceptionProcessor.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolExecutionExceptionProcessor.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/execution/ToolExecutionExceptionProcessor.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolExecutionExceptionProcessor.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/execution/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/execution/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/execution/package-info.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/function/FunctionToolCallback.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/function/FunctionToolCallback.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/function/FunctionToolCallback.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/function/FunctionToolCallback.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/function/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/function/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/function/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/function/package-info.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/metadata/DefaultToolMetadata.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/metadata/DefaultToolMetadata.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/metadata/DefaultToolMetadata.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/metadata/DefaultToolMetadata.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/metadata/ToolMetadata.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/metadata/ToolMetadata.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/metadata/ToolMetadata.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/metadata/ToolMetadata.java
index 63d785f11..81963f8b1 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/metadata/ToolMetadata.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/metadata/ToolMetadata.java
@@ -16,11 +16,11 @@
package org.springframework.ai.tool.metadata;
+import java.lang.reflect.Method;
+
import org.springframework.ai.tool.util.ToolUtils;
import org.springframework.util.Assert;
-import java.lang.reflect.Method;
-
/**
* Metadata about a tool specification and execution.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/metadata/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/metadata/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/metadata/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/metadata/package-info.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/method/MethodToolCallback.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/method/MethodToolCallback.java
similarity index 99%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/method/MethodToolCallback.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/method/MethodToolCallback.java
index e57646647..a3b5f41d0 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/method/MethodToolCallback.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/method/MethodToolCallback.java
@@ -16,9 +16,17 @@
package org.springframework.ai.tool.method;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Type;
+import java.util.Map;
+import java.util.stream.Stream;
+
import com.fasterxml.jackson.core.type.TypeReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.springframework.ai.chat.model.ToolContext;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.definition.ToolDefinition;
@@ -32,13 +40,6 @@ import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import org.springframework.util.CollectionUtils;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
-import java.util.Map;
-import java.util.stream.Stream;
-
/**
* A {@link ToolCallback} implementation to invoke methods as tools.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/method/MethodToolCallbackProvider.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/method/MethodToolCallbackProvider.java
similarity index 99%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/method/MethodToolCallbackProvider.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/method/MethodToolCallbackProvider.java
index 583a2a5da..3df65662b 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/method/MethodToolCallbackProvider.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/method/MethodToolCallbackProvider.java
@@ -16,8 +16,18 @@
package org.springframework.ai.tool.method;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.annotation.Tool;
@@ -29,15 +39,6 @@ import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import org.springframework.util.ReflectionUtils;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.List;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
/**
* A {@link ToolCallbackProvider} that builds {@link ToolCallback} instances from
* {@link Tool}-annotated methods.
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/method/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/method/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/method/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/method/package-info.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/package-info.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/DelegatingToolCallbackResolver.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/DelegatingToolCallbackResolver.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/DelegatingToolCallbackResolver.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/DelegatingToolCallbackResolver.java
index 16688b053..de10aca7d 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/DelegatingToolCallbackResolver.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/DelegatingToolCallbackResolver.java
@@ -16,12 +16,12 @@
package org.springframework.ai.tool.resolution;
+import java.util.List;
+
import org.springframework.ai.model.function.FunctionCallback;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
-import java.util.List;
-
/**
* A {@link ToolCallbackResolver} that delegates to a list of {@link ToolCallbackResolver}
* instances.
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolver.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolver.java
similarity index 99%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolver.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolver.java
index 69398dc63..01893049f 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolver.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolver.java
@@ -16,12 +16,20 @@
package org.springframework.ai.tool.resolution;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.BiFunction;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Supplier;
+
import com.fasterxml.jackson.annotation.JsonClassDescription;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.functions.Function2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.springframework.ai.chat.model.ToolContext;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.function.FunctionToolCallback;
@@ -38,13 +46,6 @@ import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.function.BiFunction;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.function.Supplier;
-
/**
* A Spring {@link ApplicationContext}-based implementation that provides a way to
* retrieve a bean from the Spring context and wrap it into a {@link ToolCallback}.
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/StaticToolCallbackResolver.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/StaticToolCallbackResolver.java
similarity index 99%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/StaticToolCallbackResolver.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/StaticToolCallbackResolver.java
index 4e7352edb..d180257ce 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/StaticToolCallbackResolver.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/StaticToolCallbackResolver.java
@@ -16,16 +16,17 @@
package org.springframework.ai.tool.resolution;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.ai.model.function.FunctionCallback;
-import org.springframework.ai.tool.ToolCallback;
-import org.springframework.util.Assert;
-
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.springframework.ai.model.function.FunctionCallback;
+import org.springframework.ai.tool.ToolCallback;
+import org.springframework.util.Assert;
+
/**
* A {@link ToolCallbackResolver} that resolves tool callbacks from a static registry.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/ToolCallbackResolver.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/ToolCallbackResolver.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/ToolCallbackResolver.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/ToolCallbackResolver.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/TypeResolverHelper.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/TypeResolverHelper.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/TypeResolverHelper.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/TypeResolverHelper.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/resolution/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/package-info.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/util/ToolUtils.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/util/ToolUtils.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/util/ToolUtils.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/util/ToolUtils.java
index 101a603f3..4df5383e9 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/tool/util/ToolUtils.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/util/ToolUtils.java
@@ -16,6 +16,12 @@
package org.springframework.ai.tool.util;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
import org.springframework.ai.model.function.FunctionCallback;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.execution.DefaultToolCallResultConverter;
@@ -24,12 +30,6 @@ import org.springframework.ai.util.ParsingUtils;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
/**
* Miscellaneous tool utility methods. Mainly for internal use within the framework.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/tool/util/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/util/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/tool/util/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/tool/util/package-info.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/util/json/JsonParser.java b/spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java
similarity index 99%
rename from spring-ai-core/src/main/java/org/springframework/ai/util/json/JsonParser.java
rename to spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java
index b4d184de6..88452dbb0 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/util/json/JsonParser.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java
@@ -16,19 +16,20 @@
package org.springframework.ai.util.json;
+import java.lang.reflect.Type;
+
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.json.JsonMapper;
+
import org.springframework.ai.util.JacksonUtils;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
-import java.lang.reflect.Type;
-
/**
* Utilities to perform parsing operations between JSON and Java.
*/
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/util/json/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/util/json/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/util/json/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/util/json/package-info.java
diff --git a/spring-ai-core/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
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/util/json/schema/JsonSchemaGenerator.java
rename to spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/JsonSchemaGenerator.java
index 408ecbfc5..9e3c1382a 100644
--- a/spring-ai-core/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
@@ -16,6 +16,13 @@
package org.springframework.ai.util.json.schema;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Stream;
+
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import com.fasterxml.jackson.databind.JsonNode;
@@ -39,13 +46,6 @@ import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import org.springframework.util.StringUtils;
-import java.lang.reflect.Method;
-import java.lang.reflect.Parameter;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Stream;
-
/**
* Utilities to generate JSON Schemas from Java types and method signatures. It's designed
* to work well in the context of tool calling and structured outputs, aiming at ensuring
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/util/json/schema/SchemaType.java b/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/SchemaType.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/util/json/schema/SchemaType.java
rename to spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/SchemaType.java
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/util/json/schema/SpringAiSchemaModule.java b/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/SpringAiSchemaModule.java
similarity index 99%
rename from spring-ai-core/src/main/java/org/springframework/ai/util/json/schema/SpringAiSchemaModule.java
rename to spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/SpringAiSchemaModule.java
index 4ec861d7f..5cc40027c 100644
--- a/spring-ai-core/src/main/java/org/springframework/ai/util/json/schema/SpringAiSchemaModule.java
+++ b/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/SpringAiSchemaModule.java
@@ -16,6 +16,8 @@
package org.springframework.ai.util.json.schema;
+import java.util.stream.Stream;
+
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.victools.jsonschema.generator.FieldScope;
import com.github.victools.jsonschema.generator.MemberScope;
@@ -23,12 +25,11 @@ import com.github.victools.jsonschema.generator.Module;
import com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder;
import com.github.victools.jsonschema.generator.SchemaGeneratorConfigPart;
import io.swagger.v3.oas.annotations.media.Schema;
+
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.lang.Nullable;
import org.springframework.util.StringUtils;
-import java.util.stream.Stream;
-
/**
* JSON Schema Generator Module for Spring AI.
*
diff --git a/spring-ai-core/src/main/java/org/springframework/ai/util/json/schema/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/package-info.java
similarity index 100%
rename from spring-ai-core/src/main/java/org/springframework/ai/util/json/schema/package-info.java
rename to spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/package-info.java
diff --git a/spring-ai-core/src/main/kotlin/org/springframework/ai/model/function/FunctionCallbackExtensions.kt b/spring-ai-model/src/main/kotlin/org/springframework/ai/model/function/FunctionCallbackExtensions.kt
similarity index 100%
rename from spring-ai-core/src/main/kotlin/org/springframework/ai/model/function/FunctionCallbackExtensions.kt
rename to spring-ai-model/src/main/kotlin/org/springframework/ai/model/function/FunctionCallbackExtensions.kt
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatModelTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/ChatModelTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/ChatModelTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/ChatModelTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/model/ChatResponseTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/model/ChatResponseTests.java
similarity index 99%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/model/ChatResponseTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/model/ChatResponseTests.java
index d73054986..a9d673e23 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/chat/model/ChatResponseTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/chat/model/ChatResponseTests.java
@@ -16,14 +16,15 @@
package org.springframework.ai.chat.model;
-import org.junit.jupiter.api.Test;
-import org.springframework.ai.chat.messages.AssistantMessage;
-import org.springframework.ai.chat.metadata.ChatGenerationMetadata;
-
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.junit.jupiter.api.Test;
+
+import org.springframework.ai.chat.messages.AssistantMessage;
+import org.springframework.ai.chat.metadata.ChatGenerationMetadata;
+
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/model/GenerationTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/model/GenerationTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/model/GenerationTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/model/GenerationTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationFilterTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationFilterTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationFilterTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationFilterTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandlerTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandlerTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandlerTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandlerTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelMeterObservationHandlerTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelMeterObservationHandlerTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelMeterObservationHandlerTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelMeterObservationHandlerTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelObservationContextTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelObservationContextTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelObservationContextTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelObservationContextTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationFilterTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationFilterTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationFilterTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationFilterTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandlerTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandlerTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandlerTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandlerTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/observation/DefaultChatModelObservationConventionTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/DefaultChatModelObservationConventionTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/observation/DefaultChatModelObservationConventionTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/observation/DefaultChatModelObservationConventionTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/prompt/ChatOptionsBuilderTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/prompt/ChatOptionsBuilderTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/chat/prompt/ChatOptionsBuilderTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/chat/prompt/ChatOptionsBuilderTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/image/observation/DefaultImageModelObservationConventionTests.java b/spring-ai-model/src/test/java/org/springframework/ai/image/observation/DefaultImageModelObservationConventionTests.java
similarity index 96%
rename from spring-ai-core/src/test/java/org/springframework/ai/image/observation/DefaultImageModelObservationConventionTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/image/observation/DefaultImageModelObservationConventionTests.java
index 845a03246..b1696576a 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/image/observation/DefaultImageModelObservationConventionTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/image/observation/DefaultImageModelObservationConventionTests.java
@@ -22,6 +22,8 @@ import org.junit.jupiter.api.Test;
import org.springframework.ai.image.ImageOptionsBuilder;
import org.springframework.ai.image.ImagePrompt;
+import org.springframework.ai.image.observation.DefaultImageModelObservationConvention;
+import org.springframework.ai.image.observation.ImageModelObservationContext;
import org.springframework.ai.observation.conventions.AiObservationAttributes;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/image/observation/ImageModelObservationContextTests.java b/spring-ai-model/src/test/java/org/springframework/ai/image/observation/ImageModelObservationContextTests.java
similarity index 95%
rename from spring-ai-core/src/test/java/org/springframework/ai/image/observation/ImageModelObservationContextTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/image/observation/ImageModelObservationContextTests.java
index 6d2da1494..1671f4d29 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/image/observation/ImageModelObservationContextTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/image/observation/ImageModelObservationContextTests.java
@@ -20,6 +20,7 @@ import org.junit.jupiter.api.Test;
import org.springframework.ai.image.ImageOptionsBuilder;
import org.springframework.ai.image.ImagePrompt;
+import org.springframework.ai.image.observation.ImageModelObservationContext;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationFilterTests.java b/spring-ai-model/src/test/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationFilterTests.java
similarity index 95%
rename from spring-ai-core/src/test/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationFilterTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationFilterTests.java
index 075cb6600..791a6e5d8 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationFilterTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationFilterTests.java
@@ -25,6 +25,8 @@ import org.junit.jupiter.api.Test;
import org.springframework.ai.image.ImageMessage;
import org.springframework.ai.image.ImageOptionsBuilder;
import org.springframework.ai.image.ImagePrompt;
+import org.springframework.ai.image.observation.ImageModelObservationContext;
+import org.springframework.ai.image.observation.ImageModelPromptContentObservationFilter;
import org.springframework.ai.observation.conventions.AiObservationAttributes;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilderTests.java b/spring-ai-model/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilderTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilderTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilderTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallingOptionsBuilderTests.java b/spring-ai-model/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallingOptionsBuilderTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallingOptionsBuilderTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallingOptionsBuilderTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/function/MethodInvokingFunctionCallbackTests.java b/spring-ai-model/src/test/java/org/springframework/ai/model/function/MethodInvokingFunctionCallbackTests.java
similarity index 100%
rename from spring-ai-core/src/test/java/org/springframework/ai/model/function/MethodInvokingFunctionCallbackTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/model/function/MethodInvokingFunctionCallbackTests.java
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptionsTests.java b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptionsTests.java
similarity index 99%
rename from spring-ai-core/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptionsTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptionsTests.java
index 7c53cb7d1..e121d95b9 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptionsTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptionsTests.java
@@ -16,15 +16,16 @@
package org.springframework.ai.model.tool;
-import org.junit.jupiter.api.Test;
-import org.springframework.ai.model.function.FunctionCallback;
-import org.springframework.ai.tool.ToolCallback;
-
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.junit.jupiter.api.Test;
+
+import org.springframework.ai.model.function.FunctionCallback;
+import org.springframework.ai.tool.ToolCallback;
+
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.mock;
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingManagerTests.java b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingManagerTests.java
similarity index 99%
rename from spring-ai-core/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingManagerTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingManagerTests.java
index 711fc99c0..76b9c9510 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingManagerTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/DefaultToolCallingManagerTests.java
@@ -16,8 +16,12 @@
package org.springframework.ai.model.tool;
+import java.util.List;
+import java.util.Map;
+
import io.micrometer.observation.ObservationRegistry;
import org.junit.jupiter.api.Test;
+
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.ToolResponseMessage;
import org.springframework.ai.chat.messages.UserMessage;
@@ -26,15 +30,12 @@ import org.springframework.ai.chat.model.Generation;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.definition.ToolDefinition;
-import org.springframework.ai.tool.execution.ToolExecutionExceptionProcessor;
import org.springframework.ai.tool.execution.ToolExecutionException;
+import org.springframework.ai.tool.execution.ToolExecutionExceptionProcessor;
import org.springframework.ai.tool.metadata.ToolMetadata;
import org.springframework.ai.tool.resolution.StaticToolCallbackResolver;
import org.springframework.ai.tool.resolution.ToolCallbackResolver;
-import java.util.List;
-import java.util.Map;
-
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.mock;
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/DefaultToolExecutionResultTests.java b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/DefaultToolExecutionResultTests.java
similarity index 99%
rename from spring-ai-core/src/test/java/org/springframework/ai/model/tool/DefaultToolExecutionResultTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/model/tool/DefaultToolExecutionResultTests.java
index 9e3384500..786a75932 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/DefaultToolExecutionResultTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/DefaultToolExecutionResultTests.java
@@ -16,11 +16,12 @@
package org.springframework.ai.model.tool;
-import org.junit.jupiter.api.Test;
-import org.springframework.ai.chat.messages.Message;
-
import java.util.ArrayList;
+import org.junit.jupiter.api.Test;
+
+import org.springframework.ai.chat.messages.Message;
+
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/LegacyToolCallingManagerTests.java b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/LegacyToolCallingManagerTests.java
similarity index 95%
rename from spring-ai-core/src/test/java/org/springframework/ai/model/tool/LegacyToolCallingManagerTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/model/tool/LegacyToolCallingManagerTests.java
index 1d56f629d..048f8f8a9 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/LegacyToolCallingManagerTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/LegacyToolCallingManagerTests.java
@@ -16,7 +16,11 @@
package org.springframework.ai.model.tool;
+import java.util.List;
+import java.util.Map;
+
import org.junit.jupiter.api.Test;
+
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.ToolResponseMessage;
import org.springframework.ai.chat.messages.UserMessage;
@@ -27,9 +31,6 @@ import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.definition.ToolDefinition;
import org.springframework.ai.tool.execution.ToolExecutionException;
-import java.util.List;
-import java.util.Map;
-
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.mock;
@@ -103,7 +104,7 @@ class LegacyToolCallingManagerTests {
@Test
void whenSingleToolCallInChatResponseThenExecute() {
- ToolCallback toolCallback = new LegacyToolCallingManagerTests.TestToolCallback("toolA");
+ ToolCallback toolCallback = new TestToolCallback("toolA");
ToolCallingManager toolCallingManager = LegacyToolCallingManager.builder()
.functionCallbacks(List.of(toolCallback))
.build();
@@ -125,8 +126,8 @@ class LegacyToolCallingManagerTests {
@Test
void whenMultipleToolCallsInChatResponseThenExecute() {
- ToolCallback toolCallbackA = new LegacyToolCallingManagerTests.TestToolCallback("toolA");
- ToolCallback toolCallbackB = new LegacyToolCallingManagerTests.TestToolCallback("toolB");
+ ToolCallback toolCallbackA = new TestToolCallback("toolA");
+ ToolCallback toolCallbackB = new TestToolCallback("toolB");
ToolCallingManager toolCallingManager = LegacyToolCallingManager.builder()
.functionCallbacks(List.of(toolCallbackA, toolCallbackB))
.build();
@@ -150,7 +151,7 @@ class LegacyToolCallingManagerTests {
@Test
void whenToolCallWithExceptionThenReturnError() {
- ToolCallback toolCallback = new LegacyToolCallingManagerTests.FailingToolCallback("toolC");
+ ToolCallback toolCallback = new FailingToolCallback("toolC");
ToolCallingManager toolCallingManager = LegacyToolCallingManager.builder()
.functionCallbacks(List.of(toolCallback))
.build();
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/ToolCallingChatOptionsTests.java b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/ToolCallingChatOptionsTests.java
similarity index 99%
rename from spring-ai-core/src/test/java/org/springframework/ai/model/tool/ToolCallingChatOptionsTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/model/tool/ToolCallingChatOptionsTests.java
index 8077b6bf8..c8a07a986 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/ToolCallingChatOptionsTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/ToolCallingChatOptionsTests.java
@@ -15,16 +15,17 @@
*/
package org.springframework.ai.model.tool;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import org.junit.jupiter.api.Test;
+
import org.springframework.ai.model.function.FunctionCallback;
import org.springframework.ai.model.function.FunctionCallingOptions;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.definition.ToolDefinition;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/ToolExecutionResultTests.java b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/ToolExecutionResultTests.java
similarity index 99%
rename from spring-ai-core/src/test/java/org/springframework/ai/model/tool/ToolExecutionResultTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/model/tool/ToolExecutionResultTests.java
index 3baf9d662..acb3bfca0 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/model/tool/ToolExecutionResultTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/model/tool/ToolExecutionResultTests.java
@@ -16,13 +16,14 @@
package org.springframework.ai.model.tool;
+import java.util.List;
+
import org.junit.jupiter.api.Test;
+
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.ToolResponseMessage;
import org.springframework.ai.chat.messages.UserMessage;
-import java.util.List;
-
import static org.assertj.core.api.Assertions.assertThat;
/**
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/util/json/JsonParserTests.java b/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonParserTests.java
similarity index 99%
rename from spring-ai-core/src/test/java/org/springframework/ai/util/json/JsonParserTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonParserTests.java
index a1879a4e9..71c7b0920 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/util/json/JsonParserTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonParserTests.java
@@ -1,9 +1,11 @@
package org.springframework.ai.util.json;
+import java.lang.reflect.Type;
+
import com.fasterxml.jackson.core.type.TypeReference;
import org.junit.jupiter.api.Test;
-import java.lang.reflect.Type;
+import org.springframework.ai.util.json.JsonParser;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/spring-ai-core/src/test/java/org/springframework/ai/util/json/JsonSchemaGeneratorTests.java b/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonSchemaGeneratorTests.java
similarity index 99%
rename from spring-ai-core/src/test/java/org/springframework/ai/util/json/JsonSchemaGeneratorTests.java
rename to spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonSchemaGeneratorTests.java
index 2c5a91632..e644f262e 100644
--- a/spring-ai-core/src/test/java/org/springframework/ai/util/json/JsonSchemaGeneratorTests.java
+++ b/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonSchemaGeneratorTests.java
@@ -16,6 +16,13 @@
package org.springframework.ai.util.json;
+import java.lang.reflect.Method;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.Month;
+import java.util.List;
+
import com.fasterxml.jackson.annotation.JsonClassDescription;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
@@ -25,16 +32,10 @@ import io.swagger.v3.oas.annotations.media.Schema;
import org.junit.jupiter.api.Test;
import org.springframework.ai.chat.model.ToolContext;
import org.springframework.ai.tool.annotation.ToolParam;
+import org.springframework.ai.util.json.JsonParser;
import org.springframework.ai.util.json.schema.JsonSchemaGenerator;
import org.springframework.lang.Nullable;
-import java.lang.reflect.Method;
-import java.time.Duration;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.Month;
-import java.util.List;
-
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/spring-ai-core/src/test/kotlin/org/springframework/ai/model/ModelOptionsUtilsTests.kt b/spring-ai-model/src/test/kotlin/org/springframework/ai/model/ModelOptionsUtilsTests.kt
similarity index 100%
rename from spring-ai-core/src/test/kotlin/org/springframework/ai/model/ModelOptionsUtilsTests.kt
rename to spring-ai-model/src/test/kotlin/org/springframework/ai/model/ModelOptionsUtilsTests.kt
diff --git a/spring-ai-core/src/test/kotlin/org/springframework/ai/tool/resolution/FunctionCallbackExtensionsTests.kt b/spring-ai-model/src/test/kotlin/org/springframework/ai/tool/resolution/FunctionCallbackExtensionsTests.kt
similarity index 100%
rename from spring-ai-core/src/test/kotlin/org/springframework/ai/tool/resolution/FunctionCallbackExtensionsTests.kt
rename to spring-ai-model/src/test/kotlin/org/springframework/ai/tool/resolution/FunctionCallbackExtensionsTests.kt
diff --git a/spring-ai-core/src/test/kotlin/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolverKotlinTests.kt b/spring-ai-model/src/test/kotlin/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolverKotlinTests.kt
similarity index 100%
rename from spring-ai-core/src/test/kotlin/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolverKotlinTests.kt
rename to spring-ai-model/src/test/kotlin/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolverKotlinTests.kt
diff --git a/spring-ai-core/src/test/kotlin/org/springframework/ai/tool/resolution/StandaloneWeatherKotlinFunction.kt b/spring-ai-model/src/test/kotlin/org/springframework/ai/tool/resolution/StandaloneWeatherKotlinFunction.kt
similarity index 100%
rename from spring-ai-core/src/test/kotlin/org/springframework/ai/tool/resolution/StandaloneWeatherKotlinFunction.kt
rename to spring-ai-model/src/test/kotlin/org/springframework/ai/tool/resolution/StandaloneWeatherKotlinFunction.kt
diff --git a/spring-ai-core/src/test/kotlin/org/springframework/ai/tool/resolution/TypeResolverHelperKotlinIT.kt b/spring-ai-model/src/test/kotlin/org/springframework/ai/tool/resolution/TypeResolverHelperKotlinIT.kt
similarity index 100%
rename from spring-ai-core/src/test/kotlin/org/springframework/ai/tool/resolution/TypeResolverHelperKotlinIT.kt
rename to spring-ai-model/src/test/kotlin/org/springframework/ai/tool/resolution/TypeResolverHelperKotlinIT.kt
diff --git a/spring-ai-core/src/test/kotlin/org/springframework/ai/tool/resolution/kotlinconfig/TypeResolverHelperKotlinConfiguration.kt b/spring-ai-model/src/test/kotlin/org/springframework/ai/tool/resolution/kotlinconfig/TypeResolverHelperKotlinConfiguration.kt
similarity index 100%
rename from spring-ai-core/src/test/kotlin/org/springframework/ai/tool/resolution/kotlinconfig/TypeResolverHelperKotlinConfiguration.kt
rename to spring-ai-model/src/test/kotlin/org/springframework/ai/tool/resolution/kotlinconfig/TypeResolverHelperKotlinConfiguration.kt