跳到主要内容

组件概览

组件是您流程的构建块。 就像应用程序中的类一样,每个组件都针对特定的用例或集成而设计。

提示

Langflow 为工作区提供键盘快捷键。

在 Langflow 标题栏中,点击您的个人资料图标,选择 设置,然后点击 快捷键 查看可用的快捷键。

向流程添加组件

要向流程添加组件,请将组件从 组件 菜单拖到 工作区

组件 菜单按组件类型或提供商组织,某些组件默认情况下是隐藏的。

  • 核心组件 菜单顶部的类别是 Langflow 的核心组件。它们按用途分组,例如 输入和输出数据Beta 组件是新发布的,仍在开发中。
  • 捆绑包:这些组件支持特定的第三方集成,并按提供商分组。
  • 遗留:您仍然可以使用这些组件,但它们不再受支持。遗留组件默认情况下是隐藏的;点击 组件设置 来显示遗留组件。

配置组件

将组件添加到流程后,配置该组件的参数并将其连接到流程中的其他组件。

每个组件都有与组件用途相关的输入、输出、参数和控制。 默认情况下,组件仅显示必需和常用的选项。 要访问其他设置和控制(包括元设置),请使用 组件的标题菜单

组件标题菜单

要访问组件的标题菜单,请在您的工作区中点击该组件。

Agent component

标题菜单上直接提供了一些选项。 例如:

  • 代码:通过直接编辑组件的 Python 代码来修改组件设置。
  • 控制:调整所有组件参数,包括默认隐藏的可选设置。
  • 工具模式:当将组件与 代理 组件结合使用时,启用此选项。

对于所有其他选项,包括 删除Replicate 控制,请点击 显示更多

重命名组件

要修改组件的名称或描述,请在工作区中点击该组件,然后点击 编辑。 组件描述接受 Markdown 语法。

运行组件

要运行单个组件,请点击 运行组件上次运行 值表示组件成功运行。

运行单个组件与运行整个流程不同。在单个组件运行中,会调用 build_vertex 函数,该函数仅构建和运行单个组件,并通过可视化编辑器提供直接输入(inputs_dict 参数)。VertexBuildResult 数据会传递给调用组件的 build 方法并运行它的 build_and_run 方法。与运行整个流程不同,运行单个组件不会自动执行其上游依赖项。

检查组件输出和日志

要查看单个组件的输出和日志,请点击 检查

冻结组件

important

冻结组件也会冻结所选组件的所有上游组件。

如果您期望组件 以及所有上游组件 产生一致的输出,并且只需要运行这些组件一次,请使用冻结选项。

冻结组件可防止该组件和所有上游组件重新运行,并保留这些组件的最后一个输出状态。 任何未来的流程运行都将使用保留的输出。

要冻结组件,请在工作区中点击该组件以显示组件的标题菜单,点击 显示更多,然后选择 冻结

组件端口

在每个组件的边框周围,都有圆形端口图标,如 。 这些图标表示组件的_连接点_或_端口_。

端口要么接受特定数据类型的输入,要么产生特定数据类型的输出。 您可以根据端口所附加的字段或根据端口的颜色推断数据类型。 例如,系统消息字段接受消息数据,如蓝色端口图标所示:

具有多个输入的提示模板组件

在构建流程时,将输出端口连接到相同类型(颜色)的输入端口,以在两个组件之间传输该类型的数据。 有关每种数据类型的编程表示的信息,请参阅Langflow 数据类型

提示
  • 将鼠标悬停在端口上可查看该端口的连接详细信息。

  • 点击端口可按兼容组件筛选组件菜单。

  • 如果两个组件具有不兼容的数据类型,您可以使用处理组件,如类型转换组件,来在组件之间转换数据。

动态端口

某些组件具有动态添加或移除的端口。 例如,提示模板组件接受花括号内的输入,当在模板字段中检测到花括号内的值时,会打开新的端口。

具有多个输入的提示模板组件

输出类型选择

所有组件都会产生输出,这些输出要么发送到流程中的另一个组件,要么作为最终流程结果返回。

某些组件可以产生多种类型的输出:

  • 如果组件一次性发出所有类型,则在可视化编辑器中,该组件具有多个输出端口。在组件代码中,这由 group_outputs=True 表示

  • 如果组件只发出一种类型,您必须通过点击输出端口附近的输出标签来选择输出类型,然后选择所需的输出类型。在组件代码中,这由 group_outputs=False 或省略 group_outputs 参数表示。

例如,语言模型组件可以输出_要么是_模型响应要么是语言模型模型响应输出产生消息数据,可以传递到另一个组件的消息端口。 语言模型输出必须连接到具有语言模型输入的组件,例如结构化输出组件,该组件使用附加的LLM来支持接收组件的推理。

语言模型组件中的输出类型选择

端口颜色

组件端口颜色表示端口接收或发出的数据类型。 例如,消息端口要么接受消息数据,要么发出消息数据。

下表列出了组件数据类型及其对应的端口颜色:

Data typePort colorPort icon example
DataRed
DataFramePink
EmbeddingsEmerald
LanguageModelFuchsia
MemoryOrange
MessageIndigo
ToolCyan
Unknown or multiple typesGray

组件代码

