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
Source
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