Home / Function/ test_create_agent_mixed_sync_async_middleware_async_invoke() — langchain Function Reference

test_create_agent_mixed_sync_async_middleware_async_invoke() — langchain Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  ce72b742_24f6_48f4_0387_a35cf0e4e40e["test_create_agent_mixed_sync_async_middleware_async_invoke()"]
  8310d669_2524_e019_e333_8473b50a4990["test_framework.py"]
  ce72b742_24f6_48f4_0387_a35cf0e4e40e -->|defined in| 8310d669_2524_e019_e333_8473b50a4990
  08f5c817_8c76_4321_c5f5_654923a10b86["aafter_model()"]
  ce72b742_24f6_48f4_0387_a35cf0e4e40e -->|calls| 08f5c817_8c76_4321_c5f5_654923a10b86
  ef00a503_751e_81db_e7f3_3574b9b9827e["abefore_model()"]
  ce72b742_24f6_48f4_0387_a35cf0e4e40e -->|calls| ef00a503_751e_81db_e7f3_3574b9b9827e
  c3635e27_cc14_1814_2662_bc84be46e105["after_model()"]
  ce72b742_24f6_48f4_0387_a35cf0e4e40e -->|calls| c3635e27_cc14_1814_2662_bc84be46e105
  style ce72b742_24f6_48f4_0387_a35cf0e4e40e fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_framework.py lines 700–761

async def test_create_agent_mixed_sync_async_middleware_async_invoke() -> None:
    """Test async invoke with mixed sync and async middleware."""
    calls = []

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

        def wrap_model_call(
            self,
            request: ModelRequest,
            handler: Callable[[ModelRequest], ModelResponse],
        ) -> ModelCallResult:
            calls.append("MostlySyncMiddleware.wrap_model_call")
            return handler(request)

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

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

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

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

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

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

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

    # In async mode, both sync and async middleware should work
    # Note: Sync wrap_model_call is not called when running in async mode,
    # as the async version is preferred
    assert calls == [
        "MostlySyncMiddleware.before_model",
        "AsyncMiddleware.abefore_model",
        "MostlySyncMiddleware.awrap_model_call",
        "AsyncMiddleware.awrap_model_call",
        "AsyncMiddleware.aafter_model",
        "MostlySyncMiddleware.after_model",
    ]

Domain

Subdomains

Frequently Asked Questions

What does test_create_agent_mixed_sync_async_middleware_async_invoke() do?
test_create_agent_mixed_sync_async_middleware_async_invoke() 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_mixed_sync_async_middleware_async_invoke() defined?
test_create_agent_mixed_sync_async_middleware_async_invoke() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_framework.py at line 700.
What does test_create_agent_mixed_sync_async_middleware_async_invoke() call?
test_create_agent_mixed_sync_async_middleware_async_invoke() calls 3 function(s): aafter_model, abefore_model, after_model.

Analyze Your Own Codebase

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

Try Supermodel Free