Skip to main content
Memory stores conversation history and enables context-aware agents.

Quick Start

1

Automatic Memory

Agents have memory enabled by default:
use praisonai::Agent;

let agent = Agent::simple("Remember our conversation")?;

agent.chat("My name is Alice").await?;
let response = agent.chat("What's my name?").await?;
// Agent remembers: "Alice"
2

Clear Memory

agent.clear_memory().await?;

Memory Components

ConversationHistory

Stores messages with automatic trimming:
use praisonai::memory::ConversationHistory;

let mut history = ConversationHistory::new(100); // max 100 messages

history.add(Message::user("Hello"));
history.add(Message::assistant("Hi there!"));

let messages = history.messages();
history.clear();

Memory Manager

The Memory struct manages conversation storage:
use praisonai::memory::{Memory, MemoryConfig};

let memory = Memory::in_memory(MemoryConfig::default());

// Store messages
memory.store(Message::user("Hello")).await?;

// Get full history
let history = memory.history().await?;

// Search messages
let results = memory.search("keyword", 10).await?;

// Clear all
memory.clear().await?;

MemoryAdapter Trait

Implement custom storage backends:
use praisonai::memory::MemoryAdapter;
use async_trait::async_trait;

struct RedisAdapter {
    // Redis connection
}

#[async_trait]
impl MemoryAdapter for RedisAdapter {
    async fn store_short_term(&mut self, message: Message) -> Result<()> {
        // Store in Redis
        Ok(())
    }
    
    async fn get_short_term(&self) -> Result<Vec<Message>> {
        // Fetch from Redis
        Ok(vec![])
    }
    
    async fn search_short_term(&self, query: &str, limit: usize) -> Result<Vec<Message>> {
        // Search Redis
        Ok(vec![])
    }
    
    async fn clear_short_term(&mut self) -> Result<()> {
        // Clear Redis
        Ok(())
    }
}

Configuration

use praisonai::config::MemoryConfig;

let config = MemoryConfig {
    use_short_term: true,  // Enable conversation memory
    max_messages: 100,     // Max messages to keep
};
OptionTypeDefaultDescription
use_short_termbooltrueEnable short-term memory
max_messagesusize100Maximum messages to retain

Built-in Adapters

AdapterDescription
InMemoryAdapterDefault, stores in RAM

Best Practices

Use max_messages to prevent unbounded memory growth.
Call clear() to start fresh conversations.
Trimming keeps system messages, removes oldest user/assistant messages first.