Home / File/ factory.py — langchain Source File

factory.py — langchain Source File

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

File python CoreAbstractions MessageSchema 20 imports 19 functions 1 classes

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)

Subdomains

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

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