factory.py — langchain Source File
Architecture documentation for factory.py, a python file in the langchain codebase. 20 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 42d85318_4377_1ed0_aeff_9384110cd401["factory.py"] 436f77bc_653d_0edb_555c_c2679d5a59ac["itertools"] 42d85318_4377_1ed0_aeff_9384110cd401 --> 436f77bc_653d_0edb_555c_c2679d5a59ac aac5f8ad_7f2a_3a8e_3b4b_b07d681cbdcf["dataclasses"] 42d85318_4377_1ed0_aeff_9384110cd401 --> aac5f8ad_7f2a_3a8e_3b4b_b07d681cbdcf 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3["typing"] 42d85318_4377_1ed0_aeff_9384110cd401 --> 8e2034b7_ceb8_963f_29fc_2ea6b50ef9b3 2312f229_c199_ac88_c29f_62e2a2958404["langchain_core.language_models.chat_models"] 42d85318_4377_1ed0_aeff_9384110cd401 --> 2312f229_c199_ac88_c29f_62e2a2958404 d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"] 42d85318_4377_1ed0_aeff_9384110cd401 --> d758344f_537f_649e_f467_b9d7442e86df 43d88577_548b_2248_b01b_7987bae85dcc["langchain_core.tools"] 42d85318_4377_1ed0_aeff_9384110cd401 --> 43d88577_548b_2248_b01b_7987bae85dcc 6af3b619_94ad_36df_c29e_653bd2de632e["langgraph._internal._runnable"] 42d85318_4377_1ed0_aeff_9384110cd401 --> 6af3b619_94ad_36df_c29e_653bd2de632e be9a9074_a79e_926c_8d26_251bcb6837b8["langgraph.constants"] 42d85318_4377_1ed0_aeff_9384110cd401 --> be9a9074_a79e_926c_8d26_251bcb6837b8 f4701074_ad2b_c823_851a_8836d4100a58["langgraph.graph.state"] 42d85318_4377_1ed0_aeff_9384110cd401 --> f4701074_ad2b_c823_851a_8836d4100a58 150b7407_e6a8_2f45_0640_25bc6d2bfbfb["langgraph.prebuilt.tool_node"] 42d85318_4377_1ed0_aeff_9384110cd401 --> 150b7407_e6a8_2f45_0640_25bc6d2bfbfb 0e93d2ee_1fb2_3a0f_5a76_8aba32d0d4ed["langgraph.types"] 42d85318_4377_1ed0_aeff_9384110cd401 --> 0e93d2ee_1fb2_3a0f_5a76_8aba32d0d4ed 91721f45_4909_e489_8c1f_084f8bd87145["typing_extensions"] 42d85318_4377_1ed0_aeff_9384110cd401 --> 91721f45_4909_e489_8c1f_084f8bd87145 50acc543_e5f0_2162_cf07_c2bf50723e0c["langchain.agents.middleware.types"] 42d85318_4377_1ed0_aeff_9384110cd401 --> 50acc543_e5f0_2162_cf07_c2bf50723e0c c57803e6_8295_a18f_018d_3926ecdf1855["langchain.agents.structured_output"] 42d85318_4377_1ed0_aeff_9384110cd401 --> c57803e6_8295_a18f_018d_3926ecdf1855 style 42d85318_4377_1ed0_aeff_9384110cd401 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"""Agent factory for creating agents with middleware support."""
from __future__ import annotations
import itertools
from dataclasses import dataclass, field
from typing import (
TYPE_CHECKING,
Annotated,
Any,
Generic,
cast,
get_args,
get_origin,
get_type_hints,
)
from langchain_core.language_models.chat_models import BaseChatModel
from langchain_core.messages import AIMessage, AnyMessage, SystemMessage, ToolMessage
from langchain_core.tools import BaseTool
from langgraph._internal._runnable import RunnableCallable
from langgraph.constants import END, START
from langgraph.graph.state import StateGraph
from langgraph.prebuilt.tool_node import ToolCallWithContext, ToolNode
from langgraph.types import Command, Send
from typing_extensions import NotRequired, Required, TypedDict
from langchain.agents.middleware.types import (
AgentMiddleware,
AgentState,
ContextT,
ExtendedModelResponse,
JumpTo,
ModelRequest,
ModelResponse,
OmitFromSchema,
ResponseT,
StateT_co,
_InputAgentState,
_OutputAgentState,
)
from langchain.agents.structured_output import (
AutoStrategy,
MultipleStructuredOutputsError,
OutputToolBinding,
ProviderStrategy,
ProviderStrategyBinding,
ResponseFormat,
StructuredOutputError,
StructuredOutputValidationError,
ToolStrategy,
)
from langchain.chat_models import init_chat_model
@dataclass
class _ComposedExtendedModelResponse(Generic[ResponseT]):
"""Internal result from composed ``wrap_model_call`` middleware.
Unlike ``ExtendedModelResponse`` (user-facing, single command), this holds the
// ... (1758 more lines)
Domain
Subdomains
Functions
- _add_middleware_edge()
- _build_commands()
- _chain_async_model_call_handlers()
- _chain_async_tool_call_wrappers()
- _chain_model_call_handlers()
- _chain_tool_call_wrappers()
- _extract_metadata()
- _fetch_last_ai_and_tool_messages()
- _get_can_jump_to()
- _handle_structured_output_error()
- _make_model_to_model_edge()
- _make_model_to_tools_edge()
- _make_tools_to_model_edge()
- _normalize_to_model_response()
- _resolve_jump()
- _resolve_schema()
- _supports_provider_strategy()
- collections()
- create_agent()
Classes
Dependencies
- collections.abc
- dataclasses
- itertools
- langchain.agents.middleware.types
- langchain.agents.structured_output
- langchain.chat_models
- langchain_core.language_models.chat_models
- langchain_core.messages
- langchain_core.runnables
- langchain_core.tools
- langgraph._internal._runnable
- langgraph.cache.base
- langgraph.constants
- langgraph.graph.state
- langgraph.prebuilt.tool_node
- langgraph.runtime
- langgraph.store.base
- langgraph.types
- typing
- typing_extensions
Source
Frequently Asked Questions
What does factory.py do?
factory.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, MessageSchema subdomain.
What functions are defined in factory.py?
factory.py defines 19 function(s): _add_middleware_edge, _build_commands, _chain_async_model_call_handlers, _chain_async_tool_call_wrappers, _chain_model_call_handlers, _chain_tool_call_wrappers, _extract_metadata, _fetch_last_ai_and_tool_messages, _get_can_jump_to, _handle_structured_output_error, and 9 more.
What does factory.py depend on?
factory.py imports 20 module(s): collections.abc, dataclasses, itertools, langchain.agents.middleware.types, langchain.agents.structured_output, langchain.chat_models, langchain_core.language_models.chat_models, langchain_core.messages, and 12 more.
Where is factory.py in the architecture?
factory.py is located at libs/langchain_v1/langchain/agents/factory.py (domain: CoreAbstractions, subdomain: MessageSchema, directory: libs/langchain_v1/langchain/agents).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free