使用指南
FLUX 3 提示词配方:可直接复制粘贴的视频生成示例
用于场景设置、镜头运动和音频提示的实用提示词模式
为什么配方式提示词比自由式提示词效果更好
自由式提示词让人感觉很有成效,因为你可以把脑子里想的任何内容都打出来。但它也是生成无法复现结果的最快方式。当一段视频返回结果不对时,你没有任何干净利落的方法来判断是一段六十词文字里的哪一部分导致了问题。
配方是带固定槽位的提示词。每次请求都按相同顺序填写相同字段,因此两次运行之间唯一变化的就是你刻意改动的那一项值。这带来三个实际好处:
- 更低的方差。 场景和风格使用稳定措辞,意味着模型不会在每次调用时重新解读你的意图。
- 更快的调试。 如果镜头不对,你只需查看镜头槽位——而不是整段字符串。
- 可复用性。 为产品镜头搭建的配方,换一个主体重新填写后仍能表现可预测。
把配方当作视频生成的一套小型内部 DSL。你写一次模板,然后在请求时传入值。本指南的其余部分将逐槽构建这套 DSL,并提供可复制粘贴、可适配你自己主体的示例。
FLUX 3 提示词配方的结构
一个可靠的 FLUX 3 配方有六个槽位,按固定顺序组合。顺序很重要:靠前的槽位设定画面,靠后的槽位对其进行细化。
- 主体 —— 镜头拍的是什么,带有具体的视觉属性。
- 环境 —— 事情发生在哪里:地点、一天中的时间、天气、背景元素。
- 风格 —— 外观:光照质感、色彩搭配、镜头特性、渲染意图。
- 运动 —— 画面内部有什么在动,以及如何动。
- 镜头 —— 视角本身如何移动,或者保持静止。
- 音频 —— 应伴随视频片段的氛围声和离散音效。
一个通用模板如下所示:
Subject: <one clear subject with 2-3 visual attributes>
Environment: <location, time of day, background detail>
Style: <lighting, palette, lens and render character>
Motion: <what moves, direction, speed, and continuity>
Camera: <static or the exact camera move>
Audio: <ambient bed>; <discrete action sounds>
每个槽位保持在一到两个短句。槽位值过长是细节丢失最常见的原因,因为靠后的短句会与靠前的短句争夺注意力。如果一个槽位需要超过一句话,它通常包含两个想法,应当拆分到不同的槽位或不同的运行中。
场景设置配方
在做任何动画之前,先确认基础场景。将运动和镜头设为极小值或静态值进行生成,检查主体、环境和风格是否协调一致。静态时就错误的场景,动起来也不会变好。
配方:室内产品场景
Subject: a matte ceramic mug, rounded handle, faint speckled glaze
Environment: a wooden kitchen counter, soft morning light from a window on the left, blurred shelves behind
Style: natural light, warm neutral palette, shallow depth of field, photorealistic
Motion: none
Camera: static
Audio: quiet room tone
配方:室外定场镜头
Subject: a lone stone lighthouse on a low cliff
Environment: overcast coastal evening, wet rocks, distant whitecaps, heavy cloud layer
Style: desaturated cool palette, wide lens, cinematic realism
Motion: none
Camera: static
Audio: steady wind, distant surf
让场景槽位保持稳定的要素
- 用可计数的属性锚定主体。 “圆润手柄”和“斑点釉面”比“漂亮的杯子”更能缩小范围。
- 指明光源和方向。 “来自左侧的柔和晨光”是可检查的;“良好的光照”则不是。
- 把背景描述为按深度分离的层次。 前景、中景和背景的措辞可以防止画面塌缩成平面的背景板。
- 在系列中保持风格槽位一致。 如果两个片段需要剪辑在一起,请复用完全相同的风格值。
一旦静态场景读起来正确,你就可以冻结主体、环境和风格槽位,将它们视为常量,同时调整运动。
运动和镜头语言配方
最常见的提示词失败是把主体运动和镜头运动混在一句话里。“当模特转向镜头时缓慢推近”在一个短句中包含两个变量,你无法判断模型遵循了哪一个。
把它们拆开。运动描述画面内部发生了什么。镜头描述视角如何表现。分别调试它们:用静态镜头改变运动,然后用固定主体改变镜头。
运动措辞模式
Motion: the steam above the mug drifts up and slightly right, slow and continuous
Motion: the flag ripples in short gusts, fabric folding toward the viewer
Motion: the subject turns their head from left to right over the shot, unhurried
有用的运动词汇:drifts、ripples、swells、settles、sweeps、pulses、unhurried、continuous。将一个动词与方向和节奏搭配,你就能得到可复现的结果。
镜头措辞模式
Camera: static, locked-off tripod shot
Camera: slow dolly in, ending close on the subject
Camera: gentle pan left to right, constant speed
Camera: slow orbit around the subject, keeping it centered
Camera: slight handheld sway, no travel
经验法则
- 每个镜头只做一个运动。 一个片段里两个镜头运动通常会产生介于两者之间且两者都不像的结果。
- 对有目标的运动说明终点。 “推近,结束时靠近手柄”给了模型一个目的地。
- 明确说“静态”。 空的镜头槽位是在邀请未经请求的漂移。
- 保持速度副词一致。 如果一个系列处处使用“缓慢”,不要在一个片段中切换到“快速”却期望其他地方节奏匹配。
当片段表现异常时,把同一配方运行两次:一次将运动归零、镜头激活,一次将镜头设为静态、运动激活。出问题的那个槽位就是你的 bug。
原生音频提示配方
音频是一个槽位,而不是事后补充。像写场景一样在提示词中写它:描述性、具体,并按突出程度排序。
将音频结构化为氛围底层声,然后是离散事件,用分号分隔:
Audio: <continuous background sound>; <one-off action sound>; <one-off action sound>
配方:氛围主导的片段
Audio: low room hum with faint refrigerator cycling; a single ceramic clink near the middle
配方:环境主导的片段
Audio: layered coastal wind, distant surf rolling in and out; one sharp gull call early
写出能落地的提示
- 指明来源,而非情绪。 “风吹过干草”是可渲染的;“宁静的氛围”则不是。
- 谨慎但刻意地使用时间词。
near the middle、early、at the end将提示映射到片段中的某个时刻。 - 将氛围与事件分开。 一个连续的底层声加上一两个点缀音效,比五个同等权重的噪音列表读起来更清晰。
- 保持底层声与场景在类型上一致。 室外悬崖镜头配室内房间底噪是一种矛盾,模型必须以某种方式解决它。
如果音频槽位承担了太多内容,在调整运动之前先削减它。声音通常是最容易简化的槽位,也是判断配方是否被过度指定的最快信号。
迭代配方:一次只改一个变量
迭代纪律是区分提示词工程师和反复重掷直到看起来还行的人的关键。
循环
- 冻结基线。 完整保存当前配方并记录其输出。
- 只改一个槽位。 不是一个句子——一个槽位。从“Camera: static”改为“Camera: slow dolly in”是一次改动。
- 生成并与基线对比,使用相同主体和场景。
- 记录差异。 如果有所改善,将该改动提升到基线配方中。
- 重复,直到配方对你目标镜头类型稳定有效。
实用习惯
- 每个配方系列保留一个草稿文件。 记录你改了什么,以及什么出现了可见差异。
- 批量测试一个槽位的三个变体,而不是三个槽位各一个变体;每次生成你能学到更多。
- 积极回退。 如果一项改动在两次运行后仍然模棱两可,就放弃它。模棱两可的改进是等待累积的回归。
- 任何槽位改动后重新测试,即使是你没碰过的槽位。槽位通过注意力相互作用,更大的运动短句可能会挤占场景细节。
配方完成的标准不是某一个片段看起来不错,而是同一模板的三个不同填充都看起来正确。
在代码中版本化和复用提示词配方
将配方存储为结构化数据,而不是散落在代码库各处的字符串。每个配方一个小型 JSON 或 YAML 文件,可以免费获得差异对比、模板化和回滚能力。
{
"id": "product-mug-v3",
"slots": {
"subject": "a matte ceramic mug, rounded handle, faint speckled glaze",
"environment": "wooden kitchen counter, soft morning light from the left, blurred shelves behind",
"style": "natural light, warm neutral palette, shallow depth of field, photorealistic",
"motion": "steam drifts up and slightly right, slow and continuous",
"camera": "static, locked-off tripod shot",
"audio": "low room hum; a single ceramic clink near the middle"
}
}
在请求时按固定槽位顺序组合提示词,这样你就永远不会手工拼接字符串:
def compose(recipe):
slots = recipe["slots"]
return "\n".join([
f"Subject: {slots['subject']}",
f"Environment: {slots['environment']}",
f"Style: {slots['style']}",
f"Motion: {slots['motion']}",
f"Camera: {slots['camera']}",
f"Audio: {slots['audio']}",
])
版本化规则
- 任何行为变化都提升 id。
product-mug-v2到product-mug-v3告诉你哪些片段来自哪个配方。 - 在文件旁边保留变更日志。 每个版本一行:哪个槽位变了,以及为什么。
- 一旦某个版本产出了已发布的输出,就绝不要原地编辑它。 添加新版本,并保留旧版本以供比较。
- 发送前验证必需槽位。 缺失的音频槽位对输出的静默改变比你预期的更大。
配方纳入版本控制后,回归问题就变成了 git bisect 问题,而不是记忆测试。
将配方投入流水线
配方之所以能扩展,是因为它们是数据。这使得它们很容易被送入自动化生成工作流。
流水线形态
- 配方存储 —— 版本化的配方文件,每个镜头系列一个。
- 填充步骤 —— 将每次运行的变量(主体、产品名称、地点)注入冻结的槽位。
- 组合步骤 —— 按固定槽位顺序渲染提示词。
- 生成步骤 —— 通过 HiAPI.ai 统一 API 发送给 FLUX 3,并将配方 id 与请求一起记录。
- 质量检查 —— 自动化审查加上针对配方自身验收标准的抽查。
- 记录 —— 将输出引用、配方 id 和任何每次运行的变量一起存储。
批量处理指南
- 按配方批量处理,而不是按主体。 共享模板的运行更容易比较,推理成本也更低。
- 调优时限制每个配方的并发数;不稳定配方的并行运行只会放大噪音。
- 复用常量。 主体、环境和风格槽位通常在一批中共享;只有运动和镜头因镜头而异。
真正能发现问题的质量检查
- 槽位保真度: 输出是否包含指定的主体属性和指定的光照方向?
- 单一运动测试: 如果镜头移动,它是你要求的那一个运动吗?
- 音频匹配: 氛围底层声是否存在,离散提示是否大致位于你放置的位置?
- 剪辑兼容性: 序列中相邻片段是否共享色彩搭配和节奏?
从一个配方、一个主体和静态镜头开始。确认场景,分层加入运动,添加音频底层声,然后自动化。无论你是手动生成一个片段,还是在流水线中生成一百个,配方格式都保持不变。