Retry policies¶
sintezi uses separate retry policies for network errors and validation failures.
Default retry behavior¶
By default, sintezi retries: - Network errors (OSError, OpenAIError) with exponential backoff - Validation errors (ValueError) with exponential backoff
Custom retry policies¶
from sintezi.ai.context import RetryPolicy, RetryParameters
retry_policy = RetryPolicy(
validation=RetryParameters(
stop_after_attempt=5, # Max 5 validation retries
stop_after_delay=60.0, # Or stop after 60 seconds
wait_initial=1.0, # Start with 1 second wait
wait_max=10.0, # Max 10 seconds between retries
),
network=RetryParameters(
stop_after_attempt=3, # Max 3 network retries
wait_initial=2.0,
wait_max=30.0,
),
)
Apply retry policy¶
At context level (global)¶
All calls using this context inherit the retry policy.
At call level (per-call override)¶
ai_call = StructuredAiCall(
ctx=ctx,
config=config,
formatter=formatter,
parser=parser,
retry_policy=retry_policy, # Overrides context policy
)
Retry parameters¶
| Parameter | Description |
|---|---|
stop_after_attempt |
Maximum number of retry attempts |
stop_after_delay |
Maximum total time for retries (seconds) |
wait_initial |
Initial wait time between retries (seconds) |
wait_max |
Maximum wait time between retries (seconds) |
Retry uses exponential backoff with jitter by default.
Merging policies¶
Child policies override parent values:
parent = RetryPolicy(
validation=RetryParameters(stop_after_attempt=5),
)
child = RetryPolicy(
validation=RetryParameters(stop_after_attempt=3), # Overrides parent
)
merged = parent.merge(child) # Uses stop_after_attempt=3
Next steps¶
- API Reference — complete retry API