Home / Function/ _merge_configs() — langchain Function Reference

_merge_configs() — langchain Function Reference

Architecture documentation for the _merge_configs() function in history.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  96f0380a_7dfc_de34_60b7_9046cd1943bd["_merge_configs()"]
  f9cb8198_4568_d401_f003_82c579cfa18f["RunnableWithMessageHistory"]
  96f0380a_7dfc_de34_60b7_9046cd1943bd -->|defined in| f9cb8198_4568_d401_f003_82c579cfa18f
  17950c4a_ad13_df46_ccdd_2df62846ad97["_get_parameter_names()"]
  96f0380a_7dfc_de34_60b7_9046cd1943bd -->|calls| 17950c4a_ad13_df46_ccdd_2df62846ad97
  style 96f0380a_7dfc_de34_60b7_9046cd1943bd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/core/langchain_core/runnables/history.py lines 572–616

    def _merge_configs(self, *configs: RunnableConfig | None) -> RunnableConfig:
        config = super()._merge_configs(*configs)
        expected_keys = [field_spec.id for field_spec in self.history_factory_config]

        configurable = config.get("configurable", {})

        missing_keys = set(expected_keys) - set(configurable.keys())
        parameter_names = _get_parameter_names(self.get_session_history)

        if missing_keys and parameter_names:
            example_input = {self.input_messages_key: "foo"}
            example_configurable = dict.fromkeys(missing_keys, "[your-value-here]")
            example_config = {"configurable": example_configurable}
            msg = (
                f"Missing keys {sorted(missing_keys)} in config['configurable'] "
                f"Expected keys are {sorted(expected_keys)}."
                f"When using via .invoke() or .stream(), pass in a config; "
                f"e.g., chain.invoke({example_input}, {example_config})"
            )
            raise ValueError(msg)

        if len(expected_keys) == 1:
            if parameter_names:
                # If arity = 1, then invoke function by positional arguments
                message_history = self.get_session_history(
                    configurable[expected_keys[0]]
                )
            else:
                if not config:
                    config["configurable"] = {}
                message_history = self.get_session_history()
        else:
            # otherwise verify that names of keys patch and invoke by named arguments
            if set(expected_keys) != set(parameter_names):
                msg = (
                    f"Expected keys {sorted(expected_keys)} do not match parameter "
                    f"names {sorted(parameter_names)} of get_session_history."
                )
                raise ValueError(msg)

            message_history = self.get_session_history(
                **{key: configurable[key] for key in expected_keys}
            )
        config["configurable"]["message_history"] = message_history
        return config

Domain

Subdomains

Frequently Asked Questions

What does _merge_configs() do?
_merge_configs() is a function in the langchain codebase, defined in libs/core/langchain_core/runnables/history.py.
Where is _merge_configs() defined?
_merge_configs() is defined in libs/core/langchain_core/runnables/history.py at line 572.
What does _merge_configs() call?
_merge_configs() calls 1 function(s): _get_parameter_names.

Analyze Your Own Codebase

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

Try Supermodel Free