Toggle Menu
Prev Up Next

# `langchain_core.runnables.graph`.Graph

class langchain_core.runnables.graph.Graph(nodes: ~typing.Dict[str, ~langchain_core.runnables.graph.Node] = <factory>, edges: ~typing.List[~langchain_core.runnables.graph.Edge] = <factory>)

  Graph of nodes and edges.

  Attributes

  `nodes` |
  `edges` |

  Methods

  `__init__`([nodes, edges]) |
  `add_edge`(source, target[, data, conditional]) | Add an edge to the graph and return it.
  `add_node`(data[, id]) | Add a node to the graph and return it.
  `draw_ascii`() |
  `draw_mermaid`(*[, with_styles, curve_style, ...]) |
  `draw_mermaid_png`(*[, curve_style, ...]) |
  `draw_png`() |
  `extend`(graph, *[, prefix]) | Add all nodes and edges from another graph.
  `first_node`() | Find the single node that is not a target of any edge.
  `last_node`() | Find the single node that is not a source of any edge.
  `next_id`() |
  `print_ascii`() |
  `remove_node`(node) | Remove a node from the graphm and all edges connected to it.
  `to_json`(*[, with_schemas]) | Convert the graph to a JSON-serializable format.
  `trim_first_node`() | Remove the first node if it exists and has a single outgoing edge, ie.
  `trim_last_node`() | Remove the last node if it exists and has a single incoming edge, ie.

  Parameters

    - nodes (Dict[str, Node]) –

    - edges (List[Edge]) –

  __init__(nodes: ~typing.Dict[str, ~langchain_core.runnables.graph.Node] = <factory>, edges: ~typing.List[~langchain_core.runnables.graph.Edge] = <factory>) → None
    Parameters

      - nodes (Dict[str, Node]) –

      - edges (List[Edge]) –

    Return type

      None

  add_edge(source: Node, target: Node, data: Optional[str] = None, conditional: bool = False) → Edge

    Add an edge to the graph and return it.

    Parameters

      - source (Node) –

      - target (Node) –

      - data (Optional[str]) –

      - conditional (bool) –

    Return type

      Edge

  add_node(data: Union[Type[BaseModel], RunnableType], id: Optional[str] = None) → Node

    Add a node to the graph and return it.

    Parameters

      - data (Union[Type[BaseModel], RunnableType]) –

      - id (Optional[str]) –

    Return type

      Node

  draw_ascii() → str
    Return type

      str

  draw_mermaid(*, with_styles: bool = True, curve_style: CurveStyle = CurveStyle.LINEAR, node_colors: NodeColors = NodeColors(start='#ffdfba', end='#baffc9', other='#fad7de'), wrap_label_n_words: int = 9) → str
    Parameters

      - with_styles (bool) –

      - curve_style (CurveStyle) –

      - node_colors (NodeColors) –

      - wrap_label_n_words (int) –

    Return type

      str

  draw_mermaid_png(*, curve_style: CurveStyle = CurveStyle.LINEAR, node_colors: NodeColors = NodeColors(start='#ffdfba', end='#baffc9', other='#fad7de'), wrap_label_n_words: int = 9, output_file_path: Optional[str] = None, draw_method: MermaidDrawMethod = MermaidDrawMethod.API, background_color: str = 'white', padding: int = 10) → bytes
    Parameters

      - curve_style (CurveStyle) –

      - node_colors (NodeColors) –

      - wrap_label_n_words (int) –

      - output_file_path (Optional[str]) –

      - draw_method (MermaidDrawMethod) –

      - background_color (str) –

      - padding (int) –

    Return type

      bytes

  draw_png(output_file_path: str, fontname: Optional[str] = None, labels: Optional[LabelsDict] = None) → None
  draw_png(output_file_path: None, fontname: Optional[str] = None, labels: Optional[LabelsDict] = None) → bytes
  extend(graph: Graph, *, prefix: str = '') → Tuple[Optional[Node], Optional[Node]]

    Add all nodes and edges from another graph. Note this doesn’t check for duplicates, nor does it connect the graphs.

    Parameters

      - graph (Graph) –

      - prefix (str) –

    Return type

      Tuple[Optional[Node], Optional[Node]]

  first_node() → Optional[Node]

    Find the single node that is not a target of any edge. If there is no such node, or there are multiple, return None. When drawing the graph this node would be the origin.

    Return type

      Optional[Node]

  last_node() → Optional[Node]

    Find the single node that is not a source of any edge. If there is no such node, or there are multiple, return None. When drawing the graph this node would be the destination.

    Return type

      Optional[Node]

  next_id() → str
    Return type

      str

  print_ascii() → None
    Return type

      None

  remove_node(node: Node) → None

    Remove a node from the graphm and all edges connected to it.

    Parameters

      node (Node) –

    Return type

      None

  to_json(*, with_schemas: bool = False) → Dict[str, List[Dict[str, Any]]]

    Convert the graph to a JSON-serializable format.

    Parameters

      with_schemas (bool) –

    Return type

      Dict[str, List[Dict[str, Any]]]

  trim_first_node() → None

    Remove the first node if it exists and has a single outgoing edge, ie. if removing it would not leave the graph without a “first” node.

    Return type

      None

  trim_last_node() → None

    Remove the last node if it exists and has a single incoming edge, ie. if removing it would not leave the graph without a “last” node.

    Return type

      None