_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
Calls
Source
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