diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageModel.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageModel.java index 35a98059379..aec8d2eb7e0 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageModel.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageModel.java @@ -121,8 +121,7 @@ private StabilityAiImageOptions mergeOptions(ImageOptions runtimeOptions, Stabil if (runtimeOptions == null) { return defaultOptions; } - - return StabilityAiImageOptions.builder() + StabilityAiImageOptions.Builder builder = StabilityAiImageOptions.builder() // Handle portable image options .withModel(ModelOptionsUtils.mergeOption(runtimeOptions.getModel(), defaultOptions.getModel())) .withN(ModelOptionsUtils.mergeOption(runtimeOptions.getN(), defaultOptions.getN())) @@ -130,15 +129,24 @@ private StabilityAiImageOptions mergeOptions(ImageOptions runtimeOptions, Stabil defaultOptions.getResponseFormat())) .withWidth(ModelOptionsUtils.mergeOption(runtimeOptions.getWidth(), defaultOptions.getWidth())) .withHeight(ModelOptionsUtils.mergeOption(runtimeOptions.getHeight(), defaultOptions.getHeight())) - .withStylePreset(ModelOptionsUtils.mergeOption(runtimeOptions.getStyle(), defaultOptions.getStyle())) + .withStylePreset(ModelOptionsUtils.mergeOption(runtimeOptions.getStyle(), defaultOptions.getStyle())); + + if (runtimeOptions instanceof StabilityAiImageOptions) { + StabilityAiImageOptions stabilityOptions = (StabilityAiImageOptions) runtimeOptions; // Handle Stability AI specific image options - .withCfgScale(defaultOptions.getCfgScale()) - .withClipGuidancePreset(defaultOptions.getClipGuidancePreset()) - .withSampler(defaultOptions.getSampler()) - .withSeed(defaultOptions.getSeed()) - .withSteps(defaultOptions.getSteps()) - .withStylePreset(defaultOptions.getStylePreset()) - .build(); + builder + .withCfgScale( + ModelOptionsUtils.mergeOption(stabilityOptions.getCfgScale(), defaultOptions.getCfgScale())) + .withClipGuidancePreset(ModelOptionsUtils.mergeOption(stabilityOptions.getClipGuidancePreset(), + defaultOptions.getClipGuidancePreset())) + .withSampler(ModelOptionsUtils.mergeOption(stabilityOptions.getSampler(), defaultOptions.getSampler())) + .withSeed(ModelOptionsUtils.mergeOption(stabilityOptions.getSeed(), defaultOptions.getSeed())) + .withSteps(ModelOptionsUtils.mergeOption(stabilityOptions.getSteps(), defaultOptions.getSteps())) + .withStylePreset(ModelOptionsUtils.mergeOption(stabilityOptions.getStylePreset(), + defaultOptions.getStylePreset())); + } + + return builder.build(); } } diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java index 5b3b7f5460d..8c30e3034fe 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java @@ -100,7 +100,7 @@ public record GenerateImageRequest(@JsonProperty("text_prompts") List