test_model_retry_custom_exception_filter() — langchain Function Reference
Architecture documentation for the test_model_retry_custom_exception_filter() function in test_model_retry.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 9c46179f_0bc2_7bd8_d868_7af81269be9a["test_model_retry_custom_exception_filter()"] 6a114635_155a_5b86_2f48_fb8ca99f7545["test_model_retry.py"] 9c46179f_0bc2_7bd8_d868_7af81269be9a -->|defined in| 6a114635_155a_5b86_2f48_fb8ca99f7545 93e48461_3897_ea11_773a_8838a5a28da2["_generate()"] 9c46179f_0bc2_7bd8_d868_7af81269be9a -->|calls| 93e48461_3897_ea11_773a_8838a5a28da2 style 9c46179f_0bc2_7bd8_d868_7af81269be9a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_model_retry.py lines 322–398
def test_model_retry_custom_exception_filter() -> None:
"""Test ModelRetryMiddleware with custom exception filter function."""
class CustomError(Exception):
"""Custom exception with retry_me attribute."""
def __init__(self, message: str, *, retry_me: bool):
"""Initialize custom error.
Args:
message: Error message.
retry_me: Whether this error should be retried.
"""
super().__init__(message)
self.retry_me = retry_me
attempt_count = {"value": 0}
class CustomErrorModel(FakeToolCallingModel):
"""Model that raises CustomError."""
def _generate(
self,
messages: list[BaseMessage],
stop: list[str] | None = None,
run_manager: CallbackManagerForLLMRun | None = None,
**kwargs: Any,
) -> ChatResult:
"""Execute the model and raise CustomError.
Args:
messages: Input messages.
stop: Optional stop sequences.
run_manager: Optional callback manager.
**kwargs: Additional keyword arguments.
Raises:
CustomError: Always raises CustomError.
"""
attempt_count["value"] += 1
if attempt_count["value"] == 1:
msg = "Retryable error"
raise CustomError(msg, retry_me=True)
msg = "Non-retryable error"
raise CustomError(msg, retry_me=False)
def should_retry(exc: Exception) -> bool:
return isinstance(exc, CustomError) and exc.retry_me
model = CustomErrorModel()
retry = ModelRetryMiddleware(
max_retries=3,
retry_on=should_retry,
initial_delay=0.01,
jitter=False,
on_failure="continue",
)
agent = create_agent(
model=model,
tools=[],
middleware=[retry],
checkpointer=InMemorySaver(),
)
result = agent.invoke(
{"messages": [HumanMessage("Hello")]},
{"configurable": {"thread_id": "test"}},
)
ai_messages = [m for m in result["messages"] if isinstance(m, AIMessage)]
assert len(ai_messages) >= 1
# Should retry once (attempt 1 with retry_me=True), then fail on attempt 2 (retry_me=False)
assert attempt_count["value"] == 2
assert "2 attempts" in ai_messages[-1].content
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does test_model_retry_custom_exception_filter() do?
test_model_retry_custom_exception_filter() is a function in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_model_retry.py.
Where is test_model_retry_custom_exception_filter() defined?
test_model_retry_custom_exception_filter() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_model_retry.py at line 322.
What does test_model_retry_custom_exception_filter() call?
test_model_retry_custom_exception_filter() calls 1 function(s): _generate.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free