跳到正文

n8n + FLUX.2 Pro 产品图工作流:Pro 不支持 LoRA,三条路线怎么选

SKU 多、每款几张,用 [pro] 加参考图,1 MP 单张 $0.045;主打款大批量出图才值得训练 LoRA。三条路线共用一套 n8n 骨架:提交、等待、轮询、下载。

A
••19 分钟阅读•AI 图片生成
FLUX.2 Pro 挂不了 LoRA:三个等距方块代表 pro 用 8 张参考图、klein 用 1 个 LoRA、dev 最多 3 个 LoRA 三条路线

FLUX.2 [pro] 挂不了 LoRA。 截至 2026 年 10 月 2 日,它在 BFL 官方 API 和 fal 上的请求参数里都没有 LoRA 字段,让同一件商品在不同场景里保持一致,靠的是参考图:API 一次最多传 8 张。想用 LoRA,有两条别的路:BFL 自己的 FLUX.2 [klein] 微调端点(公测,LoRA 要自己训练后上传),或者 fal 上基于 FLUX.2 [dev] 的托管训练加 LoRA 推理。

三条路线在 n8n 里的接法几乎一样,都是“提交任务 → 等待 → 轮询状态 → 下载保存”,区别只在端点、鉴权头和请求体里的几个字段。先按自己的情况对号入座:

你的情况路线一致性靠什么1 MP 单张标价前期投入
SKU 多,每款只出几张BFL:FLUX.2 [pro] + 参考图每次请求带商品图,最多 8 张$0.03,每张参考图加 $0.015无
少量主打款或统一品牌风格,出图量大,账单想留在 BFLBFL:FLUX.2 [klein] -finetuned 端点自己训练的 LoRA,每次请求 1 个9B 为 $0.015自备显卡训练并上传
同样是大批量,但不想自己搭训练环境fal:FLUX.2 [dev] LoRA托管训练的 LoRA,最多叠 3 个$0.021每个 LoRA 训练费 $6.40(1,000 步)

价格分别来自 BFL 价目表和 fal 的模型页,都是美元标价,会变动。下面的节点设置按 BFL、fal 和 n8n 的官方文档整理,没有经过实际运行和付费调用,接批量之前先用一条商品数据单独跑通。

FLUX.2 [pro] 能挂 LoRA 吗:BFL 和 fal 的端点都没有这个字段

不能。BFL 的 FLUX.2 [pro] 接口文档列出的字段是 prompt、input_image 到 input_image_8、width、height、seed、safety_tolerance、output_format、webhook_url、webhook_secret、disable_pup,里面没有 finetune_id,也没有任何 LoRA 相关参数。fal 上的 fal-ai/flux-2-pro 同样没有 loras 参数。BFL 没有写过“[pro] 不支持 LoRA”这句话,这个结论来自两处参数表里都找不到入口,加上 BFL 的 LoRA 文档只列了 [klein] 系列。

让人以为可以,主要有三个原因:

  • “FLUX.2 支持 LoRA”这句话对整个家族成立,对 [pro] 不成立。BFL 的 FLUX.2 LoRA 推理文档只提供 [klein] 的 -finetuned 端点,没有 [pro]、[max]、[flex] 的对应端点。
  • fal 的 LoRA 端点 ID 是 fal-ai/flux-2/lora,名字里不带型号,页面说明才写明它跑的是 FLUX.2 [dev]。
  • 一些第三方介绍页把“FLUX 2 Pro 支持 LoRA 微调”当成卖点,这和上面两份第一方参数表对不上。

BFL 在 2026 年 10 月 1 日又发布了 FLUX 3 Image。这里的结论只针对 FLUX.2,新模型能不能用 LoRA 要看它自己的文档;FLUX.2 各端点仍在价目表上照常计价。

三条路线怎么选:先看 SKU 数量和每款出图量

每款商品只出几张图时,LoRA 的训练成本摊不下来,用 [pro] 加参考图;同一个对象要出几百张以上时,LoRA 的单张价格更低,才值得训练。

SKU 多、每款几张:选 FLUX.2 [pro] + 参考图。不用训练,新品上架当天就能进工作流,商品图直接从表格里的图片链接传进去。以 100 个 SKU、每款 5 张为例,500 张 × $0.045 = $22.50;同样的量如果每款都在 fal 上训练一个 LoRA,光训练费就是 100 × $6.40 = $640。

