Skip to main content

Overview

Memory enables agents to remember conversations and learn about users across sessions. It maintains chat history, generates summaries, and builds user profiles for personalized interactions.

Installation

Memory requires a storage backend to persist data. Choose the storage option that fits your deployment needs.
Example: Setting up Memory with SQLiteFor local development and testing, use SQLite storage:
uv pip install "upsonic[sqlite-storage]"
Other storage options:
  • [redis-storage] - Redis for distributed, high-performance systems
  • [postgres-storage] - PostgreSQL for production, multi-node deployments
  • [mongo-storage] - MongoDB for document-based, scalable systems
  • [mem0-storage] - Mem0 Platform integration
For production deployments, PostgreSQL or Redis are recommended. See Storage Options for detailed configuration.

Key Features

  • Conversation History: Persist complete chat history across sessions
  • Session Summaries: Auto-generate condensed conversation summaries
  • User Profiles: Extract and learn user traits from interactions
  • Multiple Storage Backends: SQLite, Redis, PostgreSQL, MongoDB, or in-memory
  • Sync & Async Support: Both synchronous and asynchronous storage operations
  • HITL Checkpointing: Automatic checkpoint saving for Human-in-the-Loop resumption

Quick Start

from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage

# Create storage backend
storage = SqliteStorage(db_file="memory.db")

# Create memory with desired features
memory = Memory(
    storage=storage,
    session_id="session_001",
    user_id="user_123",
    full_session_memory=True,    # Enable chat history
    summary_memory=True,         # Enable summaries
    user_analysis_memory=True,   # Enable user profiles
    model="openai/gpt-4o"        # Required for summaries & user analysis
)

# Attach memory to agent
agent = Agent("openai/gpt-4o", memory=memory)

# First interaction
result1 = agent.do(Task("My name is Alice and I'm a Python developer"))

# Second interaction - agent remembers context
result2 = agent.do(Task("What's my name and expertise?"))
print(result2)  # Alice, Python developer

Memory Types

TypePurposeRequires
Conversation MemoryFull chat history persistencesession_id
Summary MemoryCondensed session summariessession_id, model
User Analysis MemoryUser profile extractionuser_id, model

Storage Backends

BackendUse CasePersistence
SqliteStorageLocal development, single-nodeFile-based
RedisStorageDistributed, high-performanceIn-memory + optional persist
PostgresStorageProduction, multi-nodeDatabase
MongoStorageDocument-based, scalableDatabase
InMemoryStorageTesting, ephemeralNone