Learn Config

Configure continuous learning to capture patterns and preferences from agent interactions using LearnConfig

python
from praisonaiagents import Agent, LearnConfig

agent = Agent(
    name="Personal Assistant",
    instructions="You are a helpful assistant that remembers user preferences.",
    learn=LearnConfig(
        persona=True,
        insights=True,
        mode="agentic",
    )
)

agent.start("I prefer concise answers with bullet points")

Agents learn from every interaction — capturing user preferences, insights, and patterns to improve future responses automatically.

The user interacts with the agent; learnings are extracted and stored, then recalled in future sessions.

Diagram

Continuous Learning

👤 User

🤖 Agent

🧠 Learn

💾 Store

🔄 Recall

Quick Start

  1. Enable Learning with Defaults
    python
    from praisonaiagents import Agent
    
    agent = Agent(
        name="Learning Agent",
        instructions="You are a helpful assistant",
        learn=True
    )
    
    agent.start("I work in Python and prefer type hints")
  2. Configure Learning Capabilities
    python
    from praisonaiagents import Agent, LearnConfig
    
    agent = Agent(
        name="Smart Assistant",
        instructions="Remember my preferences and insights.",
        learn=LearnConfig(
            persona=True,
            insights=True,
            patterns=True,
            mode="agentic",
        )
    )
    
    agent.start("Always format code examples with type annotations")
  3. Use a Database Backend
    python
    from praisonaiagents import Agent, LearnConfig
    
    agent = Agent(
        name="Persistent Learner",
        instructions="Store learnings in a database.",
        learn=LearnConfig(
            backend="sqlite",
            db_url="sqlite:///learn.db",
            persona=True,
            insights=True,
        )
    )
    
    agent.start("My timezone is UTC+5:30")

How It Works

Diagram
StorageLearnEngineAgentUserStorageLearnEngineAgentUserSend messageProcess and respondExtract learnings (mode=agentic)Store persona, insights, patternsRecalled on next sessionPersonalized response

Choose a Learning Mode

Diagram

Nothing automatic

Auto-extract learnings

Propose for review

What should happen\nafter each interaction?

mode: disabled\nManual capture only

mode: agentic\nAgent extracts & stores

mode: propose\nFuture — behaves as disabled now

Choose a Storage Backend

Diagram

Simple, no deps

Local database

Fast in-memory

Scale out

Where to store\nlearning data?

backend: file\nJSON files in ~/.praison

backend: sqlite\nSQLite file

backend: redis\nRequires redis package

backend: mongodb\nRequires pymongo


Configuration Options

LearnConfig Python Reference

Full parameter reference for LearnConfig

OptionTypeDefaultDescription
personaboolTrueCapture user preferences and profile
insightsboolTrueCapture observations and learnings
threadboolTrueCapture session/conversation context
patternsboolFalseCapture reusable knowledge patterns
decisionsboolFalseLog decision history
feedbackboolFalseCapture outcome signals
improvementsboolFalseSelf-improvement proposals
modestr"disabled""disabled", "agentic", or "propose"
backendstr"file""file", "sqlite", "redis", or "mongodb"
db_url`str \None`NoneDatabase connection URL (non-file backends)
store_path`str \None`NoneCustom path for file backend
max_entriesint0Max entries per store (0 = unbounded)
retention_daysint0Archive entries unused for N days (0 = keep forever)
llm`str \None`NoneLLM for learning extraction (defaults to agent’s LLM)
scopestr"private""private" or "shared"
nudge_intervalint0Nudge agent every N turns. 0 = disabled; Agent(learn=True) sets it to 10.
nudge_min_tool_itersint3Tunable override, not a hard floor. <= 0 fires the cadence on conversational (tool-less) turns too; a positive value gates on tool-work count.
propose_skillsboolFalseEnable skill_manage tool in propose mode

Common Patterns

Self-improving assistant with retention governance:

python
from praisonaiagents import Agent, LearnConfig

agent = Agent(
    name="Adaptive Assistant",
    instructions="Adapt to user preferences over time.",
    learn=LearnConfig(
        persona=True,
        insights=True,
        patterns=True,
        mode="agentic",
        max_entries=500,
        retention_days=90,
    )
)

Shared learnings across a team of agents:

python
from praisonaiagents import Agent, LearnConfig

shared_learn = LearnConfig(
    scope="shared",
    backend="sqlite",
    db_url="sqlite:///team_learnings.db",
    persona=True,
    insights=True,
)

researcher = Agent(name="Researcher", instructions="Research topics.", learn=shared_learn)
writer = Agent(name="Writer", instructions="Write content.", learn=shared_learn)

Best Practices

Start with learn=True before tuning

Enable learning with defaults first. Once you understand what gets captured, switch to LearnConfig to enable only the capabilities you need (persona, insights, patterns).

Use agentic mode for hands-off learning

Set mode="agentic" to have the agent automatically extract and store learnings after each conversation. This requires no manual action from users or developers.

Set retention limits in production

Use max_entries and retention_days to prevent unbounded growth. A limit of max_entries=1000 with retention_days=180 keeps the learning store manageable.

Use sqlite or redis for persistence across restarts

The default file backend stores JSON in ~/.praison. For production or multi-instance setups, use backend="sqlite" or backend="redis" with a db_url.


Related