少量主打款,或者要统一的品牌风格:LoRA 更合适。一个 LoRA 学的可以是一件商品,也可以是一种拍摄风格(固定的布光、背景、色调),后者能跨 SKU 复用,摊薄得更快。

用 LoRA 时选 BFL 还是 fal:

  • 想把充值、账单、密钥都留在 BFL 一处,并且手头有显卡,走 [klein] -finetuned 端点。它在公测期,BFL 明确说价格、参数和端点名在正式发布前都可能调整;每次请求只能用 1 个 LoRA。
  • 不想自己搭训练环境,或者需要同时叠加“商品 LoRA + 风格 LoRA”,走 fal:训练和推理都是 API 调用,loras 数组最多放 3 个。

三条路线跑的是三个不同的模型,价格表比不出画质。换路线之前,用同一款商品在两边各出一小批对比,再决定。

n8n 工作流骨架:提交、等待、轮询、下载四步通用

BFL 和 fal 的图片接口都是异步的:提交请求只返回一个任务地址,图片要稍后去取。所以 n8n 里不能只放一个 HTTP Request 节点,需要下面这条链路。

n8n 调用 FLUX.2 的四个节点:提交任务、Wait 等待、查询状态不是 Ready 就回到等待、下载保存,BFL 并发上限 24 个
顺序节点作用关键设置
1表格或触发器读入商品行每行至少有商品图链接、场景提示词、SKU 编号
2Loop Over Items分批处理Batch Size 先设 1,跑通后再加大
3HTTP Request(提交任务)POST 到生成端点Header Auth 凭证,JSON 请求体
4Wait暂停几秒Resume 选 After Time Interval
5HTTP Request(查询状态)GET 任务地址地址取自第 3 步的返回值
6If判断是否完成未完成回到 Wait,失败走错误分支
7HTTP Request(下载图片)GET 图片地址Response Format 选 File
8存储节点写入网盘或对象存储,回填表格文件名带 SKU 编号

凭证:BFL 用 x-key,fal 用 Authorization: Key

BFL 和 fal 都用请求头传密钥。在 HTTP Request 节点的 Authentication 里选 Generic Credential Type,再选 Header Auth,新建两个凭证:

  • BFL:Name 填 x-key,Value 填 API Key。
  • fal:Name 填 Authorization,Value 填 Key 加上你的 FAL Key(Key 后面有一个空格)。

把密钥放在凭证里而不是写进请求头字段,导出或分享工作流时才不会泄露。

提交任务:POST 之后拿到的是轮询地址

以 BFL 为例,提交节点的 Method 选 POST,URL 填 https://api.bfl.ai/v1/flux-2-pro,打 开 Send Body,Body Content Type 选 JSON。成功后返回的 JSON 里有 id、polling_url,以及这次请求的 cost、input_mp、output_mp。把 cost 一并写回表格,对账时用得上(1 个 credit 等于 $0.01)。

BFL 的接入说明要求:用 api.bfl.ai、api.eu.bfl.ai 或 api.us.bfl.ai 提交时,必须用返回的 polling_url 去查状态,不要自己拼地址。

Wait、查询状态与 If:循环到 Ready 为止

Wait 节点的 Resume 选 After Time Interval。n8n 的 Wait 文档说明,等待时间少于 65 秒时执行数据留在内存里、不落库,轮询用的几秒间隔正好落在这个范围。BFL 的示例代码每 0.5 到 1 秒查一次,文档没有规定最小间隔;在 n8n 里可以先从 3 到 5 秒起步,按实际排队情况再调。

查询状态的节点用 GET,同一个 x-key 凭证,URL 用表达式引用提交节点的输出:

text
{{ $('提交任务').item.json.polling_url }}

这里不能写成 {{ $json.polling_url }}:循环回来之后,进入这个节点的数据是上一次查询的结果,里面没有 polling_url。'提交任务' 换成你给提交节点起的名字。

If 节点判断 {{ $json.status }}:

  • 等于 Ready:走下载分支,图片地址在 result.sample。
  • 等于 Error 或 Failed:走错误分支,把 SKU 编号和返回内容记到表格里,不要重新回到 Wait。
  • 其他状态:连回 Wait 节点,继续等。

