LangChain Reference home pageLangChain ReferenceLangChain Reference
  • GitHub
  • Main Docs
Deep Agents
LangChain
LangGraph
Integrations
LangSmith
  • Overview
    • Overview
    • Graphs
    • Functional API
    • Pregel
    • Checkpointing
    • Storage
    • Caching
    • Types
    • Runtime
    • Config
    • Errors
    • Constants
    • Channels
    • Agents
    LangGraph CLI
    LangGraph SDK
    LangGraph Supervisor
    LangGraph Swarm
    ⌘I

    LangChain Assistant

    Ask a question to get started

    Enter to send•Shift+Enter new line

    Menu

    OverviewGraphsFunctional APIPregelCheckpointingStorageCachingTypesRuntimeConfigErrorsConstantsChannelsAgents
    LangGraph CLI
    LangGraph SDK
    LangGraph Supervisor
    LangGraph Swarm
    Language
    Theme
    PythonlanggraphgraphstateStateGraphadd_node
    Method●Since v0.1

    add_node

    Copy
    add_node(
      self,
      node: str | StateNode[NodeInputT, ContextT],
      action
    View source on GitHub
    :
    StateNode
    [
    NodeInputT
    ,
    ContextT
    ]
    |
    None
    =
    None
    ,
    *
    ,
    defer
    :
    bool
    =
    False
    ,
    metadata
    :
    dict
    [
    str
    ,
    Any
    ]
    |
    None
    =
    None
    ,
    input_schema
    :
    type
    [
    NodeInputT
    ]
    |
    None
    =
    None
    ,
    retry_policy
    :
    RetryPolicy
    |
    Sequence
    [
    RetryPolicy
    ]
    |
    None
    =
    None
    ,
    cache_policy
    :
    CachePolicy
    |
    None
    =
    None
    ,
    destinations
    :
    dict
    [
    str
    ,
    str
    ]
    |
    tuple
    [
    str
    ,
    .
    .
    .
    ]
    |
    None
    =
    None
    ,
    **
    kwargs
    :
    Unpack
    [
    DeprecatedKwargs
    ]
    =
    {
    }
    )
    ->
    Self

    Parameters

    NameTypeDescription
    node*str | StateNode[NodeInputT, ContextT]

    The function or runnable this node will run.

    If a string is provided, it will be used as the node name, and action will be used as the function or runnable.

    actionStateNode[NodeInputT, ContextT] | None
    Default:None
    deferbool
    Default:False
    metadatadict[str, Any] | None
    Default:None
    input_schematype[NodeInputT] | None
    Default:None
    retry_policyRetryPolicy | Sequence[RetryPolicy] | None
    Default:None
    cache_policyCachePolicy | None
    Default:None
    destinationsdict[str, str] | tuple[str, ...] | None
    Default:None

    Add a new node to the StateGraph.

    Example:

    from typing_extensions import TypedDict
    
    from langchain_core.runnables import RunnableConfig
    from langgraph.graph import START, StateGraph
    
    class State(TypedDict):
        x: int
    
    def my_node(state: State, config: RunnableConfig) -> State:
        return {"x": state["x"] + 1}
    
    builder = StateGraph(State)
    builder.add_node(my_node)  # node name will be 'my_node'
    builder.add_edge(START, "my_node")
    graph = builder.compile()
    graph.invoke({"x": 1})
    # {'x': 2}

    Customize the name::

    builder = StateGraph(State)
    builder.add_node("my_fair_node", my_node)
    builder.add_edge(START, "my_fair_node")
    graph = builder.compile()
    graph.invoke({"x": 1})
    # {'x': 2}

    The action associated with the node.

    Will be used as the node function or runnable if node is a string (node name).

    Whether to defer the execution of the node until the run is about to end.

    The metadata associated with the node.

    The input schema for the node. (Default: the graph's state schema)

    The retry policy for the node.

    If a sequence is provided, the first matching policy will be applied.

    The cache policy for the node.

    Destinations that indicate where a node can route to.

    Useful for edgeless graphs with nodes that return Command objects.

    If a dict is provided, the keys will be used as the target node names and the values will be used as the labels for the edges.

    If a tuple is provided, the values will be used as the target node names.

    Warning

    This is only used for graph rendering and doesn't have any effect on the graph execution.