diff --git a/libs/langchain/langchain/schema/runnable/base.py b/libs/langchain/langchain/schema/runnable/base.py index abd7ae81c..1b8734ac7 100644 --- a/libs/langchain/langchain/schema/runnable/base.py +++ b/libs/langchain/langchain/schema/runnable/base.py @@ -1531,7 +1531,9 @@ class RunnableBinding(Serializable, Runnable[Input, Output]): copy = cast(RunnableConfig, dict(self.config)) if config: for key in config: - copy[key] = config[key] or copy.get(key) + # Even though the keys aren't literals this is correct + # because both dicts are same type + copy[key] = config[key] or copy.get(key) # type: ignore return copy def bind(self, **kwargs: Any) -> Runnable[Input, Output]: diff --git a/libs/langchain/langchain/schema/runnable/config.py b/libs/langchain/langchain/schema/runnable/config.py index e2274c134..d31c1f67b 100644 --- a/libs/langchain/langchain/schema/runnable/config.py +++ b/libs/langchain/langchain/schema/runnable/config.py @@ -112,8 +112,10 @@ def patch_config( # If we're replacing callbacks we need to unset run_name and run_id # As those should apply only to the same run as the original callbacks config["callbacks"] = callbacks - config["run_name"] = None - config["run_id"] = None + if "run_name" in config: + del config["run_name"] + if "run_id" in config: + del config["run_id"] if recursion_limit is not None: config["recursion_limit"] = recursion_limit if max_concurrency is not None: