GLM-5 用于 AI 图像与视频提示词编排
将 GLM-5 作为推理层,为 WaveSpeed 上的图像和视频模型生成、优化并串联提示词。
嘿,我是 Dora。我当时想把一个模糊的创意——“亚麻桌布上的哑光陶瓷马克杯,晨光洒落”——变成一段简短的产品视频。脑海中的画面没问题,提示词却一团糟。我在图像、视频和放大工具之间反复横跳,反复修改那些细微措辞,而这些细微改动又总是让结果天翻地覆。整个过程感觉像在拼碎片。
我尝试把 GLM-5 嵌进这团混乱的中间——不是让它唱主角,而是让它当白板前负责梳理思路的人。我的目标很简单:把 GLM-5 当作图像和视频模型的提示词编排器。我笔记里反复出现的一个短语是”GLM-5 图像视频提示词”,因为这就是它的任务:接收一段普通的描述,然后可靠地将其转化为下游模型能够理解的提示词。
为什么图像/视频流水线需要一个强大的 LLM
我不需要一个模型包揽所有事情。我需要的是一个模型能够清晰、始终如一地表达内容。这才是视觉流水线成败的关键。
对于图像和视频来说,细微的措辞会带来巨大的输出差异——镜头距离、焦距、材质形容词,甚至它们出现的顺序都会产生影响。如果你曾经在末尾加上”漫射背光”,然后看到整体氛围骤然改变,就能体会那种感觉。
以前我会为每个工具手工打磨提示词:FLUX 一套,WAN 一套,放大工具又是另一套。虽然有效,但无法扩展,而且极度消耗注意力。在中间放一个强大的 LLM,能为我做三件事:
- 语言规范化:将随意的描述转化为每个模型都能理解的结构化格式。
- 添加护栏:约束风格和技术参数,防止变体之间产生漂移。
- 保持记忆:在不同工具之间传递选择(镜头、调色板、产品备注),无需我重复输入。
这不是为了节省几分钟的打字时间,而是为了省下那些吞噬一个工作时段的小判断。当 GLM-5 保持结构稳定时,我能清晰地看到变化——什么改变了,以及为什么。
GLM-5 作为提示词编排器
我没有去刻意寻找什么功能。我只是问:GLM-5 能不能接收我的普通描述,为对应模型塑造成形,并在各步骤之间追踪所有内容?以下是实际操作的样子。
从自然语言描述生成 FLUX 提示词
第一步:给 GLM-5 喂一段简短的自然语言描述,让它生成一个 FLUX 就绪的提示词,包含明确字段——主体、镜头、光线、材质、背景、色彩约束、负向提示词。我借鉴了 FLUX 模型说明和一些公开的提示词指南的结构,然后故意把它做得平淡无奇。平淡意味着可重复。
一个小惊喜:GLM-5 很擅长悄悄推断缺失的细节(比如当我忘了选焦距时,它会自动补充等效 50mm)。我让它把假设标注出来,这样我可以接受或拒绝。这省去了几轮来回确认。
不太顺利的地方:GLM-5 有时会默认使用我不想要的华丽形容词(比如”空灵的""令人惊叹的”)。我加了一条规则——“只用具体的、以摄影为先的语言”——浮夸措辞就消失了。
链路:GLM-5 提示词 → WAN 2.5 视频 → 放大
图像提示词稳定后,我让 GLM-5 将其转化为 WAN 2.5 的视频提示词。这种映射并非一对一。视频需要动作、时序以及图像提示词不涉及的约束条件。我从 WAN 文档中提取了一个简单模板,让 GLM-5 填充:动作节拍、镜头运动(或无运动)、时长、主体动作,以及确保首帧能与图像渲染结果匹配的连续性备注。
两点野外记录:
- 如果让 GLM-5 默认添加镜头运动,WAN 2.5 有时会过度动画化场景。将运动锁定到单轴或保持静止,能得到更干净的循环。
- 图像和视频之间的色温匹配,比我预期的更重要。我让 GLM-5 在步骤之间传递数值白平衡目标(比如 5200K)。
对于放大环节,我保持简单和确定性:提示词仅针对纹理意图(哑光 vs 光泽)、噪点容忍度和锐化偏好。简单的引导带来更少的伪影。
批量提示词扩展用于 A/B 测试
在这里,GLM-5 最像一个同事。我会让它生成五个微变体,每个变体只改变一个参数:焦距、桌面纹理、一天中的时间或饱和度范围。不要诗意的改写,只要每个变体有一个干净的增量差异。它会标注每个变体的原因和预测风险(比如”可能引入镜面高光”)。
起初并没有节省时间——我仍然需要从好的里面筛选坏的。但到了第三批次,我注意到心智负担降低了。这种结构让比较变得客观,我能真正看出哪个选择胜出,而不只是哪个提示词听起来更好听。
智能体工作流:GLM-5 规划多步骤生成
我没有开启”智能体模式”然后走开。我让 GLM-5 规划步骤、核实假设,然后等待我的确认。一个简单的循环:规划 → 提议提示词 → 获取我的修改 → 执行 → 总结。
提前给 GLM-5 一个小检查清单很有帮助:
- 用一句话阐明目标。
- 询问未知项(镜头、调色板、动作)。
- 生成图像的初稿提示词,然后转化为视频提示词。
- 维护一个共享约束块:产品 SKU 备注、品牌色彩、宽高比、最大动作幅度。
- 每次渲染后,记录改变了什么以及保留什么。
示例:产品拍摄 → 5 个角度 → 视频
我用一个简单的产品拍摄试验了这个方案:一个陶瓷马克杯,亚麻桌布,柔和晨光。任务:从不同角度拍摄五张静图,然后制作一段 6–8 秒的循环视频。
我观察到的情况(2026 年 2 月,三次工作会话):
- 步骤 1,角度集合:GLM-5 提出了五个带有明确距离和高度的镜头角度(例如,高度 1.2m,后退 0.6m,俯角 35°)。这种具体性很重要,它让各变体之间的构图保持一致。
- 步骤 2,纹理控制:对于亚麻布,GLM-5 建议避免强烈侧光以防放大时出现摩尔纹。它并不总是对的,但这个谨慎的建议避免了一次噪点严重的废片。
- 步骤 3,视频交接:切换到 WAN 2.5 时,它把主要静图当作”第零帧”,传递了镜头参数、白平衡和曝光补偿,意外情况更少了。
- 步骤 4,健全性检查:每两次渲染,GLM-5 会总结漂移情况:“暖调 +6%,阴影加深,引入了反射。“这些小备注让我更容易判断何时停止。
局限性:我没有让 GLM-5 选择音乐或超出动作备注范围的节奏节拍。当它试图”发挥创意”时,会添加一些不适合产品的手势动作。在这里,克制更管用。
提示词质量对比:GLM-5 vs GLM-4.7 输出
我把同一段自然语言描述分别输入 GLM-4.7 和 GLM-5,然后不加修改地使用输出结果。这不是实验室测试,只是我在截止日期前会做的那种快速试验。
我使用的描述:“亚麻桌布上的哑光陶瓷马克杯,柔和晨光,中性色调,无品牌标识。干净、安静、真实。”
我观察到的:
- 结构规范性:GLM-5 更频繁地遵守了既定结构。GLM-4.7 会漂移成风格化短语(“梦幻的""优雅的”),这些词把 FLUX 推向了生活方式摄影的感觉。GLM-5 坚持使用镜头、光线、材质等描述。
- 数值锚点:GLM-5 提供了适度的数值默认值(35mm、f/4、5200K),并将其标注为假设。GLM-4.7 倾向于跳过数字,除非被明确要求。
- 负向提示词:GLM-5 包含了实用的负向提示词(“散景光斑、光泽高光、长焦压缩”),减少了我测试图像中的伪影。GLM-4.7 的负向提示词比较泛泛。
- 转化为视频:GLM-5 添加了简单的动作脚本和时序;GLM-4.7 基本上只是在图像提示词后面加上”短视频”。WAN 2.5 对 GLM-5 的时序把握得更好。
一个小小的反驳:GLM-4.7 有时会生成一个听起来更好听的提示词,以我的眼光来看,用于情绪板效果不错。如果你处于概念阶段,那种语调可能有用。但对于生产交付,我更倾向于 GLM-5 的克制。
这些经历给了我一些语言模式,让 GLM-5 能够可靠地重复使用。
代码示例 —— 使用 WaveSpeed SDK 的完整流水线
以下是一个精简示例,展示我使用的工作流程框架。请替换为你自己的密钥和端点。我在 2026 年 2 月 9 日运行了这个的一个变体版本。它不够优雅,但足够可靠。
# pip install wavespeed sdk hypothetical
from wavespeed import GLM5, Flux, WAN25, Upscaler
glm = GLM5(api_key=GLM5_KEY)
flux = Flux(api_key=FLUX_KEY)
wan = WAN25(api_key=WAN_KEY)
up = Upscaler(api_key=UPSCALE_KEY)
brief = {
"subject": "muted ceramic mug on a linen table",
"mood": "soft morning light, neutral palette",
"constraints": {"aspect_ratio": "4:5", "brand_colors": ["#E8E4DA", "#8D8A83"]}
}
# 1) 让 GLM-5 将描述规范化为 FLUX 格式
flux_prompt = glm.generate(
system="Return a FLUX-friendly prompt with fields: subject, camera, lighting, materials, background, color, negatives. "
"Photography-first, numeric where helpful, minimal adjectives. Label assumptions.",
user=brief,
format={
"type": "object",
"properties": {
"subject": {"type": "string"},
"camera": {"type": "object"},
"lighting": {"type": "object"},
"materials": {"type": "object"},
"background": {"type": "string"},
"color": {"type": "object"},
"negatives": {"type": "array", "items": {"type": "string"}},
"assumptions": {"type": "array"}
},
"required": ["subject", "camera", "lighting", "negatives"]
}
)
# 2) 图像渲染
img = flux.generate_image(prompt=flux_prompt, seed=4217, steps=30, guidance=3.5)
# 3) 转化为 WAN 2.5 视频提示词
wan_prompt = glm.generate(
system="Translate the FLUX prompt into a WAN 2.5 prompt. Include: duration 6-8s, motion beats, camera movement (static or gentle pan), "
"continuity with the image (lens, white balance), and a list of negatives.",
user={"flux_prompt": flux_prompt, "reference_frame": img.preview_url}
)
vid = wan.generate_video(prompt=wan_prompt, seed=4217, fps=24, duration=7)
# 4) 放大,控制锐化和噪点
final = up.enhance(
input=vid.keyframe(0),
noise_reduction="low",
sharpening="moderate",
texture_bias="matte"
)
# 5) 记录漂移摘要
drift = glm.generate(
system="Summarize differences between target brief and outputs. 3 bullets: warmth, contrast, motion.",
user={"brief": brief, "image": img.metrics, "video": vid.metrics}
)
print(drift)
我把 LLM 提示词放在代码旁边,这样未来的我能看到当初做出某个选择的原因。如果你更喜欢 YAML 模板,也完全可以。重要的是 GLM-5 返回结构化字段,你可以直接传给渲染函数,无需编辑。
几个有用的小护栏:
- 在找到满意的基础效果之前,固定所有随机种子。之后只在你想要变化的地方释放种子。
- 用数值而不是”感觉”来传递白平衡。
- 让 GLM-5 列出假设,在渲染前让你接受或拒绝。
如果你的技术栈不使用 WaveSpeed,这个思路同样适用。LLM 坐在你的备注和模型端点之间,负责翻译和追踪记录。



