Skip to main content

Session Resume

PraisonAI automatically resumes conversations when you use the same session_id.

How It Works

from praisonaiagents import Agent
from praisonai.db import PostgresDB

db = PostgresDB(host="localhost", database="praisonai", user="postgres", password="praison123")

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

# Later run (same session_id)
db = PostgresDB(host="localhost", database="praisonai", user="postgres", password="praison123")
agent = Agent(name="Bot", db=db, session_id="session-001")
agent.chat("What's my favorite color?")
# Agent remembers: "Your favorite color is blue"
db.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