Home / Class/ ConditionalToolMiddleware Class — langchain Architecture

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

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