再加一个轮询次数上限(例如用 Edit Fields 节点累加计数,超过若干次就走错误分支),避免某个任务卡住时工作流无限循环。

下载保存:BFL 的图片地址 10 分钟后失效

result.sample 是带签名的临时地址,BFL 文档写明有效期只有 10 分钟,不开启 CORS,也不建议直接给终端用户访问。所以表格里不能只存这个链接,必须在同一次执行里把文件下载下来:

  • HTTP Request 节点,GET {{ $json.result.sample }},不需要带凭证。
  • Options 里的 Response Format 选 File,Put Output in Field 保持 data。
  • 后面接你的存储节点(网盘、对象存储或自建服务器),再把自己的文件地址回填到商品行。

如果 n8n 部署在有出站限制的网络里,放行 delivery.*.bfl.ai 这个通配域名,BFL 说明区域前缀会变。

批量:BFL 最多 24 个任务同时进行

BFL 账号同时进行的任务上限是 24 个,超过会返回 429,要等前面的任务结束;余额用完返回 402。Loop Over Items 的 Batch Size 不要超过 24,建议先设为 1,让每个商品完整走完“提交到保存”再处理下一个,确认循环和节点引用都正确后再提高。HTTP Request 节点的 Options → Batching 里还有 Items per Batch 和 Batch Interval(毫秒)可以控制发请求的节奏。

n8n 有公网地址时,也可以不轮询:BFL 请求体支持 webhook_url,fal 的队列接口同样支持回调,Wait 节点的 Resume 选 On Webhook Call 即可。轮询的好处是自建在内网的 n8n 也能用。

路线一:FLUX.2 [pro] 加参考图的请求体

端点 POST https://api.bfl.ai/v1/flux-2-pro。这是固定快照,适合要求结果可复现的批量流 程;/v1/flux-2-pro-preview 指向最新版本。请求体:

json
{
  "prompt": "把图中的保温杯放在浅色木质餐桌上,早晨侧逆光,背景是虚化的厨房,杯身颜色、形状和标签保持不变",
  "input_image": "{{ $json.product_image_url }}",
  "width": 1024,
  "height": 1024,
  "output_format": "jpeg"
}
  • input_image 可以是图片 URL 或 base64;多角度或细节图依次放进 input_image_2 到 input_image_8。BFL 的图像编辑文档写的上限是 API 8 张、Playground 10 张,输出最大 4 MP。
  • 计费按百万像素向上取整,参考图和输出分别计算,1 MP = 1024 × 1024。把白底商品图控制在 1024 × 1024 以内,一张参考图就只算 1 MP。
  • 同一款商品要出多个场景时,只换 prompt,参考图不变;需要复现某张图时把 seed 固定下来。

路线二:BFL 的 [klein] -finetuned 微调端点(公测)

这条路线的 LoRA 要自己准备:按 BFL 的训练指南,用 AI-Toolkit 或 Diffusers 针对 FLUX.2 [klein] Base 模型训练,最低配置是 4B Base 12 GB 显存、32 GB 内存,9B Base 22 GB 显存、64 GB 内存。训练完成后:

  1. 在 BFL Dashboard 的 Customization → Finetunes 里点 Add Finetune,选择对应的基础模型,上传 .safetensors 文件。
  2. Name 只能用小写字母、数字、连字符和下划线,这个名字就是请求里的 finetune_id;可以顺便设一个触发词。
  3. 在 n8n 的提交节点里把 URL 换成与基础模型对应的端点,例如 https://api.bfl.ai/v1/flux-2-klein-9b-finetuned。
json
{
  "prompt": "ohwx 保温杯放在露营桌上,傍晚暖光,浅景深",
  "finetune_id": "my-thermos-lora",
  "finetune_strength": 1.0,
  "width": 1024,
  "height": 1024
}

