Memory Module
Memory management utilities for LLM applications.
This module provides comprehensive memory management for conversational AI:
- Core Classes:
ConversationBuffer - Main class for managing conversation memory Entity - Represents an extracted entity ConversationSummary - Represents a conversation summary
- Common Functions:
create_sliding_window() - Recent messages window create_token_limited_window() - Token-limited window create_alternating_window() - Alternating user/assistant pairs
- Submodules:
buffers - Conversation buffer management and sliding windows summaries - Summary-based memory functions entities - Entity extraction and tracking utils - Utility functions (format, filter, merge, persistence) patterns - Advanced memory patterns (semantic, episodic) classes - Data classes (Entity, ConversationSummary)
Examples
>>> # Common usage - top-level imports
>>> from kerb.memory import ConversationBuffer, Entity
>>> buffer = ConversationBuffer()
>>> buffer.add_message("user", "Hello!")
>>> # Specialized usage - submodule imports
>>> from kerb.memory.summaries import create_progressive_summary
>>> from kerb.memory.entities import extract_entities
>>> from kerb.memory.patterns import create_semantic_memory
- class kerb.memory.ConversationBuffer(max_messages=100, window_size=10, enable_summaries=True, enable_entity_tracking=True)[source]
Bases:
objectManages conversation history with multiple memory strategies.
- __init__(max_messages=100, window_size=10, enable_summaries=True, enable_entity_tracking=True)[source]
Initialize conversation buffer.
- get_context(max_tokens=None, include_summary=True)[source]
Get conversation context as formatted string.
- clear(keep_summaries=True)[source]
Clear the buffer.
- Parameters:
keep_summaries (
bool) – Whether to keep summaries
- save(filepath)[source]
Save conversation buffer to file.
Example
>>> buffer.save("conversation.json")
- classmethod load(filepath)[source]
Load conversation buffer from file.
- Parameters:
filepath (
str) – Path to load from- Returns:
Loaded buffer
- Return type:
Example
>>> buffer = ConversationBuffer.load("conversation.json")
- prune(strategy='oldest', keep_count=None, keep_percentage=None)[source]
Prune messages from buffer using various strategies.
- Parameters:
- Returns:
Self (for method chaining, modifies in place)
- Return type:
Examples
>>> from kerb.core.enums import PruneStrategy >>> buffer.prune(strategy=PruneStrategy.OLDEST, keep_count=50)
- class kerb.memory.Entity(name, type, mentions=1, first_seen=None, last_seen=None, context=<factory>, metadata=<factory>)[source]
Bases:
objectRepresents an extracted entity with metadata.
- __init__(name, type, mentions=1, first_seen=None, last_seen=None, context=<factory>, metadata=<factory>)
- class kerb.memory.ConversationSummary(summary, message_count, start_time, end_time, key_points=<factory>, entities=<factory>, metadata=<factory>)[source]
Bases:
objectRepresents a summary of conversation history.
- __init__(summary, message_count, start_time, end_time, key_points=<factory>, entities=<factory>, metadata=<factory>)
- kerb.memory.create_sliding_window(messages, window_size=10, include_system=True)[source]
Create a sliding window of recent messages.
- Parameters:
- Returns:
Most recent messages within window
- Return type:
Example
>>> messages = [Message("user", "Hello"), Message("assistant", "Hi")] >>> recent = create_sliding_window(messages, window_size=5)
- kerb.memory.create_token_limited_window(messages, max_tokens=2000, token_estimator=None)[source]
Create a sliding window limited by token count.
- Parameters:
- Returns:
Most recent messages that fit within token limit
- Return type:
Example
>>> window = create_token_limited_window(messages, max_tokens=1000)
- kerb.memory.create_alternating_window(messages, pairs=5)[source]
Create a window with alternating user/assistant pairs.
- Parameters:
- Returns:
Recent alternating message pairs
- Return type:
Example
>>> window = create_alternating_window(messages, pairs=3)
- kerb.memory.create_progressive_summary(messages, existing_summary=None, summary_length='medium')[source]
Create a progressive summary of conversation messages.
- Parameters:
- Returns:
Summary of the messages
- Return type:
Example
>>> summary = create_progressive_summary(messages, summary_length="short")
- kerb.memory.summarize_conversation(messages, summary_strategy='extractive', key_points=5)[source]
Create a comprehensive conversation summary.
- Parameters:
- Returns:
Structured summary of conversation
- Return type:
Examples
>>> from kerb.core.enums import SummaryStrategy >>> summary = summarize_conversation(messages, summary_strategy=SummaryStrategy.EXTRACTIVE)
- kerb.memory.create_hierarchical_summary(messages, chunk_size=10)[source]
Create hierarchical summaries of conversation chunks.
- Parameters:
- Returns:
Summary for each chunk
- Return type:
Example
>>> summaries = create_hierarchical_summary(messages, chunk_size=5)
- kerb.memory.save_conversation(buffer, filepath)[source]
Save conversation buffer to a JSON file.
- Parameters:
buffer (
ConversationBuffer) – Conversation buffer to save
- Return type:
Example
>>> save_conversation(buffer, "conversation.json")
- kerb.memory.load_conversation(filepath)[source]
Load conversation buffer from a JSON file.
- Parameters:
- Returns:
Loaded buffer
- Return type:
Example
>>> buffer = load_conversation("conversation.json")
Conversation memory and entity tracking for stateful applications.