跳到主要内容

组件概述

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

提示

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

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

向流中添加组件

要向流中添加组件,请将组件从 Core components (核心组件) 或 Bundles (捆绑包) 菜单拖入 workspace (工作区)。

组件按类型或提供商分组,部分组件默认处于隐藏状态

  • Core components (核心组件):Langflow 的基础组件按用途分组,例如 Inputs and Outputs (输入与输出) 或 Data (数据)。这些组件要么提供通用功能(如循环和解析),要么提供支持多种第三方集成的单一组件。

  • Bundles (捆绑包):包含一个或多个支持特定第三方集成的组件,按服务提供商分组。

  • Legacy (遗留):这些组件默认隐藏。欲了解更多信息,请参阅 Legacy components (遗留组件)。

配置组件

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

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

组件页眉菜单

要访问组件的页眉菜单,请在工作区中点击该组件。

Agent component

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

  • Code (代码):通过直接编辑组件的 Python 代码来修改组件设置。
  • Controls (控件):调整所有组件参数,包括默认隐藏的可选设置。
  • Tool Mode (工具模式):将组件与 Agent (智能体) 组件结合使用时,请启用此选项。

对于所有其他选项,包括 Delete (删除) 和 Duplicate (复制) 控件,请点击 Show More (显示更多).

重命名组件

要修改组件的名称或描述,请在工作区点击该组件,然后点击 Edit (编辑)。组件描述支持 Markdown 语法。

运行组件

要运行单个组件,请点击 Run component (运行组件)。Last Run (上次运行) 的值表示组件已成功运行。

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

检查组件输出和日志

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

冻结组件

提示

冻结一个组件同时也会冻结该组件的所有上游组件。

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

冻结组件可防止该组件及其所有上游组件重新运行,并保留这些组件的最后输出状态。未来的流运行将直接使用保留的输出。

要冻结组件,请在工作区点击该组件以调出页眉菜单,点击 Show More (显示更多),然后选择 Freeze (冻结)。

组件端口

在每个组件的边缘,都有类似的圆形端口图标。这些表示组件的连接点端口

端口接受特定数据类型的输入或生成该类型的输出。您可以从端口所在的字段或从 端口颜色 推断数据类型。例如,System Message (系统消息) 字段接受 消息数据,如蓝色端口图标所示.

Prompt Template component with multiple inputs

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

提示
  • 在工作区中,将鼠标悬停在端口上可查看该端口的连接详细信息。点击端口可 Search (搜索) 兼容的组件。

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

动态端口

某些组件的端口是动态添加或删除的。例如,Prompt Template (提示词模板) 组件接受 包裹在花括号中的输入,当在 Template (模板) 字段中检测到花括号包裹的值时,就会开启新的端口。

Prompt Template component with multiple inputs

输出类型选择

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

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

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

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

例如,语言模型组件可以输出 Model Response (模型响应) Language Model (语言模型)。Model Response 输出产生 Message 数据,可以传递给另一个组件的 Message 端口。Language Model 输出必须连接到具有 Language Model 输入的组件,例如 Structured Output 组件,该组件利用连接的 LLM 来驱动接收组件的推理。

Output type selection in the Language Model component

端口颜色

组件端口颜色指示该端口摄取或发出的数据类型。例如,Message 端口接受或发出 Message 数据。

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

数据类型端口颜色端口图标示例
数据 (Data)红色
数据帧 (DataFrame)粉色
嵌入 (Embeddings)翠绿色
语言模型 (LanguageModel)紫红色
记忆 (Memory)橙色
消息 (Message)靛蓝色
工具 (Tool)青色
未知或多种类型灰色

组件代码

您可以在 workspace (工作区) 中编辑组件,也可以在代码中编辑。编辑流时,选择一个组件,然后点击 Code (代码) 以查看并编辑组件底层的 Python 代码。

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

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

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

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

RecursiveCharacterTextSplitter 输入(源自 recursive_character.py)
17 inputs = [ 18 IntInput( 19 name="chunk_size", 20 display_name="Chunk Size", 21 info="每个分块的最大长度。", 22 value=1000, 23 ), 24 IntInput( 25 name="chunk_overlap", 26 display_name="Chunk Overlap", 27 info="分块之间的重叠量。", 28 value=200, 29 ), 30 DataInput( 31 name="data_input", 32 display_name="Input", 33 info="要分割的文本。", 34 input_types=["Document", "Data"], 35 required=True, 36 ), 37 MessageTextInput( 38 name="separators", 39 display_name="Separators", 40 info='用于分割的字符。\n如果留空,默认为 ["\\n\\n", "\\n", " ", ""]。', 41 is_list=True,

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

RecursiveCharacterTextSplitter 方法(源自 recursive_character.py)
45 def get_data_input(self) -> Any 46 return self.data_input 47 48 def build_text_splitter(self) -> TextSplitter 49 if not self.separators 50 separators: list[str] | None = None 51 else 52 # 检查分隔符列表是否有转义字符 53 # 如果有转义字符,则对其进行反转义 54 separators = [unescape_string(x) for x in self.separators] 55 56 return RecursiveCharacterTextSplitter( 57 separators=separators, 58 chunk_size=self.chunk_size, 59 chunk_overlap=self.chunk_overlap, 60 )

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

组件版本

组件版本和状态存储在 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,然后点击每个组件将其添加到组中。

  2. 松开鼠标和键盘,然后点击 Group (组合) 将组件合并为单个组组件。

组合后的组件作为单一组件进行配置和管理,包括其名称、代码和设置。

要取消组合,请在工作区点击该组件以调出页眉菜单,点击 Show More (显示更多),然后选择 Ungroup (取消组合)。

如果您想在其他流中重用此组合,请在工作区点击该组件调出页眉菜单,点击 Show More (显示更多),然后选择 Save (保存) 将其作为自定义组件保存到 Core components (核心组件) 菜单中。

遗留组件

遗留组件不再受支持,并可能在未来的版本中移除。您可以继续在现有流中使用它们,但建议您尽快将其替换为受支持的组件。流中组件上的 Legacy (遗留) 横幅包含了建议的替代方案。只要有可能,发布说明和 Langflow 文档中也会提供这些信息。

如果您不确定如何替换遗留组件,请: 按提供商、服务或组件名称 Search (搜索) 组件。该组件可能已被废弃,取而代之的是全新的组件、类似的组件或不同类别下的新版本组件。

如果没有明显的替代品,请考虑是否可以调整另一个组件来适应您的用例。例如,许多 Core components (核心组件) 提供了可以支持多个提供商和用例的通用功能,例如 API Request (API 请求) 组件

如果这些选项都不可行,您可以使用遗留组件的代码来创建您自己的自定义组件,或者针对该遗留组件 发起讨论

为了不鼓励在新的流中使用遗留组件,这些组件默认处于隐藏状态。在可视化编辑器中,您可以点击 Component settings (组件设置) 来切换 Legacy (遗留) 过滤器。

Search