要注意的限制都写在 LoRA 推理文档里:

  • 端点必须和 LoRA 的基础模型一致。给 9B 训练的 LoRA 调 flux-2-klein-4b-finetuned 会直接失败。可选端点有 flux-2-klein-4b-finetuned、flux-2-klein-9b-finetuned、flux-2-klein-9b-kv-finetuned、flux-2-klein-9b-kv-bf16-finetuned、flux-2-klein-base-4b-finetuned、flux-2-klein-base-9b-finetuned。
  • 每次请求只接受一个 finetune_id,不能叠加多个 LoRA。
  • finetune_strength 默认 1.0。如果不管提示词写什么,出图都像训练集,固定 seed 在 0.7 到 0.9 之间试。设了触发词就要写进 prompt,光调强度不会生效。
  • 其他参数和基础端点相同,包括 input_image,所以 LoRA 和参考图可以一起用;[klein] 的参考图上限是 4 张。
  • 公测期间按基础端点同价计费,轮询方式、10 分钟签名地址和 24 个并发任务的限制也都一样,n8n 骨架不用改。

许可要单独确认:[klein] 4B 的开放权重是 Apache 2.0,9B 是 FLUX Non-Commercial License。基于 9B 训练的 LoRA 通过 BFL API 出图后能否商用,公开文档里没有写明,商用前向 BFL 确认授权条款。

路线三:fal 托管训练,加 FLUX.2 [dev] 的 LoRA 推理

fal 把训练也做成了 API,整条路线不需要显卡。它的队列接口和 BFL 的流程是同一个形状,字段名不同:

步骤BFLfal
提交POST https://api.bfl.ai/v1/{端 点}POST https://queue.fal.run/{模 型 ID}
鉴权头x-keyAuthorization: Key …
提交后返回id、polling_urlrequest_id、status_url、response_url
查询状态GET polling_urlGET status_url
完成标志status 为 Readystatus 为 COMPLETED 且没有 error 字段
取图result.sample再 GET 一次 response_url,取 images[0].url

fal 多一步:状态到 COMPLETED 之后,结果要再请求一次 response_url 才拿得到。另外失败的请求最终状态也是 COMPLETED,只是多了 error 字段,If 节点要同时判断这两个条件。

训练(每个 LoRA 做一次,可以单独建一个工作流):POST 到 https://queue.fal.run/fal-ai/flux-2-trainer。

json
{
  "image_data_url": "https://your-storage.example.com/thermos-dataset.zip",
  "default_caption": "a photo of ohwx thermos bottle",
  "steps": 1000
}

训练端点文档的要求是:image_data_url 指向一个图片压缩包,建议至少 10 张、越多越好;每张图可以配一个同名 .txt 描述,没有配的话必须给 default_caption,否则训练失败。steps 默认 1,000,可设 100 到 10,000,费用是 0.0064 × 步数,1,000 步即 $6.40。结果里的 diffusers_lora_file.url 就是 LoRA 文件地址。fal 没有给出针对商品的数据集或步数建议。

推理:POST 到 https://queue.fal.run/fal-ai/flux-2/lora。

json
{
  "prompt": "ohwx thermos bottle on a camping table, warm evening light, shallow depth of field",
  "loras": [
    { "path": "{{ $json.lora_url }}", "scale": 1 }
  ],
  "image_size": { "width": 1024, "height": 1024 },
  "num_images": 1,
  "output_format": "jpeg"
}
  • fal-ai/flux-2/lora 的 loras 最多 3 个,scale 范围 0 到 4、默认 1;image_size 用预设值或 512 到 2048 像素的自定义宽高;num_images 可以一次出 1 到 4 张。
  • 既要 LoRA 又要带商品参考图,用 fal-ai/flux-2/lora/edit,多一个 image_urls 字段,最多 4 张;输入图会缩到 1 MP 并按 $0.021/MP 另计。
  • LoRA 文件总大小超过 2 GB 后每多 1 GB 加价 50%,上限 5 GB。
  • 许可同样因平台而异:fal 的模型页给这个端点标了 Commercial use,而 BFL 对 [dev] 权重自部署的许可是非商用。在哪里跑,就看哪里的条款。

单张多少钱:1 MP 下 $0.015 到 $0.06,LoRA 的分界在 267 张

按标价算,1 MP 输出、参考图不超过 1 MP 时,三条路线的单张成本在 $0.015 到 $0.06 之间;fal 的 LoRA 要到同一个 LoRA 出图 267 张以上,才比 [pro] 加一张参考图便宜。

