跳到主要内容

贡献组件

新组件作为 Component 类的对象添加。

依赖项被添加到 pyproject.toml 文件中。

为 Langflow 贡献示例组件

任何人都可以贡献示例组件。例如,要创建一个名为 DataFrame processor 的新数据组件,请按照以下步骤将其贡献给 Langflow。

  1. 创建一个名为 dataframe_processor.py 的 Python 文件。
  2. 将你的处理器编写为 Component 类的对象。你将创建一个新类 DataFrameProcessor,它将继承自 Component 并重写基类的方法。

_10
from typing import Any, Dict, Optional
_10
import pandas as pd
_10
from langflow.custom import Component
_10
_10
class DataFrameProcessor(Component):
_10
"""一个处理 pandas DataFrames 的组件,支持各种操作。"

  1. 定义类属性以提供有关你的自定义组件的信息:

_13
from typing import Any, Dict, Optional
_13
import pandas as pd
_13
from langflow.custom import Component
_13
_13
class DataFrameProcessor(Component):
_13
"""一个处理 pandas DataFrames 的组件,支持各种操作。"""
_13
_13
display_name: str = "DataFrame Processor"
_13
description: str = "Process and transform pandas DataFrames with various operations like filtering, sorting, and aggregation."
_13
documentation: str = "https://docs.langflow.org/components-dataframe-processor"
_13
icon: str = "DataframeIcon"
_13
priority: int = 100
_13
name: str = "dataframe_processor"

  • display_name: 在可视化编辑器中显示的用户友好名称。
  • description: 对你的组件功能的简要描述。
  • documentation: 指向详细文档的链接。
  • icon: 用于视觉表示的表情符号或图标标识符。 有关更多信息,请参阅 贡献捆绑包
  • priority: 一个可选的整数,用于控制显示顺序。数字较小的组件会优先显示。
  • name: 一个可选的内部标识符,默认为类名。
  1. 通过指定组件的输入、输出以及处理它们的方法来定义组件的接口。方法名必须与输出列表中的 method 字段匹配,因为这是 Langflow 知道调用哪个方法来生成每个输出的方式。 此示例创建了一个最小的自定义组件骨架。 有关创建自定义组件的更多信息,请参阅 创建自定义 Python 组件

_21
from typing import Any, Dict, Optional
_21
import pandas as pd
_21
from langflow.custom import Component
_21
_21
class DataFrameProcessor(Component):
_21
"""一个处理 pandas DataFrames 的组件,支持各种操作。"""
_21
_21
display_name: str = "DataFrame Processor"
_21
description: str = "Process and transform pandas DataFrames with various operations like filtering, sorting, and aggregation."
_21
documentation: str = "https://docs.langflow.org/components-dataframe-processor"
_21
icon: str = "DataframeIcon"
_21
priority: int = 100
_21
name: str = "dataframe_processor"
_21
_21
# input and output lists
_21
inputs = []
_21
outputs = []
_21
_21
# method
_21
def some_output_method(self):
_21
return ...

  1. dataframe_processor.py 保存到 src > backend > base > langflow > components 目录。 此示例添加了一个数据组件,因此请将其添加到 /data 目录。

  2. 将组件依赖项添加到 src > backend > base > langflow > components > data > __init__.py,格式为 from .DataFrameProcessor import DataFrameProcessor。 你可以在 Langflow 仓库中查看 /data/init.py

  3. 将任何新的依赖项添加到 pyproject.toml 文件。

  4. 为你的组件提交文档。对于此示例组件,你应将文档提交到 数据组件页面

  5. 将你的更改作为拉取请求提交。Langflow 团队将进行审查、提出修改建议,并将你的组件添加到 Langflow 中。

修改组件的最佳实践

在创建或更新组件时,请遵循以下最佳实践,以保持向后兼容性并确保用户获得流畅的体验。

不要重命名类或 name 属性

更改类名或 name 属性会破坏所有现有用户的组件。这是因为前端会测试 type 属性,该属性被设置为类名或 name 属性。如果这些名称发生变化,组件实际上就变成了一个新组件,而旧组件就会消失。

相反,请执行以下操作:

  • 如果旧名称不清晰,只更改显示名称。
  • 如果功能发生变化但仍然相关,只更改显示名称。
  • 如果需要新的内部名称,请将旧组件标记为 legacy=true 并创建一个新组件。

例如:


_10
class MyCustomComponent(BaseComponent):
_10
name = "my_custom_component_internal"
_10
legacy = True

不要删除字段和输出

删除字段或输出可能导致边断开并改变组件的行为。

相反,请将字段标记为 deprecated 并保持在同一位置。如果绝对需要删除,您必须定义并记录迁移计划。始终向用户清楚地传达字段信息的任何变更。

将过时的组件保留为传统版本

更新组件时,将它们创建为完全独立的实体,同时将旧组件保留为传统版本。始终确保向后兼容性,并且永远不要从基类(如 LCModelComponent)中删除方法和属性。

优先使用异步方法

在组件中始终优先使用异步方法和函数。与文件交互时,使用 aiofileanyio.Path 以获得更好的性能和兼容性。

为您的组件包含测试

使用 ComponentTestBase 类为您包含的更改添加测试。有关更多信息,请参阅贡献组件测试

文档

在拉取请求中记录更改时,清楚地说明什么发生了变化,例如显示名称更新或新字段,为什么发生变化,例如改进或错误修复,以及对现有用户的影响

例如:

示例 PR

_22
# 对 Notify 组件进行更改的拉取请求
_22
_22
此拉取请求更新了 Notify 组件。
_22
_22
## 发生了什么变化
_22
- 添加了新的 `timeout` 字段来控制组件等待响应的时间。
_22
- 为清晰起见,将 `message` 字段重命名为 `notification_text`。
_22
- 添加了对异步操作的支持。
_22
- 废弃了 `retry_count` 字段,改用 `max_retries`。
_22
_22
## 为什么发生变化
_22
- `timeout` 字段响应用户对更好控制等待时间的需求。
_22
- `message` 到 `notification_text` 的更改使字段的目的更加清晰。
_22
- 异步支持提高了复杂流程中的性能。
_22
- `retry_count` 到 `max_retries` 符合常见的重试模式术语。
_22
_22
## 对用户的影响
_22
- 新的 `timeout` 字段是可选的(默认为 30 秒)。
_22
- 用户将看到 `retry_count` 的弃用警告。
_22
- 迁移:在现有流程中将 `retry_count` 替换为 `max_retries`。
_22
- 两个字段都将工作到版本 2.0。
_22
- 异步支持无需任何操作 - 它是向后兼容的。

示例拉取请求流程

  1. 创建或更新组件。 如果目的保持不变,请保持类名和 name 属性。 否则,创建一个新组件并将旧组件移动到 legacy
  2. 添加测试。 使用 ComponentTestBase 类之一创建测试。 有关更多信息,请参阅贡献组件测试
  3. 将过时的字段和输出标记为 deprecated 并保持在同一位置以确保向后兼容性。
  4. 记录您的更改。 如果发生破坏性更改,请包含迁移说明。
Search