CtrlK
CommunityDocumentationLog inGet started
Tessl Logo

tessl/maven-org-springframework-ai--spring-ai-autoconfigure-model-chat-memory

Spring Boot auto-configuration for chat memory functionality in Spring AI applications

Overview
Eval results
Files

index.mddocs/

Spring AI Chat Memory Auto Configuration

Spring Boot auto-configuration module that automatically configures chat memory functionality for managing conversational context in Spring AI applications. Provides zero-configuration setup for storing and retrieving conversation history with sensible defaults.

Quick Reference

ComponentPurposeDefault Implementation
ChatMemoryStore and retrieve conversation messagesMessageWindowChatMemory (20 messages)
ChatMemoryRepositoryPersist messagesInMemoryChatMemoryRepository
Message TypesUser, Assistant, System, ToolAll extend AbstractMessage

Installation

Maven:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-autoconfigure-model-chat-memory</artifactId>
    <version>1.1.2</version>
</dependency>

Gradle:

implementation 'org.springframework.ai:spring-ai-autoconfigure-model-chat-memory:1.1.2'

Core Concepts

Auto-Configuration

When on the classpath, Spring Boot automatically creates:

  • A ChatMemoryRepository bean (default: in-memory)
  • A ChatMemory bean (default: 20-message sliding window)

Chat Memory Interface

public interface ChatMemory {
    void add(String conversationId, Message message);
    void add(String conversationId, List<Message> messages);
    List<Message> get(String conversationId);
    void clear(String conversationId);
}

Key Behaviors:

  • Conversation IDs must not be null or empty
  • Messages must not be null
  • System messages are preserved during eviction
  • Thread-safe implementations required

Message Types

TypeClassPurpose
UserUserMessageInput from users/developers
AssistantAssistantMessageAI-generated responses
SystemSystemMessageHigh-level instructions (preserved)
ToolToolResponseMessageFunction/tool execution results

Repository Implementations

TypeModuleUse Case
In-MemoryBuilt-inDevelopment/testing
JDBCspring-ai-autoconfigure-model-chat-memory-repository-jdbcRelational databases
MongoDBspring-ai-autoconfigure-model-chat-memory-repository-mongodbDocument storage
Cassandraspring-ai-autoconfigure-model-chat-memory-repository-cassandraDistributed systems
Neo4jspring-ai-autoconfigure-model-chat-memory-repository-neo4jGraph relationships
Cosmos DBspring-ai-autoconfigure-model-chat-memory-repository-cosmos-dbAzure cloud

Basic Usage

@Service
public class ConversationService {
    @Autowired
    private ChatMemory chatMemory;

    public void addMessage(String conversationId, String content, boolean isUser) {
        Message message = isUser ? 
            new UserMessage(content) : 
            new AssistantMessage(content);
        chatMemory.add(conversationId, message);
    }

    public List<Message> getHistory(String conversationId) {
        return chatMemory.get(conversationId);
    }
}

Customization

Custom Repository

@Configuration
public class ChatMemoryConfig {
    @Bean
    public ChatMemoryRepository chatMemoryRepository(DataSource dataSource) {
        return JdbcChatMemoryRepository.builder()
            .dataSource(dataSource)
            .build();
    }
}

Custom Window Size

@Configuration
public class ChatMemoryConfig {
    @Bean
    public ChatMemory chatMemory(ChatMemoryRepository repository) {
        return MessageWindowChatMemory.builder()
            .chatMemoryRepository(repository)
            .maxMessages(100)
            .build();
    }
}

Configuration Properties

JDBC Repository

spring.ai.chat.memory.repository.jdbc.initialize-schema=always
spring.ai.chat.memory.repository.jdbc.platform=postgresql

MongoDB Repository

spring.ai.chat.memory.repository.mongo.create-indices=true
spring.ai.chat.memory.repository.mongo.ttl=PT24H

Cassandra Repository

spring.ai.chat.memory.repository.cassandra.keyspace=my_keyspace
spring.ai.chat.memory.repository.cassandra.table=chat_memory
spring.ai.chat.memory.repository.cassandra.time-to-live=P30D

Neo4j Repository

spring.ai.chat.memory.repository.neo4j.session-label=ChatSession
spring.ai.chat.memory.repository.neo4j.message-label=ChatMessage

Cosmos DB Repository

spring.ai.chat.memory.repository.cosmosdb.endpoint=https://myaccount.documents.azure.com:443/
spring.ai.chat.memory.repository.cosmosdb.key=your-account-key
spring.ai.chat.memory.repository.cosmosdb.database-name=chat_memory_db

Core Imports

import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.memory.ChatMemoryRepository;
import org.springframework.ai.chat.memory.InMemoryChatMemoryRepository;
import org.springframework.ai.chat.memory.MessageWindowChatMemory;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.ToolResponseMessage;

Key Features

  • Zero Configuration: Works out-of-box with sensible defaults
  • Message Window: Automatic eviction of old messages (configurable)
  • System Message Preservation: System instructions preserved during eviction
  • Multiple Repositories: Support for various storage backends
  • Thread-Safe: Concurrent access support
  • Auto-Detection: Automatic database dialect detection (JDBC)
  • TTL Support: Time-to-live for conversations (MongoDB, Cassandra)
  • Schema Management: Automatic schema initialization

Important Notes

⚠️ Production Warning: InMemoryChatMemoryRepository loses data on restart. Use persistent repositories for production.

⚠️ Thread Safety: All repository implementations must be thread-safe for concurrent access.

⚠️ Validation: All methods validate inputs and throw IllegalArgumentException for null/empty values.

⚠️ System Messages: MessageWindowChatMemory replaces old system messages when new ones are added.

Documentation Structure

Guides

  • Quick Start Guide - Step-by-step getting started
  • Repository Selection Guide - Choosing the right repository
  • Configuration Guide - Detailed configuration options

Examples

Reference

Package Information

  • Package Name: spring-ai-autoconfigure-model-chat-memory
  • Group ID: org.springframework.ai
  • Package Type: maven
  • Language: Java
  • Version: 1.1.2

See Also

  • Spring AI Documentation
  • Spring Boot Auto-Configuration
tessl i tessl/maven-org-springframework-ai--spring-ai-autoconfigure-model-chat-memory@1.1.0

docs

index.md

tile.json