test_model_fallback.py — langchain Source File
Architecture documentation for test_model_fallback.py, a python file in the langchain codebase. 14 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 54d3e80d_3a3d_b641_2ca1_68c1901ff893["test_model_fallback.py"] 0c635125_6987_b8b3_7ff7_d60249aecde7["warnings"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> 0c635125_6987_b8b3_7ff7_d60249aecde7 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3 120e2591_3e15_b895_72b6_cb26195e40a6["pytest"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> 120e2591_3e15_b895_72b6_cb26195e40a6 2312f229_c199_ac88_c29f_62e2a2958404["langchain_core.language_models.chat_models"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> 2312f229_c199_ac88_c29f_62e2a2958404 833aeadc_c3e9_bfcf_db07_ecb37ad3ba24["langchain_core.language_models.fake_chat_models"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> 833aeadc_c3e9_bfcf_db07_ecb37ad3ba24 d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> d758344f_537f_649e_f467_b9d7442e86df ac2a9b92_4484_491e_1b48_ec85e71e1d58["langchain_core.outputs"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> ac2a9b92_4484_491e_1b48_ec85e71e1d58 91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> 91721f45_4909_e489_8c1f_084f8bd87145 6f5e6c4b_1a3f_fd09_4697_631c27ef1033["langchain.agents.factory"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> 6f5e6c4b_1a3f_fd09_4697_631c27ef1033 5b95b7f6_0c1e_38fa_c3ec_39187b7b580e["langchain.agents.middleware.model_fallback"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> 5b95b7f6_0c1e_38fa_c3ec_39187b7b580e 50acc543_e5f0_2162_cf07_c2bf50723e0c["langchain.agents.middleware.types"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> 50acc543_e5f0_2162_cf07_c2bf50723e0c d135b586_15fc_7b4a_47fb_a8b2bcda78a5["tests.unit_tests.agents.model"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> d135b586_15fc_7b4a_47fb_a8b2bcda78a5 f3bc7443_c889_119d_0744_aacc3620d8d2["langchain_core.callbacks"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> f3bc7443_c889_119d_0744_aacc3620d8d2 5dbfd558_f2f2_9663_3a3f_c317926ac1c1["langgraph.runtime"] 54d3e80d_3a3d_b641_2ca1_68c1901ff893 --> 5dbfd558_f2f2_9663_3a3f_c317926ac1c1 style 54d3e80d_3a3d_b641_2ca1_68c1901ff893 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"""Unit tests for ModelFallbackMiddleware."""
from __future__ import annotations
import warnings
from typing import TYPE_CHECKING, Any, cast
import pytest
from langchain_core.language_models.chat_models import BaseChatModel
from langchain_core.language_models.fake_chat_models import GenericFakeChatModel
from langchain_core.messages import AIMessage, BaseMessage, HumanMessage, SystemMessage
from langchain_core.outputs import ChatGeneration, ChatResult
from typing_extensions import override
from langchain.agents.factory import create_agent
from langchain.agents.middleware.model_fallback import ModelFallbackMiddleware
from langchain.agents.middleware.types import AgentState, ModelRequest, ModelResponse
from tests.unit_tests.agents.model import FakeToolCallingModel
if TYPE_CHECKING:
from langchain_core.callbacks import AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun
from langgraph.runtime import Runtime
def _fake_runtime() -> Runtime:
return cast("Runtime", object())
def _make_request() -> ModelRequest:
"""Create a minimal ModelRequest for testing."""
model = GenericFakeChatModel(messages=iter([AIMessage(content="primary")]))
return ModelRequest(
model=model,
system_prompt=None,
messages=[],
tool_choice=None,
tools=[],
response_format=None,
state=AgentState(messages=[]),
runtime=_fake_runtime(),
model_settings={},
)
def test_primary_model_succeeds() -> None:
"""Test that primary model is used when it succeeds."""
primary_model = GenericFakeChatModel(messages=iter([AIMessage(content="primary response")]))
fallback_model = GenericFakeChatModel(messages=iter([AIMessage(content="fallback response")]))
middleware = ModelFallbackMiddleware(fallback_model)
request = _make_request()
request = request.override(model=primary_model)
def mock_handler(req: ModelRequest) -> ModelResponse:
# Simulate successful model call
result = req.model.invoke([])
return ModelResponse(result=[result])
response = middleware.wrap_model_call(request, mock_handler)
// ... (367 more lines)
Domain
Subdomains
Functions
- _fake_runtime()
- _make_request()
- langchain_core()
- test_all_models_fail()
- test_all_models_fail_async()
- test_fallback_on_primary_failure()
- test_fallback_on_primary_failure_async()
- test_model_fallback_middleware_exhausted_with_agent()
- test_model_fallback_middleware_initialization()
- test_model_fallback_middleware_with_agent()
- test_model_request_is_frozen()
- test_multiple_fallbacks()
- test_multiple_fallbacks_async()
- test_primary_model_succeeds()
- test_primary_model_succeeds_async()
Classes
Dependencies
- langchain.agents.factory
- langchain.agents.middleware.model_fallback
- langchain.agents.middleware.types
- langchain_core.callbacks
- langchain_core.language_models.chat_models
- langchain_core.language_models.fake_chat_models
- langchain_core.messages
- langchain_core.outputs
- langgraph.runtime
- pytest
- tests.unit_tests.agents.model
- typing
- typing_extensions
- warnings
Source
Frequently Asked Questions
What does test_model_fallback.py do?
test_model_fallback.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, RunnableInterface subdomain.
What functions are defined in test_model_fallback.py?
test_model_fallback.py defines 15 function(s): _fake_runtime, _make_request, langchain_core, test_all_models_fail, test_all_models_fail_async, test_fallback_on_primary_failure, test_fallback_on_primary_failure_async, test_model_fallback_middleware_exhausted_with_agent, test_model_fallback_middleware_initialization, test_model_fallback_middleware_with_agent, and 5 more.
What does test_model_fallback.py depend on?
test_model_fallback.py imports 14 module(s): langchain.agents.factory, langchain.agents.middleware.model_fallback, langchain.agents.middleware.types, langchain_core.callbacks, langchain_core.language_models.chat_models, langchain_core.language_models.fake_chat_models, langchain_core.messages, langchain_core.outputs, and 6 more.
Where is test_model_fallback.py in the architecture?
test_model_fallback.py is located at libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_model_fallback.py (domain: CoreAbstractions, subdomain: RunnableInterface, directory: libs/langchain_v1/tests/unit_tests/agents/middleware/implementations).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free