Skip to main content

Persistence Module

The Persistence module provides database adapters and session management for storing agent conversations, runs, and traces.

Installation

pip install praisonai

# For specific database support
pip install "praisonai[postgres]"
pip install "praisonai[redis]"

Quick Start

from praisonaiagents import Agent, db

agent = Agent(
    name="Assistant",
    instructions="You are helpful.",
    db=db.PraisonDB(database_url="postgresql://localhost/mydb")
)

response = agent.chat("Hello!")

Supported Databases

Conversation Stores

DatabaseInstallURL Format
PostgreSQLpip install "praisonai[postgres]"postgresql://user:pass@host/db
MySQLpip install "praisonai[mysql]"mysql://user:pass@host/db
SQLiteBuilt-insqlite:///path/to/db.sqlite
JSONBuilt-injson:///path/to/data.json

Knowledge Stores (Vector)

DatabaseInstall
Qdrantpip install "praisonai[qdrant]"
Chromapip install "praisonai[chroma]"
Pineconepip install "praisonai[pinecone]"
PGVectorpip install "praisonai[pgvector]"

State Stores

DatabaseInstall
Redispip install "praisonai[redis]"
MongoDBpip install "praisonai[mongodb]"

Database Adapters

PostgreSQL

from praisonaiagents import Agent, db

agent = Agent(
    name="Assistant",
    db=db.PostgresDB(
        database_url="postgresql://user:pass@localhost/mydb"
    )
)

SQLite

from praisonaiagents import Agent, db

agent = Agent(
    name="Assistant",
    db=db.SQLiteDB(database_path="./agent.db")
)

Redis

from praisonaiagents import Agent, db

agent = Agent(
    name="Assistant",
    db=db.RedisDB(redis_url="redis://localhost:6379")
)

Session Management

from praisonaiagents import Agent, Session

# Create session
session = Session(session_id="user-123")

agent = Agent(
    name="Assistant",
    session=session
)

# Conversations persist across runs
agent.chat("Remember my name is Alice")
# Later...
agent.chat("What's my name?")  # Remembers "Alice"

Data Models

DbMessage

Stored message format:
{
    "id": "msg-uuid",
    "session_id": "session-123",
    "agent_id": "agent-name",
    "role": "user",  # or "assistant"
    "content": "Message content",
    "timestamp": "2024-01-01T00:00:00Z"
}

DbRun

Execution run record:
{
    "id": "run-uuid",
    "session_id": "session-123",
    "agent_id": "agent-name",
    "status": "completed",
    "started_at": "2024-01-01T00:00:00Z",
    "completed_at": "2024-01-01T00:00:01Z"
}

DbToolCall

Tool execution record:
{
    "id": "tool-uuid",
    "run_id": "run-uuid",
    "tool_name": "search",
    "arguments": {"query": "AI news"},
    "result": "Search results...",
    "timestamp": "2024-01-01T00:00:00Z"
}

See Also