← 博客

GLM-5 用于 AI 图像与视频提示词编排

将 GLM-5 作为推理层,为 WaveSpeed 上的图像和视频模型生成、优化并串联提示词。

3 min read
GLM-5 用于 AI 图像与视频提示词编排

嘿,我是 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.7GLM-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 坐在你的备注和模型端点之间,负责翻译和追踪记录。