您可以在工作区和代码中编辑组件。当编辑流程时,选择一个组件,然后点击 代码 来查看和编辑组件的底层 Python 代码。

所有组件都有底层代码,这决定了如何配置它们以及它们可以执行什么操作。 在创建和运行流程的上下文中,组件代码执行以下操作:

  • 确定在可视化编辑器中显示哪些配置选项。
  • 根据组件定义的输入类型验证输入。
  • 使用配置的参数、方法和函数处理数据。
  • 将结果传递给流程中的下一个组件。

所有组件都继承自一个基础 Component 类,该类定义了组件的接口和行为。 例如,Recursive Character Text Splitter 组件LCTextSplitterComponent 类的子类。

每个组件的代码都包含输入和输出的定义,这些在工作区中表示为组件端口。 例如,RecursiveCharacterTextSplitter 有四个输入。每个输入定义都指定了输入类型,如 IntInput,以及该特定输入的编码名称、显示名称、描述和其他参数。 这些值决定了组件设置,例如可视化编辑器中的显示名称和工具提示。


_26
inputs = [
_26
IntInput(
_26
name="chunk_size",
_26
display_name="Chunk Size",
_26
info="The maximum length of each chunk.",
_26
value=1000,
_26
),
_26
IntInput(
_26
name="chunk_overlap",
_26
display_name="Chunk Overlap",
_26
info="The amount of overlap between chunks.",
_26
value=200,
_26
),
_26
DataInput(
_26
name="data_input",
_26
display_name="Input",
_26
info="The texts to split.",
_26
input_types=["Document", "Data"],
_26
),
_26
MessageTextInput(
_26
name="separators",
_26
display_name="Separators",
_26
info='The characters to split on.\nIf left empty defaults to ["\\n\\n", "\\n", " ", ""].',
_26
is_list=True,
_26
),
_26
]

此外,组件有处理其功能的方法或函数。 例如,RecursiveCharacterTextSplitter 有两个方法:


_16
def get_data_input(self) -> Any:
_16
return self.data_input
_16
_16
def build_text_splitter(self) -> TextSplitter:
_16
if not self.separators:
_16
separators: list[str] | None = None
_16
else:
_16
# check if the separators list has escaped characters
_16
# if there are escaped characters, unescape them
_16
separators = [unescape_string(x) for x in self.separators]
_16
_16
return RecursiveCharacterTextSplitter(
_16
separators=separators,
_16
chunk_size=self.chunk_size,
_16
chunk_overlap=self.chunk_overlap,
_16
)

get_data_input 方法从组件的输入中检索要分割的文本,使数据对类可用。 build_text_splitter 方法通过调用其父类的 build 方法创建一个 RecursiveCharacterTextSplitter 对象。然后,使用创建的分割器分割文本,并将其传递给下一个组件。

组件版本

组件版本和状态存储在内部的 Langflow 数据库中。当您向流程添加组件时,您会基于 Langflow 数据库中的信息创建该组件的分离副本。 这些副本与主 Langflow 数据库分离,并且不会与升级 Langflow 版本时可能发生的任何更新同步。

换句话说,组件的各个实例会保留您将其添加到特定流程时的版本号和状态。例如,如果组件在添加到流程时处于版本 1.0,那么它在该流程中会保持版本 1.0 除非您更新它

更新组件版本

在编辑工作区中的流程时,如果组件的工作区版本落后于数据库版本,Langflow 会通知您,以便您可以更新组件的工作区版本:

  • Update ready:此通知表示组件更新不包含破坏性更改。
  • Update available:此通知表示组件更新可能包含破坏性更改。

破坏性更改会修改组件的输入和输出,导致组件断开连接并破坏流程。更新组件后,您可能需要编辑组件设置或重新连接组件端口。

有两种更新组件的方法:

  • 点击 Update 更新单个组件。建议用于无破坏性更改的更新。
  • 点击 Review 查看所有可用更新并在更新前创建快照。建议用于有破坏性更改的更新。

要在更新组件前保存流程的快照,请启用 Create backup flow before updating。备份流程存储在与原始流程相同的项目文件夹中,后缀为 (backup)

要更新特定组件,请选择您要更新的组件,然后点击 Update Components

组件将更新为基于您运行的 Langflow 版本的最新的可用版本。

组件分组

多个组件可以分组为一个组件以便重用。这对于通过组合相关组件来组织大型流程非常有用,例如 RAG Agent 组件及其关联的工具或向量存储组件。

  1. 按住 Shift,然后点击并拖动以突出显示您要合并的所有组件。组件必须完全在选择区域内才能合并。

或者,要逐个选择要合并的组件,请在 Windows 上按住 Ctrl 或在 Mac 上按住 Cmd,然后点击每个组件以将它们添加到组中。

  1. 释放鼠标和键盘,然后点击 Group 将组件合并为一个分组组件。

分组组件作为单个组件进行配置和管理,包括组件名称、代码和设置。

要取消分组组件,请在工作区中点击该组件以显示组件的标题菜单,点击 Show More,然后选择 Ungroup

如果您想在其他流程中重用此分组,请在工作区中点击该组件以显示组件的标题菜单,点击 Show More,然后选择 Save 将组件保存到 Components 菜单中。

Search