Home / Class/ ModelFallbackMiddleware Class — langchain Architecture

ModelFallbackMiddleware Class — langchain Architecture

Architecture documentation for the ModelFallbackMiddleware class in model_fallback.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  eb36575f_ada3_a10f_f140_390f57f60565["ModelFallbackMiddleware"]
  66325212_2762_82c6_b317_a5ec6547806c["model_fallback.py"]
  eb36575f_ada3_a10f_f140_390f57f60565 -->|defined in| 66325212_2762_82c6_b317_a5ec6547806c
  82058868_f4c5_706a_3b45_4fe9fd5ab6cf["__init__()"]
  eb36575f_ada3_a10f_f140_390f57f60565 -->|method| 82058868_f4c5_706a_3b45_4fe9fd5ab6cf
  33aebc2c_08b3_3401_6d19_c055a215c08c["wrap_model_call()"]
  eb36575f_ada3_a10f_f140_390f57f60565 -->|method| 33aebc2c_08b3_3401_6d19_c055a215c08c
  6630279e_384e_3d22_e9c0_6389279280ff["awrap_model_call()"]
  eb36575f_ada3_a10f_f140_390f57f60565 -->|method| 6630279e_384e_3d22_e9c0_6389279280ff

Relationship Graph

Source Code

libs/langchain_v1/langchain/agents/middleware/model_fallback.py lines 24–138

class ModelFallbackMiddleware(AgentMiddleware[AgentState[ResponseT], ContextT, ResponseT]):
    """Automatic fallback to alternative models on errors.

    Retries failed model calls with alternative models in sequence until
    success or all models exhausted. Primary model specified in `create_agent`.

    Example:
        ```python
        from langchain.agents.middleware.model_fallback import ModelFallbackMiddleware
        from langchain.agents import create_agent

        fallback = ModelFallbackMiddleware(
            "openai:gpt-4o-mini",  # Try first on error
            "anthropic:claude-sonnet-4-5-20250929",  # Then this
        )

        agent = create_agent(
            model="openai:gpt-4o",  # Primary model
            middleware=[fallback],
        )

        # If primary fails: tries gpt-4o-mini, then claude-sonnet-4-5-20250929
        result = await agent.invoke({"messages": [HumanMessage("Hello")]})
        ```
    """

    def __init__(
        self,
        first_model: str | BaseChatModel,
        *additional_models: str | BaseChatModel,
    ) -> None:
        """Initialize model fallback middleware.

        Args:
            first_model: First fallback model (string name or instance).
            *additional_models: Additional fallbacks in order.
        """
        super().__init__()

        # Initialize all fallback models
        all_models = (first_model, *additional_models)
        self.models: list[BaseChatModel] = []
        for model in all_models:
            if isinstance(model, str):
                self.models.append(init_chat_model(model))
            else:
                self.models.append(model)

    def wrap_model_call(
        self,
        request: ModelRequest[ContextT],
        handler: Callable[[ModelRequest[ContextT]], ModelResponse[ResponseT]],
    ) -> ModelResponse[ResponseT] | AIMessage:
        """Try fallback models in sequence on errors.

        Args:
            request: Initial model request.
            handler: Callback to execute the model.

        Returns:
            AIMessage from successful model call.

        Raises:
            Exception: If all models fail, re-raises last exception.
        """
        # Try primary model first
        last_exception: Exception
        try:
            return handler(request)
        except Exception as e:
            last_exception = e

        # Try fallback models
        for fallback_model in self.models:
            try:
                return handler(request.override(model=fallback_model))
            except Exception as e:
                last_exception = e
                continue

        raise last_exception

Frequently Asked Questions

What is the ModelFallbackMiddleware class?
ModelFallbackMiddleware is a class in the langchain codebase, defined in libs/langchain_v1/langchain/agents/middleware/model_fallback.py.
Where is ModelFallbackMiddleware defined?
ModelFallbackMiddleware is defined in libs/langchain_v1/langchain/agents/middleware/model_fallback.py at line 24.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free