路线与配置(输出 1 MP)单张500 张
BFL [pro],纯文字$0.03$15.00
BFL [pro] + 1 张参考图$0.03 + $0.015 = $0.045$22.50
BFL [pro] + 2 张参考图$0.06$30.00
BFL [klein] 9B -finetuned,纯文字$0.015$7.50(不含自己训练的硬件和电费)
BFL [klein] 9B -finetuned + 1 张参考图$0.015 + $0.002 = $0.017$8.50
fal [dev] LoRA,纯文字$0.021$10.50,另加每个 LoRA $6.40 训练费
fal [dev] LoRA + 1 张参考图$0.021 × 2 = $0.042$21.00,另加训练费
FLUX.2 Pro 加一张参考图与 fal LoRA 的成本公式对比:同一个 LoRA 出图 267 张起更便宜,500 张时为 $22.50 对 $16.90

分界线这样算。设同一个 LoRA 一共出 n 张图:

text
fal LoRA 总成本    = 6.40 + 0.021 × n
[pro] + 1 张参考图 = 0.045 × n

6.40 + 0.021n < 0.045n  →  n > 6.40 ÷ 0.024 ≈ 266.7

两侧代入核对:n = 266 时,LoRA 是 $11.986,[pro] 是 $11.97,[pro] 便宜;n = 267 时,LoRA 是 $12.007,[pro] 是 $12.015,LoRA 便宜。所以分界在每个 LoRA 267 张。

这个数只在所列前提下成立:1 MP 输出、一张不超过 1 MP 的参考图、训练 1,000 步、双方现行标价。步数加到 2,000,训练费变成 $12.80,分界升到 534 张(12.80 ÷ 0.024 ≈ 533.3);输出分辨率、参考图数量变了,也要重新代入。它也没有计入废片重跑、准备数据集的人工,以及三个模型之间的画质差异,只能用来做预算,不能当成“超过 267 张就该换路线”的结论。

跑批量之前,把计划张数乘以对应单价,再和 BFL 返回的 cost 字段核对头几条,数字对得上再放开批量。

哪些结果不能直接上架:logo、标签文字和小字要人工抽检

参考图和 LoRA 都只是让模型尽量贴近你的商品。BFL 的文档没有承诺 logo、标签文字、配料表这类小字能和原图逐字一致,生成结果在这些地方出错时,一眼扫过去往往看不出来。

在工作流里留一个人工环节,比事后撤图便宜:

  • 存储节点之后,把表格里的状态写成“待审核”,而不是直接推到店铺或投放平台。
  • 抽检时对着原图看四处:logo 的字形和位置、标签上的文字、颜色、商品的形状和比例(瓶盖、把手、接口这类细节)。
  • 带法规信息的包装(成分、规格、认证标志)不要用生成图替代实拍,生成图只用来做场景和氛围。
  • 不合格的图换 seed 重跑,或者增加一张细节参考图;用 LoRA 的路线可以再把 finetune_strength 或 scale 调一档。

相邻的几个问题

FLUX.2 [pro] 不用 LoRA,怎么让商品保持一致?

用参考图。把商品的白底图放进 input_image,需要时再加不同角度或细节图,API 最多 8 张,在提示词里写明哪些特征保持不变。每多一张不超过 1 MP 的参考图,BFL 多收 $0.015。

n8n 调用 FLUX.2 需要专门的 BFL 节点吗?

不需要专用节点。三条路线都用 n8n 自带的 HTTP Request 节点加 Header Auth 凭证实现,配合 Wait、If 和 Loop Over Items 完成轮询;BFL 和 fal 的接口都是普通的 HTTPS 请求。

不想调 API,想在本地 ComfyUI 里跑 FLUX 和 LoRA,可以吗?

可以,但那是另一种部署方式:模型和 LoRA 都在自己的显卡上运行,n8n 调的是你的 ComfyUI 服务而不是 BFL 或 fal。本地环境的搭建可以参考ComfyUI FLUX 完整指南:8GB显存也能运行的AI绘画神器(2025最新),注意那篇写的是 FLUX.1 时期的模型。

产品图一定要用 FLUX.2 吗?

不一定。如果还没定模型,先按任务比较几家的编辑能力、文字渲染和价格,见2026 图片模型怎么选:GPT Image 2、Nano Banana、Midjourney、FLUX.2 与 Seedream。