PraisonAIError with category, message, and run context for recovery.
Quick Start
How It Works
Every structured error carriesmessage, agent_id, run_id, error_category, and is_retryable. Subclasses add domain fields such as tool_name or model_name.
| Class | When raised | Key fields | Default retryable |
|---|---|---|---|
PraisonAIError | Base — catch-all | error_category, context | False |
ToolExecutionError | Tool fails or loop-guard HALT | tool_name | True |
LLMError | Chat completion fails | model_name | False |
ValidationError | Invalid config or input | field_name | False |
NetworkError | External service unreachable | service_name, status_code | True |
error_category uses typed kinds such as rate_limit, auth, context_overflow, and billing.
Common Patterns
Retry on transient network failures, fail on config bugs:Reaching the Step Limit
When the tool-calling loop reachesExecutionConfig.max_steps (or max_iter when max_steps is unset), the agent does not hard-cut. On the final permitted step it injects a graceful wrap-up instruction, so the model returns a real summary of what it accomplished and what remains — not a placeholder.
Detect truncation with agent.last_stop_reason instead of string-matching:
Step Budget
Cap tool-use steps and detect graceful truncation with
last_stop_reasonBest Practices
Catch the most specific class you can handle
Catch the most specific class you can handle
Use
ToolExecutionError when you only care about tool failures; reserve PraisonAIError for top-level logging.Log structured context
Log structured context
Include
e.error_category, e.agent_id, and e.run_id in observability hooks — they correlate across multi-agent runs.Don't swallow ValidationError
Don't swallow ValidationError
Validation failures usually mean a programming or config bug. Fix the root cause instead of retrying blindly.
Pair with loop guard for retry loops
Pair with loop guard for retry loops
Loop-guard
HALT raises ToolExecutionError. Combine with Loop Guard when tools may repeat indefinitely.Related
Loop Guard
Stop runaway tool loops with HALT/WARN/BLOCK
Non-Fatal Errors
Callback failures captured without crashing

