组件概览
组件是您流程的构建块。 就像应用程序中的类一样,每个组件都针对特定的用例或集成而设计。
Langflow 为工作区提供键盘快捷键。
在 Langflow 标题栏中,点击您的个人资料图标,选择 设置,然后点击 快捷键 查看可用的快捷键。
向流程添加组件
要向流程添加组件,请将组件从 组件 菜单拖到 工作区。
组件 菜单按组件类型或提供商组织,某些组件默认情况下是隐藏的。
- 核心:组件 菜单顶部的类别是 Langflow 的核心组件。它们按用途分组,例如 输入和输出 或 数据。Beta 组件是新发布的,仍在开发中。
- 捆绑包:这些组件支持特定的第三方集成,并按提供商分组。
- 遗留:您仍然可以使 用这些组件,但它们不再受支持。遗留组件默认情况下是隐藏的;点击 组件设置 来显示遗留组件。
配置组件
将组件添加到流程后,配置该组件的参数并将其连接到流程中的其他组件。
每个组件都有与组件用途相关的输入、输出、参数和控制。 默认情况下,组件仅显示必需和常用的选项。 要访问其他设置和控制(包括元设置),请使用 组件的标题菜单。
组件标题菜单
要访问组件的标题菜单,请在您的工作区中点击该组件。
标题菜单上直接提供了一些选项。 例如:
- 代码:通过直接编辑组件的 Python 代 码来修改组件设置。
- 控制:调整所有组件参数,包括默认隐藏的可选设置。
- 工具模式:当将组件与 代理 组件结合使用时,启用此选项。
对于所有其他选项,包括 删除 和 Replicate 控制,请点击 显示更多。
重命名组件
要修改组件的名称或描述,请在工作区中点击该组件,然后点击 编辑。 组件描述接受 Markdown 语法。
运行组件
要运行单个组件,请点击 运行组件。 上次运行 值表示组件成功运行。
运行单个组件与运行整个流程不同。在单个组件运行中,会调用 build_vertex
函数,该函数仅构建和运行单个组件,并通过可视化编辑器提供直接输入(inputs_dict
参数)。VertexBuildResult
数据会传递给调用组件的 build
方法并运行它的 build_and_run
方法。与运行整个流程不同,运行单个组件不会自动执行其上游依赖项。
检查组件输出和日志
要查看单个组件的输出和日志,请点击 检查。
冻结组件
冻结组件也会冻结所选组件的所有上游组件。
如果您期望组件 以及所有上游组件 产生一致的输出,并且只需要运行这些组件一次,请使用冻结选项。
冻结组件可防止该组件和所有上游组件重新运行,并保留这些组件的最后一个输出状态。 任何未来的流程运行都将使用保留的输出。
要冻结组件,请在工作区中点击该组件以显示组件的标题菜单,点击 显示更多,然后选择 冻结。
组件端口
在每个组件的边框周围,都有圆形端口图标,如 。 这些图标表示组件的_连接点_或_端口_。
端口要么接受特定数据类型的输入,要么产生特定数据类型的输出。 您可以根据端口所附加的字段或根据端口的颜色推断数据类型。 例如,系统消息字段接受消息数据,如蓝色端口图标所示:。
在构建流程时,将输出端口连接到相同类型(颜色)的输入端口,以在两个组件之间传输该类型的数据。 有关每种数据类型的编程表示的信息,请参阅Langflow 数据类型。
-
将鼠标悬停在端口上可查看该端口的连接详细信息。
-
点击端口可按兼容组件筛选组件菜单。
-
如果两个组件具有不兼容的数据类型,您可以使用处理组件,如类型转换组件,来在组件之间转换数据。
动态端口
某些组件具有动态添加或移除的端口。 例如,提示模板组件接受花括号内的输入,当在模板字段中检测到花括号内的值时,会打开新的端口。
输出类型选择
所有组件都会产生输出,这些输出要么发送到流程中的另一个组件,要么作为最终流程结果返回。
某些组件可以产生多种类型的输出:
-
如果组件一次性发出所有类型,则在可视化编辑器中,该组件具有多个输出端口。在组件代码中,这由
group_outputs=True
表示 -
如果组件只发出一种类型,您必须通过点击输出端口附近的输出标签来选择输出类型,然后选择所需的输出类型。在组件代码中,这由
group_outputs=False
或省略group_outputs
参数表示。
例如,语言模型组件可以输出_要么是_模型响应要么是语言模型。
模型响应输出产生消息
数据,可以传递到另一个组件的消息
端口。
语言模型输出必须连接到具有语言模型输入的组件,例如结构化输出组件,该组件使用附加的LLM来支持接收组件的推理。
端口颜色
组件端口颜色表示端口接收或发出的数据类型。
例如,消息端口要么接受消息
数据,要么发出消息
数据。
下表列出了组件数据类型及其对应的端口颜色:
Data type | Port color | Port icon example |
---|---|---|
Data | Red | |
DataFrame | Pink | |
Embeddings | Emerald | |
LanguageModel | Fuchsia | |
Memory | Orange | |
Message | Indigo | |
Tool | Cyan | |
Unknown or multiple types | Gray |
组件代码
您可以在工作区和代码中 编辑组件。当编辑流程时,选择一个组件,然后点击 代码 来查看和编辑组件的底层 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 组件及其关联的工具或向量存储组件。
- 按住 Shift,然后点击并拖动以突出显示您要合并的所有组件。组件必须完全在选择区域内才能合并。
或者,要逐个选择要合并的组件,请在 Windows 上按住 Ctrl 或在 Mac 上按住 Cmd,然后点击每个组件以将它们添加到组中。
- 释放鼠标和键盘,然后点击 Group 将组件合并为一个分组组件。
分组组件作为单个组件进行配置和管理,包括组件名称、代码和设置。
要取消分组组件,请在工作区中点击该组件以显示组件的标题菜单,点击 Show More,然后选择 Ungroup。
如果您想在其他流程中重用此分组,请在工作区中点击该组件以显示组件的标题菜单,点击 Show More,然后选择 Save 将组件 保存到 Components 菜单中。