Home / Function/ _chain_tool_call_wrappers() — langchain Function Reference

_chain_tool_call_wrappers() — langchain Function Reference

Architecture documentation for the _chain_tool_call_wrappers() function in factory.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  0d0f80a1_fa92_e582_4a35_948953b3da45["_chain_tool_call_wrappers()"]
  fd7a28b1_3772_169b_6524_1342f35143b1["factory.py"]
  0d0f80a1_fa92_e582_4a35_948953b3da45 -->|defined in| fd7a28b1_3772_169b_6524_1342f35143b1
  f4b66c38_651c_807a_caca_41f73fbbe516["create_agent()"]
  f4b66c38_651c_807a_caca_41f73fbbe516 -->|calls| 0d0f80a1_fa92_e582_4a35_948953b3da45
  style 0d0f80a1_fa92_e582_4a35_948953b3da45 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/langchain_v1/langchain/agents/factory.py lines 541–586

def _chain_tool_call_wrappers(
    wrappers: Sequence[ToolCallWrapper],
) -> ToolCallWrapper | None:
    """Compose wrappers into middleware stack (first = outermost).

    Args:
        wrappers: Wrappers in middleware order.

    Returns:
        Composed wrapper, or `None` if empty.

    Example:
        ```python
        wrapper = _chain_tool_call_wrappers([auth, cache, retry])
        # Request flows: auth -> cache -> retry -> tool
        # Response flows: tool -> retry -> cache -> auth
        ```
    """
    if not wrappers:
        return None

    if len(wrappers) == 1:
        return wrappers[0]

    def compose_two(outer: ToolCallWrapper, inner: ToolCallWrapper) -> ToolCallWrapper:
        """Compose two wrappers where outer wraps inner."""

        def composed(
            request: ToolCallRequest,
            execute: Callable[[ToolCallRequest], ToolMessage | Command[Any]],
        ) -> ToolMessage | Command[Any]:
            # Create a callable that invokes inner with the original execute
            def call_inner(req: ToolCallRequest) -> ToolMessage | Command[Any]:
                return inner(req, execute)

            # Outer can call call_inner multiple times
            return outer(request, call_inner)

        return composed

    # Chain all wrappers: first -> second -> ... -> last
    result = wrappers[-1]
    for wrapper in reversed(wrappers[:-1]):
        result = compose_two(wrapper, result)

    return result

Domain

Subdomains

Called By

Frequently Asked Questions

What does _chain_tool_call_wrappers() do?
_chain_tool_call_wrappers() is a function in the langchain codebase, defined in libs/langchain_v1/langchain/agents/factory.py.
Where is _chain_tool_call_wrappers() defined?
_chain_tool_call_wrappers() is defined in libs/langchain_v1/langchain/agents/factory.py at line 541.
What calls _chain_tool_call_wrappers()?
_chain_tool_call_wrappers() is called by 1 function(s): create_agent.

Analyze Your Own Codebase

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

Try Supermodel Free