Skip to main content

Memory Type Overview

Memory TypePurposeWhen to Use
Conversation MemoryFull chat historyMulti-turn conversations, detailed context
Summary MemoryCondensed summariesLong sessions, cost-efficient recall
User Analysis MemoryUser profilesPersonalization, cross-session learning

Decision Guide

Conversation Memory Only

Best for: Short sessions, detailed context needed, debugging
from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage

storage = SqliteStorage(db_file="support.db")

memory = Memory(
    storage=storage,
    session_id="support_001",
    full_session_memory=True
)

agent = Agent("anthropic/claude-sonnet-4-5", memory=memory)

result1 = agent.do(Task("My order #12345 hasn't arrived"))
result2 = agent.do(Task("I ordered it last week"))
print(result2)  # Agent remembers order context

Summary Memory Only

Best for: Long sessions where raw history is unnecessary, cost-conscious Summary memory works independently — no need to enable full session memory. The agent recalls key facts through a generated summary instead of raw messages.
from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage

storage = SqliteStorage(db_file="notes.db")

memory = Memory(
    storage=storage,
    session_id="notes_001",
    full_session_memory=False,  # No raw history
    summary_memory=True,        # Summary generated and injected
    model="anthropic/claude-sonnet-4-5"
)

agent = Agent("anthropic/claude-sonnet-4-5", memory=memory)

result1 = agent.do(Task("The project deadline is next Friday"))
result2 = agent.do(Task("When is the deadline?"))
print(result2)  # Recalls via summary

Conversation + Summary

Best for: Long conversations with detailed context needed
from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage

storage = SqliteStorage(db_file="meetings.db")

memory = Memory(
    storage=storage,
    session_id="meeting_001",
    full_session_memory=True,
    summary_memory=True,
    model="anthropic/claude-sonnet-4-5"
)

agent = Agent("anthropic/claude-sonnet-4-5", memory=memory)

result1 = agent.do(Task("Let's discuss Q1 revenue targets"))
result2 = agent.do(Task("Now let's cover hiring plans"))
result3 = agent.do(Task("Summarize what we've covered"))
print(result3)

User Analysis Memory Only

Best for: Cross-session personalization, user preferences
from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage

storage = SqliteStorage(db_file="users.db")

memory = Memory(
    storage=storage,
    session_id="session_001",
    user_id="user_abc",
    user_analysis_memory=True,
    model="anthropic/claude-sonnet-4-5"
)

agent = Agent("anthropic/claude-sonnet-4-5", memory=memory)

result = agent.do(Task("I'm a backend developer who prefers Python"))
print(result)  # Agent learns about user

Conversation + Summary (Save-Only History)

Best for: Long conversations where you want full history in storage for auditing but only inject summaries to save tokens
from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage

storage = SqliteStorage(db_file="tutoring.db")

memory = Memory(
    storage=storage,
    session_id="lesson_001",
    full_session_memory=True,         # Save full history
    summary_memory=True,              # Save summaries
    load_full_session_memory=False,   # Don't inject raw history
    load_summary_memory=True,         # Inject summary only
    num_last_messages=20,
    model="anthropic/claude-sonnet-4-5"
)

agent = Agent("anthropic/claude-sonnet-4-5", memory=memory)

result = agent.do(Task("Let's continue learning Python functions"))
print(result)

All Three Memory Types

Best for: Full personalization with context preservation
from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage

storage = SqliteStorage(db_file="assistant.db")

memory = Memory(
    storage=storage,
    session_id="session_001",
    user_id="user_123",
    full_session_memory=True,
    summary_memory=True,
    user_analysis_memory=True,
    num_last_messages=15,
    model="anthropic/claude-sonnet-4-5"
)

agent = Agent("anthropic/claude-sonnet-4-5", memory=memory)

result1 = agent.do(Task("Hi! I'm a data scientist learning about LLMs"))
result2 = agent.do(Task("What recommendations do you have for me?"))
print(result2)  # Personalized based on user profile

Token-Efficient Full Setup

Best for: Production systems that need full data persistence but minimal token usage
from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage

storage = SqliteStorage(db_file="production.db")

memory = Memory(
    storage=storage,
    session_id="session_001",
    user_id="user_123",
    full_session_memory=True,          # Save everything
    summary_memory=True,
    user_analysis_memory=True,
    load_full_session_memory=False,    # Don't inject raw history
    load_summary_memory=True,          # Inject summary instead
    load_user_analysis_memory=True,    # Inject user profile
    model="anthropic/claude-sonnet-4-5"
)

agent = Agent("anthropic/claude-sonnet-4-5", memory=memory)

result = agent.do(Task("Continue where we left off"))
print(result)

Use Case Examples

Use CaseRecommended Configuration
Customer Supportfull_session_memory=True, user_analysis_memory=True
Meeting Notessummary_memory=True
Personal AssistantAll three memory types
Quick Q&Afull_session_memory=True only
Learning PlatformAll three memory types
Code Assistantfull_session_memory=True, feed_tool_call_results=True
High-Volume ProductionAll three save flags True, load_full_session_memory=False, load_summary_memory=True