Skip to content

Commit ec6a20b

Browse files
committed
fix:Advisor parameters lost when mutate ChatClient
- Fixed issue where advisor parameters were lost when advisors were not present during ChatClient mutation. - Added test case mutateAdvisorParams to ensure correct parameter mutation handling. Signed-off-by: YunKui Lu <[email protected]>
1 parent bf5ebce commit ec6a20b

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,11 @@ public Builder mutate() {
820820
.defaultToolNames(StringUtils.toStringArray(this.toolNames));
821821

822822
if (!CollectionUtils.isEmpty(this.advisors)) {
823-
builder.defaultAdvisors(a -> a.advisors(this.advisors).params(this.advisorParams));
823+
builder.defaultAdvisors(a -> a.advisors(this.advisors));
824+
}
825+
826+
if (!CollectionUtils.isEmpty(this.advisorParams)) {
827+
builder.defaultAdvisors(a -> a.params(this.advisorParams));
824828
}
825829

826830
if (StringUtils.hasText(this.userText)) {

spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/ChatClientTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,21 @@ void mutateDefaults() {
408408

409409
}
410410

411+
@Test
412+
void mutateAdvisorParams() {
413+
ChatClient defaultChatClient = ChatClient.builder(this.chatModel)
414+
.defaultAdvisors(AdvisorParams.ENABLE_NATIVE_STRUCTURED_OUTPUT)
415+
.build();
416+
417+
ChatClient mutatedChatClient = defaultChatClient.mutate()
418+
.build();
419+
420+
ChatClient.ChatClientRequestSpec prompt = mutatedChatClient.prompt();
421+
422+
assertThat(((DefaultChatClient.DefaultChatClientRequestSpec) prompt).getAdvisorParams())
423+
.containsKey(ChatClientAttributes.STRUCTURED_OUTPUT_NATIVE.getKey());
424+
}
425+
411426
@Test
412427
void mutatePrompt() {
413428

0 commit comments

Comments
 (0)