diff --git a/libs/core/langchain_core/load/load.py b/libs/core/langchain_core/load/load.py index ed832e69dbb..eb50fddcc4b 100644 --- a/libs/core/langchain_core/load/load.py +++ b/libs/core/langchain_core/load/load.py @@ -265,6 +265,8 @@ def load( return reviver(loaded_obj) if isinstance(obj, list): return [_load(o) for o in obj] + if isinstance(obj, str) and obj in reviver.secrets_map: + return reviver.secrets_map[obj] return obj return _load(obj) diff --git a/libs/core/tests/unit_tests/load/test_load.py b/libs/core/tests/unit_tests/load/test_load.py new file mode 100644 index 00000000000..aa2b3259156 --- /dev/null +++ b/libs/core/tests/unit_tests/load/test_load.py @@ -0,0 +1,11 @@ +"""Test for Serializable base class.""" + +from langchain_core.load.load import load + + +def test_load_with_string_secrets() -> None: + obj = {"api_key": "__SECRET_API_KEY__"} + secrets_map = {"__SECRET_API_KEY__": "hello"} + result = load(obj, secrets_map=secrets_map) + + assert result["api_key"] == "hello"