From d769fb80da138d49bcd750ab089f7fde5af0bd47 Mon Sep 17 00:00:00 2001 From: vinothini Date: Sat, 19 Jul 2025 20:30:00 +0530 Subject: [PATCH 1/4] Update ChatModelStreamAdvisor.java --- .../client/advisor/ChatModelStreamAdvisor.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java index de691318df1..4a57941d4cb 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java @@ -46,15 +46,21 @@ private ChatModelStreamAdvisor(ChatModel chatModel) { @Override public Flux adviseStream(ChatClientRequest chatClientRequest, - StreamAdvisorChain streamAdvisorChain) { + StreamAdvisorChain streamAdvisorChain) { Assert.notNull(chatClientRequest, "the chatClientRequest cannot be null"); return this.chatModel.stream(chatClientRequest.prompt()) - .map(chatResponse -> ChatClientResponse.builder() - .chatResponse(chatResponse) - .context(Map.copyOf(chatClientRequest.context())) - .build()) - .publishOn(Schedulers.boundedElastic()); // TODO add option to disable + .map(chatResponse -> { + boolean isStop = "stop".equals( + chatResponse.getResult().getMetadata().getFinishReason() + ); + return ChatClientResponse.builder() + .chatResponse(chatResponse) + .context(isStop ? Map.copyOf(chatClientRequest.context()) : Map.of()) + .build(); + }) + .publishOn(Schedulers.boundedElastic()); // TODO add option to disable + // TODO add option to disable } @Override From eee6a6fffb2617da83bbb4412be755f5d77812b6 Mon Sep 17 00:00:00 2001 From: vinothini Date: Sat, 19 Jul 2025 20:30:00 +0530 Subject: [PATCH 2/4] Update ChatModelStreamAdvisor.java Signed-off-by: vinothini --- .../client/advisor/ChatModelStreamAdvisor.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java index de691318df1..4a57941d4cb 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java @@ -46,15 +46,21 @@ private ChatModelStreamAdvisor(ChatModel chatModel) { @Override public Flux adviseStream(ChatClientRequest chatClientRequest, - StreamAdvisorChain streamAdvisorChain) { + StreamAdvisorChain streamAdvisorChain) { Assert.notNull(chatClientRequest, "the chatClientRequest cannot be null"); return this.chatModel.stream(chatClientRequest.prompt()) - .map(chatResponse -> ChatClientResponse.builder() - .chatResponse(chatResponse) - .context(Map.copyOf(chatClientRequest.context())) - .build()) - .publishOn(Schedulers.boundedElastic()); // TODO add option to disable + .map(chatResponse -> { + boolean isStop = "stop".equals( + chatResponse.getResult().getMetadata().getFinishReason() + ); + return ChatClientResponse.builder() + .chatResponse(chatResponse) + .context(isStop ? Map.copyOf(chatClientRequest.context()) : Map.of()) + .build(); + }) + .publishOn(Schedulers.boundedElastic()); // TODO add option to disable + // TODO add option to disable } @Override From 76bb6abaab732e98ae2e9bc0352821e0ff567b52 Mon Sep 17 00:00:00 2001 From: vinothini Date: Sat, 19 Jul 2025 21:11:32 +0530 Subject: [PATCH 3/4] Signed-off-by: vinothini Signed-off-by: vinothini --- .../ai/chat/client/advisor/ChatModelStreamAdvisor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java index 4a57941d4cb..1478c14c81f 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java @@ -45,7 +45,7 @@ private ChatModelStreamAdvisor(ChatModel chatModel) { } @Override - public Flux adviseStream(ChatClientRequest chatClientRequest, + public Flux adviseStream(ChatClientRequest chatClientRequest , StreamAdvisorChain streamAdvisorChain) { Assert.notNull(chatClientRequest, "the chatClientRequest cannot be null"); From 25f1a99109a1442844f966c72219675eaf50b114 Mon Sep 17 00:00:00 2001 From: vinothini Date: Sat, 19 Jul 2025 21:11:48 +0530 Subject: [PATCH 4/4] Signed-off-by: vinothini Signed-off-by: vinothini --- .../ai/chat/client/advisor/ChatModelStreamAdvisor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java index 1478c14c81f..4a57941d4cb 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/ChatModelStreamAdvisor.java @@ -45,7 +45,7 @@ private ChatModelStreamAdvisor(ChatModel chatModel) { } @Override - public Flux adviseStream(ChatClientRequest chatClientRequest , + public Flux adviseStream(ChatClientRequest chatClientRequest, StreamAdvisorChain streamAdvisorChain) { Assert.notNull(chatClientRequest, "the chatClientRequest cannot be null");