diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/PromptChatMemoryAdvisor.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/PromptChatMemoryAdvisor.java index 5ae3c9459d0..2f30e6c1d05 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/PromptChatMemoryAdvisor.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/PromptChatMemoryAdvisor.java @@ -141,18 +141,18 @@ public ChatClientRequest before(ChatClientRequest chatClientRequest, AdvisorChai @Override public ChatClientResponse after(ChatClientResponse chatClientResponse, AdvisorChain advisorChain) { List assistantMessages = new ArrayList<>(); - if (chatClientResponse.chatResponse() != null) { + // Handle streaming case where we have a single result + if (chatClientResponse.chatResponse() != null && chatClientResponse.chatResponse().getResult() != null + && chatClientResponse.chatResponse().getResult().getOutput() != null) { + assistantMessages = List.of((Message) chatClientResponse.chatResponse().getResult().getOutput()); + } + else if (chatClientResponse.chatResponse() != null) { assistantMessages = chatClientResponse.chatResponse() .getResults() .stream() .map(g -> (Message) g.getOutput()) .toList(); } - // Handle streaming case where we have a single result - else if (chatClientResponse.chatResponse() != null && chatClientResponse.chatResponse().getResult() != null - && chatClientResponse.chatResponse().getResult().getOutput() != null) { - assistantMessages = List.of((Message) chatClientResponse.chatResponse().getResult().getOutput()); - } if (!assistantMessages.isEmpty()) { this.chatMemory.add(this.getConversationId(chatClientResponse.context(), this.defaultConversationId),