Home / Class/ ModelRetryMiddleware Class — langchain Architecture

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__(

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