Home / Class/ RunnableConfigurableFields Class — langchain Architecture

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,

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