# Langflow 自定义组件教程

原创虚构输入与人工预期输出。未运行产品实例、未调用模型、未外发或发布。config.json 为字段教材，不是可导入 n8n/Dify/Flowise/Langflow 工作流。

## 1. 用含异常行的 CSV 定义目标
样例共 3 行：第一行 SKU 有空格，第二行金额 0.05，第三行 unknown。输出要保留每行，金额异常写 review_amount，而不是从列表静默删除。

## 2. 打开自定义组件 Python 编辑器
建立独立实验 flow，加入自定义组件并打开代码编辑器。官方当前示例采用 lfx 命名空间；先核对自己的 Langflow 版本及组件 API，教材不安装包或修改服务器。

## 3. 声明输入、输出和返回方法
用 MessageTextInput 接收 csv_text，用 Output 将 method 指向 build_data，返回 Data(data={rows:...})。方法名与输出声明不同会导致节点无法执行。

## 4. 调用标准库解析并保留状态
csv.DictReader 按列解析，SKU 去空格，Decimal 将两位金额转为 cents。检测负数、缺字段或格式不合规时写明状态，不让模型参与确定性清洗。

## 5. 先单独运行组件查看三行
粘贴 input.csv 后运行该组件，核对三行 ID、整数金额与异常状态。下载 check-fixture.py 可离线验证解析逻辑；完整组件未在 Langflow 实例运行。

## 6. 再接提示词组件生成解释
结构化结果进入提示词时，把 review 行与 ok 行分别列出，只要求模型解释异常和生成内部说明。数据清洗结果先验收，不能把模型重新计算金额作为通过依据。

## 离线验收
运行 python3 check-fixture.py，仅检查固定输入与人工预期关系，不验证真实模型、产品节点或工作流执行。

## 官方来源
- [Langflow 官方：Python 自定义组件](https://docs.langflow.org/components-custom-components)