diff --git a/libs/core/langchain_core/beta/__init__.py b/libs/core/langchain_core/beta/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/core/langchain_core/beta/runnables/__init__.py b/libs/core/langchain_core/beta/runnables/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/core/langchain_core/runnables/context.py b/libs/core/langchain_core/beta/runnables/context.py similarity index 100% rename from libs/core/langchain_core/runnables/context.py rename to libs/core/langchain_core/beta/runnables/context.py diff --git a/libs/core/langchain_core/runnables/__init__.py b/libs/core/langchain_core/runnables/__init__.py index e6ace8ceb2..b51a94eea3 100644 --- a/libs/core/langchain_core/runnables/__init__.py +++ b/libs/core/langchain_core/runnables/__init__.py @@ -30,7 +30,6 @@ from langchain_core.runnables.config import ( get_config_list, patch_config, ) -from langchain_core.runnables.context import Context from langchain_core.runnables.fallbacks import RunnableWithFallbacks from langchain_core.runnables.passthrough import RunnablePassthrough from langchain_core.runnables.router import RouterInput, RouterRunnable @@ -48,7 +47,6 @@ __all__ = [ "ConfigurableField", "ConfigurableFieldSingleOption", "ConfigurableFieldMultiOption", - "Context", "patch_config", "RouterInput", "RouterRunnable", diff --git a/libs/core/langchain_core/runnables/base.py b/libs/core/langchain_core/runnables/base.py index ed90ca09f4..d4ba07d04f 100644 --- a/libs/core/langchain_core/runnables/base.py +++ b/libs/core/langchain_core/runnables/base.py @@ -1403,7 +1403,10 @@ class RunnableSequence(RunnableSerializable[Input, Output]): @property def config_specs(self) -> List[ConfigurableFieldSpec]: - from langchain_core.runnables.context import CONTEXT_CONFIG_PREFIX, _key_from_id + from langchain_core.beta.runnables.context import ( + CONTEXT_CONFIG_PREFIX, + _key_from_id, + ) # get all specs all_specs = [ @@ -1495,7 +1498,7 @@ class RunnableSequence(RunnableSerializable[Input, Output]): ) def invoke(self, input: Input, config: Optional[RunnableConfig] = None) -> Output: - from langchain_core.runnables.context import config_with_context + from langchain_core.beta.runnables.context import config_with_context # setup callbacks and context config = config_with_context(ensure_config(config), self.steps) @@ -1529,7 +1532,7 @@ class RunnableSequence(RunnableSerializable[Input, Output]): config: Optional[RunnableConfig] = None, **kwargs: Optional[Any], ) -> Output: - from langchain_core.runnables.context import aconfig_with_context + from langchain_core.beta.runnables.context import aconfig_with_context # setup callbacks and context config = aconfig_with_context(ensure_config(config), self.steps) @@ -1565,8 +1568,8 @@ class RunnableSequence(RunnableSerializable[Input, Output]): return_exceptions: bool = False, **kwargs: Optional[Any], ) -> List[Output]: + from langchain_core.beta.runnables.context import config_with_context from langchain_core.callbacks.manager import CallbackManager - from langchain_core.runnables.context import config_with_context if not inputs: return [] @@ -1688,8 +1691,8 @@ class RunnableSequence(RunnableSerializable[Input, Output]): return_exceptions: bool = False, **kwargs: Optional[Any], ) -> List[Output]: + from langchain_core.beta.runnables.context import aconfig_with_context from langchain_core.callbacks.manager import AsyncCallbackManager - from langchain_core.runnables.context import aconfig_with_context if not inputs: return [] @@ -1812,7 +1815,7 @@ class RunnableSequence(RunnableSerializable[Input, Output]): run_manager: CallbackManagerForChainRun, config: RunnableConfig, ) -> Iterator[Output]: - from langchain_core.runnables.context import config_with_context + from langchain_core.beta.runnables.context import config_with_context steps = [self.first] + self.middle + [self.last] config = config_with_context(config, self.steps) @@ -1839,7 +1842,7 @@ class RunnableSequence(RunnableSerializable[Input, Output]): run_manager: AsyncCallbackManagerForChainRun, config: RunnableConfig, ) -> AsyncIterator[Output]: - from langchain_core.runnables.context import aconfig_with_context + from langchain_core.beta.runnables.context import aconfig_with_context steps = [self.first] + self.middle + [self.last] config = aconfig_with_context(config, self.steps) diff --git a/libs/core/langchain_core/runnables/branch.py b/libs/core/langchain_core/runnables/branch.py index a3255082ff..80ff8a88a0 100644 --- a/libs/core/langchain_core/runnables/branch.py +++ b/libs/core/langchain_core/runnables/branch.py @@ -26,10 +26,6 @@ from langchain_core.runnables.config import ( get_callback_manager_for_config, patch_config, ) -from langchain_core.runnables.context import ( - CONTEXT_CONFIG_PREFIX, - CONTEXT_CONFIG_SUFFIX_SET, -) from langchain_core.runnables.utils import ( ConfigurableFieldSpec, Input, @@ -152,6 +148,11 @@ class RunnableBranch(RunnableSerializable[Input, Output]): @property def config_specs(self) -> List[ConfigurableFieldSpec]: + from langchain_core.beta.runnables.context import ( + CONTEXT_CONFIG_PREFIX, + CONTEXT_CONFIG_SUFFIX_SET, + ) + specs = get_unique_config_specs( spec for step in ( diff --git a/libs/core/tests/unit_tests/runnables/test_context.py b/libs/core/tests/unit_tests/runnables/test_context.py index 21fe1992d7..bf7901d037 100644 --- a/libs/core/tests/unit_tests/runnables/test_context.py +++ b/libs/core/tests/unit_tests/runnables/test_context.py @@ -2,11 +2,11 @@ from typing import Any, Callable, List, NamedTuple, Union import pytest +from langchain_core.beta.runnables.context import Context from langchain_core.output_parsers.string import StrOutputParser from langchain_core.prompt_values import StringPromptValue from langchain_core.prompts.prompt import PromptTemplate from langchain_core.runnables.base import Runnable, RunnableLambda -from langchain_core.runnables.context import Context from langchain_core.runnables.passthrough import RunnablePassthrough from langchain_core.runnables.utils import aadd, add from tests.unit_tests.fake.llm import FakeListLLM, FakeStreamingListLLM diff --git a/libs/core/tests/unit_tests/runnables/test_imports.py b/libs/core/tests/unit_tests/runnables/test_imports.py index 0a2eb92edc..935571ed12 100644 --- a/libs/core/tests/unit_tests/runnables/test_imports.py +++ b/libs/core/tests/unit_tests/runnables/test_imports.py @@ -2,7 +2,6 @@ from langchain_core.runnables import __all__ EXPECTED_ALL = [ "AddableDict", - "Context", "ConfigurableField", "ConfigurableFieldSingleOption", "ConfigurableFieldMultiOption",