ModelRetryMiddleware Class — langchain Architecture
Architecture documentation for the ModelRetryMiddleware class in model_retry.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 5e783bd0_a142_0fd6_3238_fc2d9985440d["ModelRetryMiddleware"] 2343fe4b_5b36_43a8_e17c_329c9cc2cbd8["model_retry.py"] 5e783bd0_a142_0fd6_3238_fc2d9985440d -->|defined in| 2343fe4b_5b36_43a8_e17c_329c9cc2cbd8 092957e8_8312_02a4_3864_557cb176b0ce["__init__()"] 5e783bd0_a142_0fd6_3238_fc2d9985440d -->|method| 092957e8_8312_02a4_3864_557cb176b0ce edb7ba16_b462_070e_af1f_46c3f718cc0a["_format_failure_message()"] 5e783bd0_a142_0fd6_3238_fc2d9985440d -->|method| edb7ba16_b462_070e_af1f_46c3f718cc0a 5f0811d1_ab8b_7642_81d3_ed55469793d6["_handle_failure()"] 5e783bd0_a142_0fd6_3238_fc2d9985440d -->|method| 5f0811d1_ab8b_7642_81d3_ed55469793d6 05371c56_6c46_808b_c839_e45e7d2e464e["wrap_model_call()"] 5e783bd0_a142_0fd6_3238_fc2d9985440d -->|method| 05371c56_6c46_808b_c839_e45e7d2e464e 214769a6_e59c_3497_abe0_3dbaa3e81331["awrap_model_call()"] 5e783bd0_a142_0fd6_3238_fc2d9985440d -->|method| 214769a6_e59c_3497_abe0_3dbaa3e81331
Relationship Graph
Source Code
libs/langchain_v1/langchain/agents/middleware/model_retry.py lines 31–312
class ModelRetryMiddleware(AgentMiddleware[AgentState[ResponseT], ContextT, ResponseT]):
"""Middleware that automatically retries failed model calls with configurable backoff.
Supports retrying on specific exceptions and exponential backoff.
Examples:
!!! example "Basic usage with default settings (2 retries, exponential backoff)"
```python
from langchain.agents import create_agent
from langchain.agents.middleware import ModelRetryMiddleware
agent = create_agent(model, tools=[search_tool], middleware=[ModelRetryMiddleware()])
```
!!! example "Retry specific exceptions only"
```python
from anthropic import RateLimitError
from openai import APITimeoutError
retry = ModelRetryMiddleware(
max_retries=4,
retry_on=(APITimeoutError, RateLimitError),
backoff_factor=1.5,
)
```
!!! example "Custom exception filtering"
```python
from anthropic import APIStatusError
def should_retry(exc: Exception) -> bool:
# Only retry on 5xx errors
if isinstance(exc, APIStatusError):
return 500 <= exc.status_code < 600
return False
retry = ModelRetryMiddleware(
max_retries=3,
retry_on=should_retry,
)
```
!!! example "Custom error handling"
```python
def format_error(exc: Exception) -> str:
return "Model temporarily unavailable. Please try again later."
retry = ModelRetryMiddleware(
max_retries=4,
on_failure=format_error,
)
```
!!! example "Constant backoff (no exponential growth)"
```python
retry = ModelRetryMiddleware(
max_retries=5,
backoff_factor=0.0, # No exponential growth
initial_delay=2.0, # Always wait 2 seconds
)
```
!!! example "Raise exception on failure"
```python
retry = ModelRetryMiddleware(
max_retries=2,
on_failure="error", # Re-raise exception instead of returning message
)
```
"""
def __init__(
Source
Frequently Asked Questions
What is the ModelRetryMiddleware class?
ModelRetryMiddleware is a class in the langchain codebase, defined in libs/langchain_v1/langchain/agents/middleware/model_retry.py.
Where is ModelRetryMiddleware defined?
ModelRetryMiddleware is defined in libs/langchain_v1/langchain/agents/middleware/model_retry.py at line 31.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free