Home / Function/ _recursive_set_additional_properties_false() — langchain Function Reference

_recursive_set_additional_properties_false() — langchain Function Reference

Architecture documentation for the _recursive_set_additional_properties_false() function in function_calling.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  93b93d40_4003_ab0c_4132_2e7d4ae7d2e9["_recursive_set_additional_properties_false()"]
  344b2838_87a8_d5dc_b550_fdb443ff6c4e["function_calling.py"]
  93b93d40_4003_ab0c_4132_2e7d4ae7d2e9 -->|defined in| 344b2838_87a8_d5dc_b550_fdb443ff6c4e
  8dd6ec0a_3761_ea6f_0c59_c034b831f0df["convert_to_openai_function()"]
  8dd6ec0a_3761_ea6f_0c59_c034b831f0df -->|calls| 93b93d40_4003_ab0c_4132_2e7d4ae7d2e9
  style 93b93d40_4003_ab0c_4132_2e7d4ae7d2e9 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/core/langchain_core/utils/function_calling.py lines 785–812

def _recursive_set_additional_properties_false(
    schema: dict[str, Any],
) -> dict[str, Any]:
    if isinstance(schema, dict):
        # Check if 'required' is a key at the current level or if the schema is empty,
        # in which case additionalProperties still needs to be specified.
        if (
            "required" in schema
            or ("properties" in schema and not schema["properties"])
            # Since Pydantic 2.11, it will always add `additionalProperties: True`
            # for arbitrary dictionary schemas
            # See: https://pydantic.dev/articles/pydantic-v2-11-release#changes
            # If it is already set to True, we need override it to False
            or "additionalProperties" in schema
        ):
            schema["additionalProperties"] = False

        # Recursively check 'properties' and 'items' if they exist
        if "anyOf" in schema:
            for sub_schema in schema["anyOf"]:
                _recursive_set_additional_properties_false(sub_schema)
        if "properties" in schema:
            for sub_schema in schema["properties"].values():
                _recursive_set_additional_properties_false(sub_schema)
        if "items" in schema:
            _recursive_set_additional_properties_false(schema["items"])

    return schema

Subdomains

Frequently Asked Questions

What does _recursive_set_additional_properties_false() do?
_recursive_set_additional_properties_false() is a function in the langchain codebase, defined in libs/core/langchain_core/utils/function_calling.py.
Where is _recursive_set_additional_properties_false() defined?
_recursive_set_additional_properties_false() is defined in libs/core/langchain_core/utils/function_calling.py at line 785.
What calls _recursive_set_additional_properties_false()?
_recursive_set_additional_properties_false() is called by 1 function(s): convert_to_openai_function.

Analyze Your Own Codebase

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

Try Supermodel Free