> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upsonic.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Choosing Right Memory Types

> Select the appropriate memory types for your use case

## Memory Type Overview

| Memory Type              | Purpose             | When to Use                                |
| ------------------------ | ------------------- | ------------------------------------------ |
| **Conversation Memory**  | Full chat history   | Multi-turn conversations, detailed context |
| **Summary Memory**       | Condensed summaries | Long sessions, cost-efficient recall       |
| **User Analysis Memory** | User profiles       | Personalization, cross-session learning    |

## Decision Guide

### Conversation Memory Only

Best for: Short sessions, detailed context needed, debugging

```python theme={null}
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.

```python theme={null}
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

```python theme={null}
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

```python theme={null}
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

```python theme={null}
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

```python theme={null}
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

```python theme={null}
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 Case               | Recommended Configuration                                                                 |
| ---------------------- | ----------------------------------------------------------------------------------------- |
| Customer Support       | `full_session_memory=True`, `user_analysis_memory=True`                                   |
| Meeting Notes          | `summary_memory=True`                                                                     |
| Personal Assistant     | All three memory types                                                                    |
| Quick Q\&A             | `full_session_memory=True` only                                                           |
| Learning Platform      | All three memory types                                                                    |
| Code Assistant         | `full_session_memory=True`, `feed_tool_call_results=True`                                 |
| High-Volume Production | All three save flags `True`, `load_full_session_memory=False`, `load_summary_memory=True` |
