From 01fd9a281d068abc7a4a7c69ef85f4e9e4418497 Mon Sep 17 00:00:00 2001 From: Ilayaperumal Gopinathan Date: Fri, 9 May 2025 11:11:10 +0100 Subject: [PATCH] Make default Chat memory repository non-static - Update the builder to initialize the default chatmemory respository if it isn't set by the builder method Signed-off-by: Ilayaperumal Gopinathan --- .../chat/memory/MessageWindowChatMemory.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/spring-ai-model/src/main/java/org/springframework/ai/chat/memory/MessageWindowChatMemory.java b/spring-ai-model/src/main/java/org/springframework/ai/chat/memory/MessageWindowChatMemory.java index 25c32f034db..0c187be01c9 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/chat/memory/MessageWindowChatMemory.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/chat/memory/MessageWindowChatMemory.java @@ -16,15 +16,15 @@ package org.springframework.ai.chat.memory; -import org.springframework.ai.chat.messages.Message; -import org.springframework.ai.chat.messages.SystemMessage; -import org.springframework.util.Assert; - import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; +import org.springframework.ai.chat.messages.Message; +import org.springframework.ai.chat.messages.SystemMessage; +import org.springframework.util.Assert; + /** * A chat memory implementation that maintains a message window of a specified size, * ensuring that the total number of messages does not exceed the specified limit. When @@ -36,14 +36,13 @@ * {@link SystemMessage} messages are preserved while evicting other types of messages. * * @author Thomas Vitale + * @author Ilayaperumal Gopinathan * @since 1.0.0 */ public final class MessageWindowChatMemory implements ChatMemory { private static final int DEFAULT_MAX_MESSAGES = 20; - private static final ChatMemoryRepository DEFAULT_CHAT_MEMORY_REPOSITORY = new InMemoryChatMemoryRepository(); - private final ChatMemoryRepository chatMemoryRepository; private final int maxMessages; @@ -124,7 +123,7 @@ public static Builder builder() { public static class Builder { - private ChatMemoryRepository chatMemoryRepository = DEFAULT_CHAT_MEMORY_REPOSITORY; + private ChatMemoryRepository chatMemoryRepository; private int maxMessages = DEFAULT_MAX_MESSAGES; @@ -142,7 +141,10 @@ public Builder maxMessages(int maxMessages) { } public MessageWindowChatMemory build() { - return new MessageWindowChatMemory(chatMemoryRepository, maxMessages); + if (this.chatMemoryRepository == null) { + this.chatMemoryRepository = new InMemoryChatMemoryRepository(); + } + return new MessageWindowChatMemory(this.chatMemoryRepository, this.maxMessages); } }