test_max_attempts_limit() — langchain Function Reference
Architecture documentation for the test_max_attempts_limit() function in test_wrap_model_call.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 52bf1393_d286_3c4e_02bb_ad254af71470["test_max_attempts_limit()"] 1c3bae87_d793_bb0b_1a39_594b67feb9d4["TestRetryLogic"] 52bf1393_d286_3c4e_02bb_ad254af71470 -->|defined in| 1c3bae87_d793_bb0b_1a39_594b67feb9d4 0c6a77a0_b896_2b90_e50b_5498727d67ab["_llm_type()"] 52bf1393_d286_3c4e_02bb_ad254af71470 -->|calls| 0c6a77a0_b896_2b90_e50b_5498727d67ab style 52bf1393_d286_3c4e_02bb_ad254af71470 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py lines 235–293
def test_max_attempts_limit(self) -> None:
"""Test that middleware controls termination via retry limits."""
class AlwaysFailingModel(BaseChatModel):
"""Model that always fails."""
@override
def _generate(
self,
messages: list[BaseMessage],
stop: list[str] | None = None,
run_manager: CallbackManagerForLLMRun | None = None,
**kwargs: Any,
) -> ChatResult:
msg = "Always fails"
raise ValueError(msg)
@property
def _llm_type(self) -> str:
return "always_failing"
class LimitedRetryMiddleware(AgentMiddleware):
"""Middleware that limits its own retries."""
def __init__(self, max_retries: int = 10):
super().__init__()
self.max_retries = max_retries
self.attempt_count = 0
def wrap_model_call(
self,
request: ModelRequest,
handler: Callable[[ModelRequest], ModelResponse],
) -> ModelCallResult:
last_exception = None
for _attempt in range(self.max_retries):
self.attempt_count += 1
try:
return handler(request)
except Exception as e:
last_exception = e
# Continue to retry
# All retries exhausted, re-raise the last error
if last_exception:
raise last_exception
pytest.fail("Should have raised an exception")
model = AlwaysFailingModel()
middleware = LimitedRetryMiddleware(max_retries=10)
agent = create_agent(model=model, middleware=[middleware])
# Should fail with the model's error after middleware stops retrying
with pytest.raises(ValueError, match="Always fails"):
agent.invoke({"messages": [HumanMessage("Test")]})
# Should have attempted exactly 10 times as configured
assert middleware.attempt_count == 10
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does test_max_attempts_limit() do?
test_max_attempts_limit() is a function in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py.
Where is test_max_attempts_limit() defined?
test_max_attempts_limit() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py at line 235.
What does test_max_attempts_limit() call?
test_max_attempts_limit() calls 1 function(s): _llm_type.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free