Home / Class/ RunnableAssign Class — langchain Architecture

RunnableAssign Class — langchain Architecture

Architecture documentation for the RunnableAssign class in passthrough.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0["RunnableAssign"]
  74fd3998_c4d9_f441_95fd_4c9845487771["passthrough.py"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|defined in| 74fd3998_c4d9_f441_95fd_4c9845487771
  21614a46_e39a_eac3_f713_a53934fd3853["__init__()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| 21614a46_e39a_eac3_f713_a53934fd3853
  913613a2_0e05_2d04_4ab9_eed66073b7f8["is_lc_serializable()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| 913613a2_0e05_2d04_4ab9_eed66073b7f8
  c79bd916_ef75_a19d_a6ca_f0eee323fc1a["get_lc_namespace()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| c79bd916_ef75_a19d_a6ca_f0eee323fc1a
  fde243e2_2ad6_b1c0_dfa7_ee8c6bd4016e["get_name()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| fde243e2_2ad6_b1c0_dfa7_ee8c6bd4016e
  0a8ec6bd_2dbd_82a8_25b5_54a541ad602a["get_input_schema()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| 0a8ec6bd_2dbd_82a8_25b5_54a541ad602a
  15e4596b_dffa_661e_4199_fa4d0f743c16["get_output_schema()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| 15e4596b_dffa_661e_4199_fa4d0f743c16
  93537cb1_8e3e_dcce_ce61_7b8984de761b["config_specs()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| 93537cb1_8e3e_dcce_ce61_7b8984de761b
  96d525b7_e37d_3c9f_9941_ff5298830c11["get_graph()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| 96d525b7_e37d_3c9f_9941_ff5298830c11
  f5feb82c_7922_8694_f058_6a6d72d2af1e["_invoke()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| f5feb82c_7922_8694_f058_6a6d72d2af1e
  1ba16a17_ba21_ac3b_2e02_f180e84d2917["invoke()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| 1ba16a17_ba21_ac3b_2e02_f180e84d2917
  2b742ffa_53bf_6681_3104_bb33378876a4["_ainvoke()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| 2b742ffa_53bf_6681_3104_bb33378876a4
  2fd06000_95aa_9f2f_1249_ca4e53ec976b["ainvoke()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| 2fd06000_95aa_9f2f_1249_ca4e53ec976b
  1b4ddccc_ca11_0774_9b16_eabb93d902c2["_transform()"]
  ac6d23f6_5009_34d8_f7d4_a551f758a1f0 -->|method| 1b4ddccc_ca11_0774_9b16_eabb93d902c2

Relationship Graph

Source Code

libs/core/langchain_core/runnables/passthrough.py lines 352–668

class RunnableAssign(RunnableSerializable[dict[str, Any], dict[str, Any]]):
    """Runnable that assigns key-value pairs to `dict[str, Any]` inputs.

    The `RunnableAssign` class takes input dictionaries and, through a
    `RunnableParallel` instance, applies transformations, then combines
    these with the original data, introducing new key-value pairs based
    on the mapper's logic.

    Examples:
        ```python
        # This is a RunnableAssign
        from langchain_core.runnables.passthrough import (
            RunnableAssign,
            RunnableParallel,
        )
        from langchain_core.runnables.base import RunnableLambda


        def add_ten(x: dict[str, int]) -> dict[str, int]:
            return {"added": x["input"] + 10}


        mapper = RunnableParallel(
            {
                "add_step": RunnableLambda(add_ten),
            }
        )

        runnable_assign = RunnableAssign(mapper)

        # Synchronous example
        runnable_assign.invoke({"input": 5})
        # returns {'input': 5, 'add_step': {'added': 15}}

        # Asynchronous example
        await runnable_assign.ainvoke({"input": 5})
        # returns {'input': 5, 'add_step': {'added': 15}}
        ```
    """

    mapper: RunnableParallel

    def __init__(self, mapper: RunnableParallel[dict[str, Any]], **kwargs: Any) -> None:
        """Create a `RunnableAssign`.

        Args:
            mapper: A `RunnableParallel` instance that will be used to transform the
                input dictionary.
        """
        super().__init__(mapper=mapper, **kwargs)

    @classmethod
    @override
    def is_lc_serializable(cls) -> bool:
        """Return `True` as this class is serializable."""
        return True

    @classmethod
    @override
    def get_lc_namespace(cls) -> list[str]:
        """Get the namespace of the LangChain object.

        Returns:
            `["langchain", "schema", "runnable"]`
        """
        return ["langchain", "schema", "runnable"]

    @override
    def get_name(self, suffix: str | None = None, *, name: str | None = None) -> str:
        name = (
            name
            or self.name
            or f"RunnableAssign<{','.join(self.mapper.steps__.keys())}>"
        )
        return super().get_name(suffix, name=name)

    @override
    def get_input_schema(self, config: RunnableConfig | None = None) -> type[BaseModel]:
        map_input_schema = self.mapper.get_input_schema(config)
        if not issubclass(map_input_schema, RootModel):
            # ie. it's a dict

Frequently Asked Questions

What is the RunnableAssign class?
RunnableAssign is a class in the langchain codebase, defined in libs/core/langchain_core/runnables/passthrough.py.
Where is RunnableAssign defined?
RunnableAssign is defined in libs/core/langchain_core/runnables/passthrough.py at line 352.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free