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