test_middleware_can_modify_tools() — langchain Function Reference
Architecture documentation for the test_middleware_can_modify_tools() function in test_tools.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD dc470ac3_ed23_e616_588d_cb06e80a560c["test_middleware_can_modify_tools()"] 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a["test_tools.py"] dc470ac3_ed23_e616_588d_cb06e80a560c -->|defined in| 5e05f5a6_3c9a_6b02_08a5_596bf1a6469a style dc470ac3_ed23_e616_588d_cb06e80a560c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_tools.py lines 73–123
def test_middleware_can_modify_tools() -> None:
"""Test that middleware can modify the list of tools in ModelRequest."""
@tool
def tool_a(value: str) -> str:
"""Tool A."""
return "A"
@tool
def tool_b(value: str) -> str:
"""Tool B."""
return "B"
@tool
def tool_c(value: str) -> str:
"""Tool C."""
return "C"
class ToolFilteringMiddleware(AgentMiddleware):
def wrap_model_call(
self,
request: ModelRequest,
handler: Callable[[ModelRequest], ModelResponse],
) -> ModelCallResult:
# Only allow tool_a and tool_b
filtered_tools: list[BaseTool | dict[str, Any]] = []
for t in request.tools:
assert isinstance(t, BaseTool)
if t.name in {"tool_a", "tool_b"}:
filtered_tools.append(t)
return handler(request.override(tools=filtered_tools))
# Model will try to call tool_a
model = FakeToolCallingModel(
tool_calls=[[{"args": {"input": "test"}, "id": "1", "name": "tool_a"}], []]
)
agent = create_agent(
model=model,
tools=[tool_a, tool_b, tool_c],
system_prompt="You are a helpful assistant.",
middleware=[ToolFilteringMiddleware()],
)
result = agent.invoke({"messages": [HumanMessage("Use tool_a")]})
# Verify that the tool was executed successfully
messages = result["messages"]
tool_messages = [m for m in messages if isinstance(m, ToolMessage)]
assert len(tool_messages) == 1
assert tool_messages[0].name == "tool_a"
Domain
Subdomains
Source
Frequently Asked Questions
What does test_middleware_can_modify_tools() do?
test_middleware_can_modify_tools() is a function in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_tools.py.
Where is test_middleware_can_modify_tools() defined?
test_middleware_can_modify_tools() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_tools.py at line 73.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free