图表#

class langchain_core.runnables.graph.Graph(nodes: dict[str, ~langchain_core.runnables.graph.Node] = <factory>, edges: list[~langchain_core.runnables.graph.Edge] = <factory>)[source]#

节点和边的图。

Parameters:
  • nodes (dict[str, Node]) – 图中的节点字典。默认为空字典。

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

属性

方法

__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: dict[str, ~langchain_core.runnables.graph.Node] = <factory>, edges: list[~langchain_core.runnables.graph.Edge] = <factory>) None#
Parameters:
  • 节点 (字典[字符串, 节点])

  • edges (列表[Edge])

Return type:

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

向图中添加一条边并返回它。

Parameters:
  • source (Node) – 边的源节点。

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

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

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

Returns:

添加到图中的边。

Raises:

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

Return type:

Edge

add_node(data: type[BaseModel] | RunnableType, id: str | None = None, *, metadata: dict[str, Any] | None = None) Node[来源]#

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

Parameters:
  • data (Union[type[BaseModel], RunnableType]) – 节点的数据。

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

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

Returns:

添加到图中的节点。

Raises:

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

Return type:

Node

draw_ascii() str[source]#

将图形绘制为ASCII艺术字符串。

Return type:

字符串

draw_mermaid(*, with_styles: bool = True, curve_style: CurveStyle = CurveStyle.LINEAR, node_colors: NodeStyles | None = None, wrap_label_n_words: int = 9) str[源代码]#

将图形绘制为Mermaid语法字符串。

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

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

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

  • wrap_label_n_words (int) – 节点标签换行的字数。默认为9。

Returns:

Mermaid语法字符串。

Return type:

字符串

draw_mermaid_png(*, curve_style: CurveStyle = CurveStyle.LINEAR, node_colors: NodeStyles | None = None, wrap_label_n_words: int = 9, output_file_path: str | None = None, draw_method: MermaidDrawMethod = MermaidDrawMethod.API, background_color: str = 'white', padding: int = 10) bytes[source]#

使用Mermaid将图形绘制为PNG图像。

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

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

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

  • output_file_path (str | None) – 保存图像的路径。如果为None,则图像不会被保存。默认为None。

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

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

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

Returns:

PNG图像以字节形式表示。

Return type:

字节

draw_png(output_file_path: str, fontname: str | None = None, labels: LabelsDict | None = None) None[源代码]#
draw_png(output_file_path: None, fontname: str | None = None, labels: LabelsDict | None = None) bytes

将图形绘制为PNG图像。

Parameters:
  • output_file_path – 保存图像的路径。如果为None,则图像不会被保存。默认为None。

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

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

Returns:

如果output_file_path为None,则PNG图像以字节形式返回,否则返回None。

extend(graph: Graph, *, prefix: str = '') tuple[Node | None, Node | None][源代码]#

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

Parameters:
  • graph (Graph) – 要添加的图。

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

Returns:

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

Return type:

元组[Node | 无, Node | 无]

first_node() Node | None[source]#

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

Return type:

Node | 无

last_node() Node | None[source]#

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

Return type:

Node | 无

next_id() str[source]#

返回一个新的唯一节点标识符,可用于向图中添加节点。

Return type:

字符串

print_ascii() None[source]#

将图形打印为ASCII艺术字符串。

Return type:

reid() Graph[source]#

返回一个新图,其中所有节点都重新标识,尽可能使用它们唯一的、可读的名称。

Return type:

Graph

remove_node(node: Node) None[source]#

从图中移除一个节点及其所有连接的边。

Parameters:

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

Return type:

to_json(*, with_schemas: bool = False) dict[str, list[dict[str, Any]]][source]#

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

Parameters:

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

Returns:

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

Return type:

dict[str, list[dict[str, Any]]]

trim_first_node() None[source]#

如果第一个节点存在并且只有一个出边,即移除它不会使图失去“第一个”节点,则移除第一个节点。

Return type:

trim_last_node() None[source]#

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

Return type: