diff --git a/libs/langchain/langchain/schema/runnable/base.py b/libs/langchain/langchain/schema/runnable/base.py index 62f4f56d4ad..d40e27f14d0 100644 --- a/libs/langchain/langchain/schema/runnable/base.py +++ b/libs/langchain/langchain/schema/runnable/base.py @@ -202,7 +202,9 @@ class Runnable(Generic[Input, Output], ABC): """List configurable fields for this runnable.""" return [] - def config_schema(self, *, include: Sequence[str]) -> Type[BaseModel]: + def config_schema( + self, *, include: Optional[Sequence[str]] = None + ) -> Type[BaseModel]: """The type of config this runnable accepts specified as a pydantic model. To mark a field as configurable, see the `configurable_fields` @@ -233,7 +235,7 @@ class Runnable(Generic[Input, Output], ABC): for spec in config_specs }, ) - if config_specs and "configurable" in include + if config_specs else None ) @@ -2354,7 +2356,9 @@ class RunnableEach(RunnableSerializable[List[Input], List[Output]]): def config_specs(self) -> Sequence[ConfigurableFieldSpec]: return self.bound.config_specs - def config_schema(self, *, include: Sequence[str]) -> Type[BaseModel]: + def config_schema( + self, *, include: Optional[Sequence[str]] = None + ) -> Type[BaseModel]: return self.bound.config_schema(include=include) @classmethod @@ -2516,7 +2520,9 @@ class RunnableBinding(RunnableSerializable[Input, Output]): def config_specs(self) -> Sequence[ConfigurableFieldSpec]: return self.bound.config_specs - def config_schema(self, *, include: Sequence[str]) -> Type[BaseModel]: + def config_schema( + self, *, include: Optional[Sequence[str]] = None + ) -> Type[BaseModel]: return self.bound.config_schema(include=include) @classmethod diff --git a/libs/langchain/langchain/schema/runnable/fallbacks.py b/libs/langchain/langchain/schema/runnable/fallbacks.py index 4689fa56e7c..1f8d13a6ff5 100644 --- a/libs/langchain/langchain/schema/runnable/fallbacks.py +++ b/libs/langchain/langchain/schema/runnable/fallbacks.py @@ -71,7 +71,9 @@ class RunnableWithFallbacks(RunnableSerializable[Input, Output]): for spec in step.config_specs ) - def config_schema(self, *, include: Sequence[str]) -> Type[BaseModel]: + def config_schema( + self, *, include: Optional[Sequence[str]] = None + ) -> Type[BaseModel]: return self.runnable.config_schema(include=include) @classmethod diff --git a/libs/langchain/tests/unit_tests/schema/runnable/test_runnable.py b/libs/langchain/tests/unit_tests/schema/runnable/test_runnable.py index ae0cab161f7..ec54c527c06 100644 --- a/libs/langchain/tests/unit_tests/schema/runnable/test_runnable.py +++ b/libs/langchain/tests/unit_tests/schema/runnable/test_runnable.py @@ -869,7 +869,7 @@ def test_configurable_fields() -> None: assert fake_llm_configurable.invoke("...") == "a" - assert fake_llm_configurable.config_schema(include=["configurable"]).schema() == { + assert fake_llm_configurable.config_schema().schema() == { "title": "RunnableConfigurableFieldsConfig", "type": "object", "properties": {"configurable": {"$ref": "#/definitions/Configurable"}}, @@ -912,7 +912,7 @@ def test_configurable_fields() -> None: text="Hello, John!" ) - assert prompt_configurable.config_schema(include=["configurable"]).schema() == { + assert prompt_configurable.config_schema().schema() == { "title": "RunnableConfigurableFieldsConfig", "type": "object", "properties": {"configurable": {"$ref": "#/definitions/Configurable"}}, @@ -955,7 +955,7 @@ def test_configurable_fields() -> None: assert chain_configurable.invoke({"name": "John"}) == "a" - assert chain_configurable.config_schema(include=["configurable"]).schema() == { + assert chain_configurable.config_schema().schema() == { "title": "RunnableSequenceConfig", "type": "object", "properties": {"configurable": {"$ref": "#/definitions/Configurable"}}, @@ -1021,9 +1021,7 @@ def test_configurable_fields() -> None: "llm3": "a", } - assert chain_with_map_configurable.config_schema( - include=["configurable"] - ).schema() == { + assert chain_with_map_configurable.config_schema().schema() == { "title": "RunnableSequenceConfig", "type": "object", "properties": {"configurable": {"$ref": "#/definitions/Configurable"}}, @@ -1122,7 +1120,7 @@ def test_configurable_fields_example() -> None: assert chain_configurable.invoke({"name": "John"}) == "a" - assert chain_configurable.config_schema(include=["configurable"]).schema() == { + assert chain_configurable.config_schema().schema() == { "title": "RunnableSequenceConfig", "type": "object", "properties": {"configurable": {"$ref": "#/definitions/Configurable"}},