tool_emulator.py — langchain Source File
Architecture documentation for tool_emulator.py, a python file in the langchain codebase. 8 imports, 0 dependents.
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
Source
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