diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClient.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClient.java index 47b305c8dda..bcf1b7ed18e 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClient.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClient.java @@ -820,7 +820,11 @@ public Builder mutate() { .defaultToolNames(StringUtils.toStringArray(this.toolNames)); if (!CollectionUtils.isEmpty(this.advisors)) { - builder.defaultAdvisors(a -> a.advisors(this.advisors).params(this.advisorParams)); + builder.defaultAdvisors(a -> a.advisors(this.advisors)); + } + + if (!CollectionUtils.isEmpty(this.advisorParams)) { + builder.defaultAdvisors(a -> a.params(this.advisorParams)); } if (StringUtils.hasText(this.userText)) { diff --git a/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/ChatClientTests.java b/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/ChatClientTests.java index a7e38611d8a..6681d9f95cc 100644 --- a/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/ChatClientTests.java +++ b/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/ChatClientTests.java @@ -408,6 +408,20 @@ void mutateDefaults() { } + @Test + void mutateAdvisorParams() { + ChatClient defaultChatClient = ChatClient.builder(this.chatModel) + .defaultAdvisors(AdvisorParams.ENABLE_NATIVE_STRUCTURED_OUTPUT) + .build(); + + ChatClient mutatedChatClient = defaultChatClient.mutate().build(); + + ChatClient.ChatClientRequestSpec prompt = mutatedChatClient.prompt(); + + assertThat(((DefaultChatClient.DefaultChatClientRequestSpec) prompt).getAdvisorParams()) + .containsKey(ChatClientAttributes.STRUCTURED_OUTPUT_NATIVE.getKey()); + } + @Test void mutatePrompt() {