Skip to main content

Session Resume

PraisonAI automatically resumes conversations when you use the same session_id.

How It Works

from praisonaiagents import Agent, db

db_instance = db(database_url="postgresql://postgres:praison123@localhost/praisonai")

# First run
agent = Agent(name="Bot", db=db_instance, session_id="session-001")
agent.chat("My favorite color is blue")
db_instance.close()

# Later run (same session_id)
db_instance = db(database_url="postgresql://postgres:praison123@localhost/praisonai")
agent = Agent(name="Bot", db=db_instance, session_id="session-001")
agent.chat("What's my favorite color?")
# Agent remembers: "Your favorite color is blue"
db_instance.close()

Session ID Strategies

User-Based Sessions

session_id = f"user-{user_id}-main"

Conversation-Based Sessions

import uuid
session_id = f"conv-{uuid.uuid4().hex[:8]}"

Auto-Generated (Default)

If you don’t provide a session_id, one is auto-generated based on agent name + user_id:
agent = Agent(name="Assistant", db=db)  # session_id auto-generated
print(agent.session_id)  # "session-abc123def456"

CLI Resume

# Show history
praisonai persistence resume \
    --session-id "my-session" \
    --conversation-url "postgresql://localhost/mydb" \
    --show-history

# Continue conversation
praisonai persistence resume \
    --session-id "my-session" \
    --conversation-url "postgresql://localhost/mydb" \
    --continue "What did we discuss?"

Accessing History

# Get current chat history
print(len(agent.chat_history))

# Access session_id
print(agent.session_id)

Best Practices

  1. Consistent session_ids - Same ID = same conversation thread
  2. User isolation - Include user_id in session_id for multi-user apps
  3. Close connections - Always call db.close() when done