Home / File/ tool_emulator.py — langchain Source File

tool_emulator.py — langchain Source File

Architecture documentation for tool_emulator.py, a python file in the langchain codebase. 8 imports, 0 dependents.

File python LangChainCore Runnables 8 imports 1 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  9d440466_e21c_2c68_e5d1_992787a1d0d9["tool_emulator.py"]
  feec1ec4_6917_867b_d228_b134d0ff8099["typing"]
  9d440466_e21c_2c68_e5d1_992787a1d0d9 --> feec1ec4_6917_867b_d228_b134d0ff8099
  f77bacd6_1087_c145_d5d5_68e6f3937f9d["langchain_core.language_models.chat_models"]
  9d440466_e21c_2c68_e5d1_992787a1d0d9 --> f77bacd6_1087_c145_d5d5_68e6f3937f9d
  9444498b_8066_55c7_b3a2_1d90c4162a32["langchain_core.messages"]
  9d440466_e21c_2c68_e5d1_992787a1d0d9 --> 9444498b_8066_55c7_b3a2_1d90c4162a32
  a681398d_ed44_c914_1a44_5d174223b069["langchain.agents.middleware.types"]
  9d440466_e21c_2c68_e5d1_992787a1d0d9 --> a681398d_ed44_c914_1a44_5d174223b069
  65f05002_bc3f_fe76_ba95_ad1efdcfcc42["langchain.chat_models.base"]
  9d440466_e21c_2c68_e5d1_992787a1d0d9 --> 65f05002_bc3f_fe76_ba95_ad1efdcfcc42
  2bf6d401_816d_d011_3b05_a6114f55ff58["collections.abc"]
  9d440466_e21c_2c68_e5d1_992787a1d0d9 --> 2bf6d401_816d_d011_3b05_a6114f55ff58
  726d73c8_7999_511a_c1ec_4524fb1cc31a["langgraph.types"]
  9d440466_e21c_2c68_e5d1_992787a1d0d9 --> 726d73c8_7999_511a_c1ec_4524fb1cc31a
  b036e189_bfab_a345_61aa_93be8b3e73bc["langchain.tools"]
  9d440466_e21c_2c68_e5d1_992787a1d0d9 --> b036e189_bfab_a345_61aa_93be8b3e73bc
  style 9d440466_e21c_2c68_e5d1_992787a1d0d9 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Tool emulator middleware for testing."""

from __future__ import annotations

from typing import TYPE_CHECKING, Any, Generic

from langchain_core.language_models.chat_models import BaseChatModel
from langchain_core.messages import HumanMessage, ToolMessage

from langchain.agents.middleware.types import AgentMiddleware, AgentState, ContextT
from langchain.chat_models.base import init_chat_model

if TYPE_CHECKING:
    from collections.abc import Awaitable, Callable

    from langgraph.types import Command

    from langchain.agents.middleware.types import ToolCallRequest
    from langchain.tools import BaseTool


class LLMToolEmulator(AgentMiddleware[AgentState[Any], ContextT], Generic[ContextT]):
    """Emulates specified tools using an LLM instead of executing them.

    This middleware allows selective emulation of tools for testing purposes.

    By default (when `tools=None`), all tools are emulated. You can specify which
    tools to emulate by passing a list of tool names or `BaseTool` instances.

    Examples:
        !!! example "Emulate all tools (default behavior)"

            ```python
            from langchain.agents.middleware import LLMToolEmulator

            middleware = LLMToolEmulator()

            agent = create_agent(
                model="openai:gpt-4o",
                tools=[get_weather, get_user_location, calculator],
                middleware=[middleware],
            )
            ```

        !!! example "Emulate specific tools by name"

            ```python
            middleware = LLMToolEmulator(tools=["get_weather", "get_user_location"])
            ```

        !!! example "Use a custom model for emulation"

            ```python
            middleware = LLMToolEmulator(
                tools=["get_weather"], model="anthropic:claude-sonnet-4-5-20250929"
            )
            ```

        !!! example "Emulate specific tools by passing tool instances"

// ... (150 more lines)

Domain

Subdomains

Functions

Classes

Dependencies

  • collections.abc
  • langchain.agents.middleware.types
  • langchain.chat_models.base
  • langchain.tools
  • langchain_core.language_models.chat_models
  • langchain_core.messages
  • langgraph.types
  • typing

Frequently Asked Questions

What does tool_emulator.py do?
tool_emulator.py is a source file in the langchain codebase, written in python. It belongs to the LangChainCore domain, Runnables subdomain.
What functions are defined in tool_emulator.py?
tool_emulator.py defines 1 function(s): collections.
What does tool_emulator.py depend on?
tool_emulator.py imports 8 module(s): collections.abc, langchain.agents.middleware.types, langchain.chat_models.base, langchain.tools, langchain_core.language_models.chat_models, langchain_core.messages, langgraph.types, typing.
Where is tool_emulator.py in the architecture?
tool_emulator.py is located at libs/langchain_v1/langchain/agents/middleware/tool_emulator.py (domain: LangChainCore, subdomain: Runnables, directory: libs/langchain_v1/langchain/agents/middleware).

Analyze Your Own Codebase

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

Try Supermodel Free