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>)[来源]

节点和边的图。

参数
  • nodes (Dict[str, Node]) – 图中的节点字典。默认为空字典。

  • edges (List[Edge]) – 图中的边列表。默认为空列表。

属性

nodes

edges

方法

__init__([nodes, edges])

add_edge(source, target[, data, conditional])

向图中添加边并返回它。

add_node(data[, id, metadata])

向图中添加节点并返回它。

draw_ascii()

以ASCII艺术字符串的形式绘制图。

draw_mermaid(*[, with_styles, curve_style, ...])

以Mermaid语法字符串的形式绘制图。

draw_mermaid_png(*[, curve_style, ...])

使用Mermaid绘制PNG图像。

draw_png()

以PNG图像的形式绘制图。

extend(graph, *[, prefix])

从另一个图中添加所有节点和边。

first_node()

找到不是任何边目标节点的单节点。

last_node()

找到不是任何边源节点的单节点。

next_id()

返回可以用于将节点添加到图中的新唯一节点标识符。

print_ascii()

以ASCII艺术字符串的形式打印图。

reid()

返回所有节点以可能的最唯一、可读的名称重新标识的新图。

remove_node(node)

从图中移除节点以及与其相连的所有边。

to_json(*[, with_schemas])

将图转换为可序列化的JSON格式。

trim_first_node()

如果存在且仅有一个出边,删除第一个节点,即删除它不会使图没有“第一个”节点。

trim_last_node()

如果存在且仅有一个入边,删除最后一个节点,即删除它不会使图没有“最后一个”节点。

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

  • edges (List[Edge]) –

返回类型

None

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

向图中添加边并返回它。

参数
  • source (Node) – 边的起始节点。

  • target (Node) – 边的目标节点。

  • data (Optional[Stringifiable]) – 与边关联的可选数据。默认为 None。

  • conditional (bool) – 边是否为条件性的。默认为 False。

返回

已添加到图中的边。

引发

ValueError – 如果源节点或目标节点不在图中。

返回类型

Edge

add_node(data: Union[Type[BaseModel], RunnableType], id: Optional[str] = None, *, metadata: Optional[Dict[str, Any]] = None) Node[source]

向图中添加节点并返回它。

参数
  • data (Union[Type[BaseModel], RunnableType]) – 节点的数据。

  • id (Optional[str]) – 节点的ID。默认为None。

  • metadata (Optional[Dict[str, Any]]) – 节点的可选元数据。默认为None。

返回

添加到图中的节点。

引发

ValueError – 如果已存在具有相同ID的节点。

返回类型

节点

draw_ascii() str[source]

以ASCII艺术字符串的形式绘制图。

返回类型

str

draw_mermaid(*, with_styles: bool = True, curve_style: CurveStyle = CurveStyle.LINEAR, node_colors: NodeStyles = NodeStyles(default='fill:#f2f0ff,line-height:1.2', first='fill-opacity:0', last='fill:#bfb6fc'), wrap_label_n_words: int = 9) str[source]

以Mermaid语法字符串的形式绘制图。

参数
  • with_styles (bool) – 是否在语法中包含样式。默认为True。

  • curve_style (CurveStyle) – 边的样式。默认为CurveStyle.LINEAR。

  • node_colors (NodeStyles) – 节点的颜色。默认为NodeStyles()。

  • wrap_label_n_words (int) – 节点标签折行时的单词数。默认为9。

返回

Mermaid语法字符串。

返回类型

str

draw_mermaid_png(*, curve_style: CurveStyle = CurveStyle.LINEAR, node_colors: NodeStyles = NodeStyles(default='fill:#f2f0ff,line-height:1.2', first='fill-opacity:0', last='fill:#bfb6fc'), 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[source]

使用Mermaid绘制PNG图像。

参数
  • curve_style (CurveStyle) – 边的样式。默认为CurveStyle.LINEAR。

  • node_colors (NodeStyles) – 节点的颜色。默认为NodeStyles()。

  • wrap_label_n_words (int) – 节点标签折行时的单词数。默认为9。

  • output_file_path (可选[str]) – 保存图像的路径。如果为 None,则不保存图像。默认为 None。

  • draw_method (MermaidDrawMethod) – 绘制图的绘制方法。默认为 MermaidDrawMethod.API。

  • background_color (str) – 背景颜色。默认为 “白色”。

  • padding (int) – 围绕图的填充。默认为 10。

返回

PNG 图像的字节。

返回类型

bytes

draw_png(output_file_path: str, fontname: Optional[str] = None, labels: Optional[LabelsDict] = None) None[source]
draw_png(output_file_path: None, fontname: Optional[str] = None, labels: Optional[LabelsDict] = None) bytes

以PNG图像的形式绘制图。

参数
  • output_file_path – 保存图像的路径。如果为 None,则不保存图像。默认为 None。

  • fontname – 要使用的字体名称。默认为 None。

  • labels – 图形节点和边的可选标签。默认为 None。

返回

如果 output_file_path 为 None,则返回一个字节的 PNG 图像;否则返回 None。

extend(graph: Graph, *, prefix: str = '') Tuple[Optional[Node], Optional[Node]][source]

将另一个图中的所有节点和边添加。请注意,这不会检查重复项,也不会连接图。

参数
  • graph (Graph) – 要添加的图。

  • prefix (str) – 添加到节点 ID 的前缀。默认为 ""。

返回

子图的第一个和最后一个节点的元组。

返回类型

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

first_node() Optional[Node][source]

找到单个不是任何边目标节点的节点。如果没有这样的节点,或者有多个,返回 None。在绘制图时,此节点将是起点。

返回类型

Optional[Node]

last_node() Optional[Node][source]

找到单个不是任何边源的节点。如果没有这样的节点,或者有多个,返回 None。在绘制图时,此节点将是终点。

返回类型

Optional[Node]

next_id() str[来源]

返回可以用于将节点添加到图中的新唯一节点标识符。

返回类型

str

print_ascii() None[来源]

以ASCII艺术字符串的形式打印图。

返回类型

None

reid() Graph[来源]

返回所有节点以可能的最唯一、可读的名称重新标识的新图。

返回类型

remove_node(node: Node) None[来源]

从图中移除节点以及与其相连的所有边。

参数

node (Node) – 要删除的节点。

返回类型

None

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

将图转换为可序列化的JSON格式。

参数

with_schemas (bool) – 是否包含节点的模式,如果它们是 Pydantic 模型。默认为 False。

返回

包含图中的节点和边的字典。

返回类型

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

trim_first_node() None[来源]

如果存在并只有一条出边,则删除第一个节点,即删除它不会使图没有“第一个”节点。

返回类型

None

trim_last_node() None[源代码]

如果存在并且只有一条入边,则移除最后一个节点,即移除它不会使图没有“最后一个”节点。

返回类型

None