StructuredOutputRetryMiddleware Class — langchain Architecture
Architecture documentation for the StructuredOutputRetryMiddleware class in test_structured_output_retry.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 9e579a9b_76f2_b0cc_bcc3_90d92b770762["StructuredOutputRetryMiddleware"] 949c7cf4_56fe_f3b4_cd89_9631a7e9cb1e["AgentMiddleware"] 9e579a9b_76f2_b0cc_bcc3_90d92b770762 -->|extends| 949c7cf4_56fe_f3b4_cd89_9631a7e9cb1e dd58b626_28b2_b72e_0314_162a5a760201["test_structured_output_retry.py"] 9e579a9b_76f2_b0cc_bcc3_90d92b770762 -->|defined in| dd58b626_28b2_b72e_0314_162a5a760201 ca511984_c2ac_a672_5b39_1ce6d51beb43["__init__()"] 9e579a9b_76f2_b0cc_bcc3_90d92b770762 -->|method| ca511984_c2ac_a672_5b39_1ce6d51beb43 81fe6917_dcc1_9d58_de04_76b81cb1bf2a["wrap_model_call()"] 9e579a9b_76f2_b0cc_bcc3_90d92b770762 -->|method| 81fe6917_dcc1_9d58_de04_76b81cb1bf2a
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_structured_output_retry.py lines 21–64
class StructuredOutputRetryMiddleware(AgentMiddleware):
"""Retries model calls when structured output parsing fails."""
def __init__(self, max_retries: int) -> None:
"""Initialize the structured output retry middleware.
Args:
max_retries: Maximum number of retry attempts.
"""
self.max_retries = max_retries
def wrap_model_call(
self, request: ModelRequest, handler: Callable[[ModelRequest], ModelResponse]
) -> ModelResponse:
"""Intercept and control model execution via handler callback.
Args:
request: The model request containing messages and configuration.
handler: The function to call the model.
Returns:
The model response.
Raises:
StructuredOutputError: If max retries exceeded without success.
"""
for attempt in range(self.max_retries + 1):
try:
return handler(request)
except StructuredOutputError as exc:
if attempt == self.max_retries:
raise
# Include both the AI message and error in a single human message
# to maintain valid chat history alternation
ai_content = exc.ai_message.content
error_message = (
f"Your previous response was:\n{ai_content}\n\n"
f"Error: {exc}. Please try again with a valid response."
)
request.messages.append(HumanMessage(content=error_message))
# This should never be reached, but satisfies type checker
return handler(request)
Defined In
Extends
Source
Frequently Asked Questions
What is the StructuredOutputRetryMiddleware class?
StructuredOutputRetryMiddleware is a class in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_structured_output_retry.py.
Where is StructuredOutputRetryMiddleware defined?
StructuredOutputRetryMiddleware is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/implementations/test_structured_output_retry.py at line 21.
What does StructuredOutputRetryMiddleware extend?
StructuredOutputRetryMiddleware extends AgentMiddleware.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free