Home / Function/ validate_input_variables() — langchain Function Reference

validate_input_variables() — langchain Function Reference

Architecture documentation for the validate_input_variables() function in chat.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  667da55a_6fd3_6435_1529_5240cb4dec4c["validate_input_variables()"]
  6be4a9a5_5fe4_e64f_c374_e63767576bf6["ChatPromptTemplate"]
  667da55a_6fd3_6435_1529_5240cb4dec4c -->|defined in| 6be4a9a5_5fe4_e64f_c374_e63767576bf6
  style 667da55a_6fd3_6435_1529_5240cb4dec4c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/core/langchain_core/prompts/chat.py lines 1048–1098

    def validate_input_variables(cls, values: dict) -> Any:
        """Validate input variables.

        If `input_variables` is not set, it will be set to the union of all input
        variables in the messages.

        Args:
            values: values to validate.

        Returns:
            Validated values.

        Raises:
            ValueError: If input variables do not match.
        """
        messages = values["messages"]
        input_vars: set = set()
        optional_variables = set()
        input_types: dict[str, Any] = values.get("input_types", {})
        for message in messages:
            if isinstance(message, (BaseMessagePromptTemplate, BaseChatPromptTemplate)):
                input_vars.update(message.input_variables)
            if isinstance(message, MessagesPlaceholder):
                if "partial_variables" not in values:
                    values["partial_variables"] = {}
                if (
                    message.optional
                    and message.variable_name not in values["partial_variables"]
                ):
                    values["partial_variables"][message.variable_name] = []
                    optional_variables.add(message.variable_name)
                if message.variable_name not in input_types:
                    input_types[message.variable_name] = list[AnyMessage]
        if "partial_variables" in values:
            input_vars -= set(values["partial_variables"])
        if optional_variables:
            input_vars -= optional_variables
        if "input_variables" in values and values.get("validate_template"):
            if input_vars != set(values["input_variables"]):
                msg = (
                    "Got mismatched input_variables. "
                    f"Expected: {input_vars}. "
                    f"Got: {values['input_variables']}"
                )
                raise ValueError(msg)
        else:
            values["input_variables"] = sorted(input_vars)
        if optional_variables:
            values["optional_variables"] = sorted(optional_variables)
        values["input_types"] = input_types
        return values

Subdomains

Frequently Asked Questions

What does validate_input_variables() do?
validate_input_variables() is a function in the langchain codebase, defined in libs/core/langchain_core/prompts/chat.py.
Where is validate_input_variables() defined?
validate_input_variables() is defined in libs/core/langchain_core/prompts/chat.py at line 1048.

Analyze Your Own Codebase

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

Try Supermodel Free