Home / Function/ test_create_agent_async_invoke_multiple_middleware() — langchain Function Reference

test_create_agent_async_invoke_multiple_middleware() — langchain Function Reference

Architecture documentation for the test_create_agent_async_invoke_multiple_middleware() function in test_framework.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  5d664451_7d72_b9e8_572e_80bdda07e3dd["test_create_agent_async_invoke_multiple_middleware()"]
  8310d669_2524_e019_e333_8473b50a4990["test_framework.py"]
  5d664451_7d72_b9e8_572e_80bdda07e3dd -->|defined in| 8310d669_2524_e019_e333_8473b50a4990
  08f5c817_8c76_4321_c5f5_654923a10b86["aafter_model()"]
  5d664451_7d72_b9e8_572e_80bdda07e3dd -->|calls| 08f5c817_8c76_4321_c5f5_654923a10b86
  f207db9d_3f7a_9c6f_d85c_5e48d79f2dee["abefore_model()"]
  5d664451_7d72_b9e8_572e_80bdda07e3dd -->|calls| f207db9d_3f7a_9c6f_d85c_5e48d79f2dee
  style 5d664451_7d72_b9e8_572e_80bdda07e3dd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_framework.py lines 612–662

async def test_create_agent_async_invoke_multiple_middleware() -> None:
    """Test async invoke with multiple async middleware hooks."""
    calls = []

    class AsyncMiddlewareOne(AgentMiddleware):
        async def abefore_model(self, state: AgentState[Any], runtime: Runtime) -> None:
            calls.append("AsyncMiddlewareOne.abefore_model")

        async def awrap_model_call(
            self,
            request: ModelRequest,
            handler: Callable[[ModelRequest], Awaitable[ModelResponse]],
        ) -> ModelCallResult:
            calls.append("AsyncMiddlewareOne.awrap_model_call")
            return await handler(request)

        async def aafter_model(self, state: AgentState[Any], runtime: Runtime) -> None:
            calls.append("AsyncMiddlewareOne.aafter_model")

    class AsyncMiddlewareTwo(AgentMiddleware):
        async def abefore_model(self, state: AgentState[Any], runtime: Runtime) -> None:
            calls.append("AsyncMiddlewareTwo.abefore_model")

        async def awrap_model_call(
            self,
            request: ModelRequest,
            handler: Callable[[ModelRequest], Awaitable[ModelResponse]],
        ) -> ModelCallResult:
            calls.append("AsyncMiddlewareTwo.awrap_model_call")
            return await handler(request)

        async def aafter_model(self, state: AgentState[Any], runtime: Runtime) -> None:
            calls.append("AsyncMiddlewareTwo.aafter_model")

    agent = create_agent(
        model=FakeToolCallingModel(),
        tools=[],
        system_prompt="You are a helpful assistant.",
        middleware=[AsyncMiddlewareOne(), AsyncMiddlewareTwo()],
    )

    await agent.ainvoke({"messages": [HumanMessage("hello")]})

    assert calls == [
        "AsyncMiddlewareOne.abefore_model",
        "AsyncMiddlewareTwo.abefore_model",
        "AsyncMiddlewareOne.awrap_model_call",
        "AsyncMiddlewareTwo.awrap_model_call",
        "AsyncMiddlewareTwo.aafter_model",
        "AsyncMiddlewareOne.aafter_model",
    ]

Domain

Subdomains

Frequently Asked Questions

What does test_create_agent_async_invoke_multiple_middleware() do?
test_create_agent_async_invoke_multiple_middleware() is a function in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_framework.py.
Where is test_create_agent_async_invoke_multiple_middleware() defined?
test_create_agent_async_invoke_multiple_middleware() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_framework.py at line 612.
What does test_create_agent_async_invoke_multiple_middleware() call?
test_create_agent_async_invoke_multiple_middleware() calls 2 function(s): aafter_model, abefore_model.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free