ConditionalToolMiddleware Class — langchain Architecture
Architecture documentation for the ConditionalToolMiddleware class in test_tools.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 13463169_9081_23c5_190b_eb716b4ed9a0["ConditionalToolMiddleware"] 18e85ff8_9a5d_f800_f722_027398dc89e7["BaseTool"] 13463169_9081_23c5_190b_eb716b4ed9a0 -->|extends| 18e85ff8_9a5d_f800_f722_027398dc89e7 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a["test_tools.py"] 13463169_9081_23c5_190b_eb716b4ed9a0 -->|defined in| 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a 4a265de5_1026_9487_8bca_c3af5c5ec900["wrap_model_call()"] 13463169_9081_23c5_190b_eb716b4ed9a0 -->|method| 4a265de5_1026_9487_8bca_c3af5c5ec900
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_tools.py lines 178–194
class ConditionalToolMiddleware(AgentMiddleware[AdminState]):
state_schema = AdminState
def wrap_model_call(
self,
request: ModelRequest,
handler: Callable[[ModelRequest], ModelResponse],
) -> ModelCallResult:
# Remove admin_tool if not admin
if not request.state.get("is_admin", False):
filtered_tools: list[BaseTool | dict[str, Any]] = []
for t in request.tools:
assert isinstance(t, BaseTool)
if t.name != "admin_tool":
filtered_tools.append(t)
request = request.override(tools=filtered_tools)
return handler(request)
Extends
Source
Frequently Asked Questions
What is the ConditionalToolMiddleware class?
ConditionalToolMiddleware is a class in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_tools.py.
Where is ConditionalToolMiddleware defined?
ConditionalToolMiddleware is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_tools.py at line 178.
What does ConditionalToolMiddleware extend?
ConditionalToolMiddleware extends BaseTool.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free