Skip to content

Commit 9e99807

Browse files
MilosHavranekilayaperumalg
authored andcommitted
fix null systemText in PromptChatMemoryAdvisor
Signed-off-by: Miloš Havránek <[email protected]>
1 parent 388068d commit 9e99807

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2023-2024 the original author or authors.
2+
* Copyright 2023-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@
2121
import java.util.Map;
2222
import java.util.stream.Collectors;
2323

24+
import org.springframework.util.StringUtils;
2425
import reactor.core.publisher.Flux;
2526

2627
import org.springframework.ai.chat.client.advisor.api.AdvisedRequest;
@@ -33,12 +34,12 @@
3334
import org.springframework.ai.chat.messages.MessageType;
3435
import org.springframework.ai.chat.messages.UserMessage;
3536
import org.springframework.ai.chat.model.MessageAggregator;
36-
import org.springframework.ai.content.Content;
3737

3838
/**
3939
* Memory is retrieved added into the prompt's system text.
4040
*
4141
* @author Christian Tzolov
42+
* @author Miloš Havránek
4243
* @since 1.0.0
4344
*/
4445
public class PromptChatMemoryAdvisor extends AbstractChatMemoryAdvisor<ChatMemory> {
@@ -111,14 +112,16 @@ private AdvisedRequest before(AdvisedRequest request) {
111112

112113
String memory = (memoryMessages != null) ? memoryMessages.stream()
113114
.filter(m -> m.getMessageType() == MessageType.USER || m.getMessageType() == MessageType.ASSISTANT)
114-
.map(m -> m.getMessageType() + ":" + ((Content) m).getText())
115+
.map(m -> m.getMessageType() + ":" + m.getText())
115116
.collect(Collectors.joining(System.lineSeparator())) : "";
116117

117118
Map<String, Object> advisedSystemParams = new HashMap<>(request.systemParams());
118119
advisedSystemParams.put("memory", memory);
119120

120121
// 2. Advise the system text.
121-
String advisedSystemText = request.systemText() + System.lineSeparator() + this.systemTextAdvise;
122+
String systemText = request.systemText();
123+
String advisedSystemText = (StringUtils.hasText(systemText) ? systemText + System.lineSeparator() : "")
124+
+ this.systemTextAdvise;
122125

123126
// 3. Create a new request with the advised system text and parameters.
124127
AdvisedRequest advisedRequest = AdvisedRequest.from(request)

0 commit comments

Comments
 (0)