RunnableConfigurableFields Class — langchain Architecture
Architecture documentation for the RunnableConfigurableFields class in configurable.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD b379764d_7e2c_703d_3f1c_b8a6439cc000["RunnableConfigurableFields"] 93414b73_ee37_ff0b_c41c_ac98dd44d964["ConfigurableField"] b379764d_7e2c_703d_3f1c_b8a6439cc000 -->|extends| 93414b73_ee37_ff0b_c41c_ac98dd44d964 aafe6953_7529_167c_40c0_96359489e16b["ConfigurableFieldSingleOption"] b379764d_7e2c_703d_3f1c_b8a6439cc000 -->|extends| aafe6953_7529_167c_40c0_96359489e16b 6ad04c68_111c_8149_99cc_1b730b0bec76["ConfigurableFieldMultiOption"] b379764d_7e2c_703d_3f1c_b8a6439cc000 -->|extends| 6ad04c68_111c_8149_99cc_1b730b0bec76 3e4f3163_58be_ee5e_f841_ae0bd0577190["configurable.py"] b379764d_7e2c_703d_3f1c_b8a6439cc000 -->|defined in| 3e4f3163_58be_ee5e_f841_ae0bd0577190 9aba9777_78af_21f7_c39d_8e5c596fea30["config_specs()"] b379764d_7e2c_703d_3f1c_b8a6439cc000 -->|method| 9aba9777_78af_21f7_c39d_8e5c596fea30 2d383bf0_7fd0_0234_6e1f_0f0fce5ead27["configurable_fields()"] b379764d_7e2c_703d_3f1c_b8a6439cc000 -->|method| 2d383bf0_7fd0_0234_6e1f_0f0fce5ead27 10b5bf4a_42f1_4f50_ee7b_5f31bdbb9cb2["_prepare()"] b379764d_7e2c_703d_3f1c_b8a6439cc000 -->|method| 10b5bf4a_42f1_4f50_ee7b_5f31bdbb9cb2
Relationship Graph
Source Code
libs/core/langchain_core/runnables/configurable.py lines 318–459
class RunnableConfigurableFields(DynamicRunnable[Input, Output]):
"""`Runnable` that can be dynamically configured.
A `RunnableConfigurableFields` should be initiated using the
`configurable_fields` method of a `Runnable`.
Here is an example of using a `RunnableConfigurableFields` with LLMs:
```python
from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import ConfigurableField
from langchain_openai import ChatOpenAI
model = ChatOpenAI(temperature=0).configurable_fields(
temperature=ConfigurableField(
id="temperature",
name="LLM Temperature",
description="The temperature of the LLM",
)
)
# This creates a RunnableConfigurableFields for a chat model.
# When invoking the created RunnableSequence, you can pass in the
# value for your ConfigurableField's id which in this case
# will be change in temperature
prompt = PromptTemplate.from_template("Pick a random number above {x}")
chain = prompt | model
chain.invoke({"x": 0})
chain.invoke({"x": 0}, config={"configurable": {"temperature": 0.9}})
```
Here is an example of using a `RunnableConfigurableFields` with `HubRunnables`:
```python
from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import ConfigurableField
from langchain_openai import ChatOpenAI
from langchain.runnables.hub import HubRunnable
prompt = HubRunnable("rlm/rag-prompt").configurable_fields(
owner_repo_commit=ConfigurableField(
id="hub_commit",
name="Hub Commit",
description="The Hub commit to pull from",
)
)
prompt.invoke({"question": "foo", "context": "bar"})
# Invoking prompt with `with_config` method
prompt.invoke(
{"question": "foo", "context": "bar"},
config={"configurable": {"hub_commit": "rlm/rag-prompt-llama"}},
)
```
"""
fields: dict[str, AnyConfigurableField]
"""The configurable fields to use."""
@property
def config_specs(self) -> list[ConfigurableFieldSpec]:
"""Get the configuration specs for the `RunnableConfigurableFields`.
Returns:
The configuration specs.
"""
config_specs = []
default_fields = type(self.default).model_fields
for field_name, spec in self.fields.items():
if isinstance(spec, ConfigurableField):
config_specs.append(
ConfigurableFieldSpec(
id=spec.id,
name=spec.name,
description=spec.description
or default_fields[field_name].description,
Source
Frequently Asked Questions
What is the RunnableConfigurableFields class?
RunnableConfigurableFields is a class in the langchain codebase, defined in libs/core/langchain_core/runnables/configurable.py.
Where is RunnableConfigurableFields defined?
RunnableConfigurableFields is defined in libs/core/langchain_core/runnables/configurable.py at line 318.
What does RunnableConfigurableFields extend?
RunnableConfigurableFields extends ConfigurableField, ConfigurableFieldSingleOption, ConfigurableFieldMultiOption.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free