Home / Function/ create_model_v2() — langchain Function Reference

create_model_v2() — langchain Function Reference

Architecture documentation for the create_model_v2() function in pydantic.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  b8865414_42c0_49d9_3e9c_7fa9ff60c3a7["create_model_v2()"]
  892b1d9f_bb87_0364_19af_71382204e430["pydantic.py"]
  b8865414_42c0_49d9_3e9c_7fa9ff60c3a7 -->|defined in| 892b1d9f_bb87_0364_19af_71382204e430
  c2f6fa80_5d24_efc6_4956_e42101ac1fc3["create_model()"]
  c2f6fa80_5d24_efc6_4956_e42101ac1fc3 -->|calls| b8865414_42c0_49d9_3e9c_7fa9ff60c3a7
  b8865414_42c0_49d9_3e9c_7fa9ff60c3a7["create_model_v2()"]
  b8865414_42c0_49d9_3e9c_7fa9ff60c3a7 -->|calls| b8865414_42c0_49d9_3e9c_7fa9ff60c3a7
  b8865414_42c0_49d9_3e9c_7fa9ff60c3a7["create_model_v2()"]
  b8865414_42c0_49d9_3e9c_7fa9ff60c3a7 -->|calls| b8865414_42c0_49d9_3e9c_7fa9ff60c3a7
  b9af98f3_3d27_bff1_7437_4fe45a239f0b["_create_root_model_cached()"]
  b8865414_42c0_49d9_3e9c_7fa9ff60c3a7 -->|calls| b9af98f3_3d27_bff1_7437_4fe45a239f0b
  2871abd3_cccd_0317_0db7_f334717b473b["_create_root_model()"]
  b8865414_42c0_49d9_3e9c_7fa9ff60c3a7 -->|calls| 2871abd3_cccd_0317_0db7_f334717b473b
  2891438b_5268_cd63_94df_fad7098651ca["_create_model_cached()"]
  b8865414_42c0_49d9_3e9c_7fa9ff60c3a7 -->|calls| 2891438b_5268_cd63_94df_fad7098651ca
  8f551cf3_c318_ebfe_7a69_a7721fa2af54["_remap_field_definitions()"]
  b8865414_42c0_49d9_3e9c_7fa9ff60c3a7 -->|calls| 8f551cf3_c318_ebfe_7a69_a7721fa2af54
  style b8865414_42c0_49d9_3e9c_7fa9ff60c3a7 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/core/langchain_core/utils/pydantic.py lines 510–584

def create_model_v2(
    model_name: str,
    *,
    module_name: str | None = None,
    field_definitions: dict[str, Any] | None = None,
    root: Any | None = None,
) -> type[BaseModel]:
    """Create a Pydantic model with the given field definitions.

    !!! warning

        Do not use outside of langchain packages. This API is subject to change at any
        time.

    Args:
        model_name: The name of the model.
        module_name: The name of the module where the model is defined.

            This is used by Pydantic to resolve any forward references.
        field_definitions: The field definitions for the model.
        root: Type for a root model (`RootModel`)

    Returns:
        The created model.
    """
    field_definitions = field_definitions or {}

    if root:
        if field_definitions:
            msg = (
                "When specifying __root__ no other "
                f"fields should be provided. Got {field_definitions}"
            )
            raise NotImplementedError(msg)

        if isinstance(root, tuple):
            kwargs = {"type_": root[0], "default_": root[1]}
        else:
            kwargs = {"type_": root}

        try:
            named_root_model = _create_root_model_cached(
                model_name, module_name=module_name, **kwargs
            )
        except TypeError:
            # something in the arguments into _create_root_model_cached is not hashable
            named_root_model = _create_root_model(
                model_name,
                module_name=module_name,
                **kwargs,
            )
        return named_root_model

    # No root, just field definitions
    names = set(field_definitions.keys())

    capture_warnings = False

    for name in names:
        # Also if any non-reserved name is used (e.g., model_id or model_name)
        if name.startswith("model"):
            capture_warnings = True

    with warnings.catch_warnings() if capture_warnings else nullcontext():
        if capture_warnings:
            warnings.filterwarnings(action="ignore")
        try:
            return _create_model_cached(model_name, **field_definitions)
        except TypeError:
            # something in field definitions is not hashable
            return _create_model_base(
                model_name,
                __config__=_SchemaConfig,
                **_remap_field_definitions(field_definitions),
            )

Domain

Subdomains

Frequently Asked Questions

What does create_model_v2() do?
create_model_v2() is a function in the langchain codebase, defined in libs/core/langchain_core/utils/pydantic.py.
Where is create_model_v2() defined?
create_model_v2() is defined in libs/core/langchain_core/utils/pydantic.py at line 510.
What does create_model_v2() call?
create_model_v2() calls 5 function(s): _create_model_cached, _create_root_model, _create_root_model_cached, _remap_field_definitions, create_model_v2.
What calls create_model_v2()?
create_model_v2() is called by 2 function(s): create_model, create_model_v2.

Analyze Your Own Codebase

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

Try Supermodel Free