← 部落格

GLM-5 AI圖像與影片提示詞編排

在WaveSpeed上使用GLM-5作為推理層,為圖像和影片模型生成、優化並串聯提示詞。

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 月,三個工作時段):

  • 第一步,角度設定:GLM-5 提出了五個帶有明確距離和高度的攝影角度(例如:高度 1.2m、後退 0.6m、俯角 35°)。這種具體性很重要,它讓不同變體的構圖保持一致。
  • 第二步,紋理控制:對於亞麻布,GLM-5 建議避免強烈的側光,以防放大時出現摩爾紋。它並不總是對的,但這個謹慎的建議救了一個噪點嚴重的拍攝。
  • 第三步,影片交接:轉移到 WAN 2.5 時,它把主要靜態圖當作「第零幀」。它傳遞了鏡頭、白平衡和曝光補償。驚喜大幅減少。
  • 第四步,合理性檢查:每兩次渲染,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 坐落在你的筆記和模型端點之間,負責翻譯並記錄分數。