Skip to main content

Lazy Imports & Fast Startup

PraisonAI Agents v0.5.0+ uses lazy imports to dramatically reduce startup time and memory usage. Heavy dependencies like litellm, requests, and chromadb are only loaded when actually needed.
The user imports PraisonAI and starts an agent instantly; heavy libraries load only on first use.

How It Works

Quick Start

1

Import without heavy deps

2

Verify lazy loading

Performance Benefits

How It Works

Lazy Module Loading

Core modules are loaded on-demand using Python’s __getattr__ mechanism:

Heavy Dependencies

The following dependencies are NOT loaded at import time:
  • litellm - Only loaded when LLM calls are made
  • requests - Only loaded when HTTP calls are needed
  • chromadb - Only loaded when vector stores are used
  • mem0 - Only loaded when memory features are used

Training & Vision Module Lazy Loading

Modules affected: praisonai.train.llm.trainer (the TrainModel class) and praisonai.upload_vision (the UploadVisionModel class) now use lazy loading to defer heavy ML dependencies. These modules use a _lazy_import_*_deps() helper called from __init__, mirroring train.py / train_vision.py patterns. Dependencies deferred:
  • torch - CUDA/GPU computation framework
  • transformers (TextStreamer, TrainingArguments) - Hugging Face transformers
  • unsloth (FastLanguageModel, FastVisionModel, is_bfloat16_supported, standardize_sharegpt, get_chat_template) - Fast training optimization
  • trl (SFTTrainer) - Transformer Reinforcement Learning
  • datasets (load_dataset, concatenate_datasets) - Dataset loading utilities
  • psutil (virtual_memory) - System memory monitoring
Impact: Importing praisonai.upload_vision or praisonai.train.llm.trainer is now near-instant; CUDA / ~2 GB of ML libs only load when you instantiate UploadVisionModel(...) or TrainModel(...).
ImportError messages now include install hints:
  • Vision upload: pip install torch unsloth
  • Training: pip install torch transformers unsloth datasets trl psutil

Verifying Lazy Imports

You can verify lazy imports are working:

Configuration

Lazy imports are enabled by default. You can check the configuration:

Best Practices

Defer optional modules until a feature is invoked — keeps CLI and server startup fast.
Use pip install praisonaiagents[memory] rather than pulling every optional dependency upfront.
Track cold import duration to catch accidental module-level heavy imports in PRs.
Use the lite package when you bring your own LLM client and need minimal footprint.

Measuring Performance

Use the built-in benchmarks to measure import time:

Performance Benchmarks

Import time and memory metrics

Lite Package

Minimal BYO-LLM subpackage