Stable Diffusion 提示詞產生器 LLM:Python 設定 LLM:Python 設定
若你想讓 Stable Diffusion 提示詞產生器 LLM:Python 設定 LLM 將幾個字擴展為結構完整的提示詞,只需一個文字模型與約三十行 Python 程式碼。該模型以文字形式撰寫提示詞;它不渲染圖片,因此你仍需將結果透過 SDXL 或你使用的其他影像工具處理。


重點摘要
- LLM 僅產生文字。將其輸出餵入你自己的 SDXL、ComfyUI 或 Automatic1111 設定。
- JSON 模式會回傳一個正向提示詞與一個負向提示詞,你可以直接解析而不需要 regex。
- 一次擴展成本低於 $0.0001,因此 1,000 筆提示詞成本約為 $0.09。
- 保持提示詞簡潔:SDXL 的文字編碼器只會讀取每個區塊的前 77 個 token。
LLM 能做什麼與不能做什麼
影像模型對密集且具體的提示詞反應良好:包含主體、場景、鏡頭、燈光、媒介、情緒以及要避免的事物清單。多數人輸入三個字,結果卻單調乏味。LLM 能透過接收你的簡短想法並以一致格式撰寫長版提示詞來彌補此差距。
清楚說明分工。此服務是一個 純文字 API。它不生成圖片、音訊或影片,也沒有嵌入或微調功能。它位於你的影像管線前方,並撰寫該管線讀取的指示。它是來自獨立供應商的單一開放權重模型的 OpenAI 相容端點,並非任何影像模型廠商的產品。
該模型針對合法成人用途調整,可無內容審查地回答,這對藝術家與遊戲開發者很重要,因為他們的主題(恐怖、虛構暴力、成熟主題)在其他地方常被封鎖。禁止涉及未成年人的性內容是硬性限制,且絕不會產生。
步驟 1:取得金鑰並測試一次呼叫
使用 Google 或電子郵件與密碼註冊,然後開啟 API 金鑰頁面。一鍵試用會加入 $0.50 的額度,有效期為 7 天且不需要卡片。如費用區塊所示,這足夠進行數千次的提示詞擴充。
使用 curl 檢查一切是否正常運作:
curl https://api.sdxlapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "system", "content": "You write Stable Diffusion prompts."},
{"role": "user", "content": "lighthouse in a storm"}
]
}'
一旦你更改 Base URL 和金鑰,任何 OpenAI SDK 均可運作。詳細資訊請見 文件。
步驟 2:提供穩定輸出的系統提示詞
系統提示詞是品質的來源。告訴模型目標格式、元素順序、長度限制以及應省略的內容。以下是一個效果良好的起始版本:
你將簡短的影像想法轉換為 SDXL 的提示詞。撰寫一個 40 到 60 個字詞的正向提示詞:先寫主體,接著是場景、構圖、光影、媒介或風格,以及情緒。使用逗號分隔的短語,不要使用完整句子。然後撰寫最多 15 個短語的負向提示詞。不要在圖片中加入文字、浮水印或標題。回傳包含 "prompt" 和 "negative" 鍵的 JSON。
字數限制很重要。SDXL 的 CLIP 文字編碼器以 77-token 區塊讀取提示詞,超出部分會被截斷或由 UI 中的分塊功能處理。目標為 40 至 60 個字,可讓大部分提示詞保持在單一區塊內,並將最重要的細節置前。
使用低到中等的溫度(0.7 至 0.9),讓風格保持一致,但同一想法的兩次執行結果會有所不同。若需要測試時輸出完全相同,請傳入固定的 seed。
步驟 3:Python 腳本
此腳本從清單讀取想法,要求 JSON,並列印提示詞配對。它使用官方 OpenAI Python 套件,並更改 Base URL。
import json
from openai import OpenAI
client = OpenAI(base_url="https://api.sdxlapi.com/v1", api_key="YOUR_KEY")
SYSTEM = (
"You turn short image ideas into prompts for SDXL. Write one positive "
"prompt of 40 to 60 words: subject, setting, composition, lighting, "
"medium or style, mood, as comma-separated phrases. Then a negative "
"prompt of up to 15 short phrases. Return JSON with keys "
"'prompt' and 'negative'."
)
def expand(idea: str) -> dict:
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": SYSTEM},
{"role": "user", "content": idea},
],
response_format={"type": "json_object"},
temperature=0.8,
max_tokens=400,
)
return json.loads(resp.choices[0].message.content)
for idea in ["lighthouse in a storm", "abandoned greenhouse at dawn"]:
result = expand(idea)
print(idea, "->", result["prompt"])
print("negative:", result["negative"], "\n")
JSON 模式(response_format 設為 json_object)可讓回覆內容易於解析。在生產環境中,仍應將 json.loads 包裹在 try 區塊內,若解析失敗則重試一次,因為回覆過長而在 max_tokens 處截斷時,可能會導致物件未完整結束。
步驟 4:將提示詞傳送給你的影像工具
輸出為純字串,因此任何前端均可接收。對於本機 Automatic1111 或 ComfyUI 安裝,請將兩個欄位發布至其 API。對於遍歷想法 CSV 的腳本,請將結果寫入檔案並排入批次佇列。
- 將想法、提示詞與負面提示詞一起儲存,以便追溯好圖片是由哪條指示產生的。
- 當你希望系列作品具有相符的外觀時,請在使用者訊息中新增來自你自己清單的風格行("cinematic photograph"、"ink illustration")作為額外欄位。
- 保留一個有效提示詞的短庫,並將兩三個提示詞餵入系統提示詞作為範例。少樣本引導風格比形容詞更可靠。
對於角色扮演或遊戲專案,相同的模式可以用來說明故事場景,由 LLM 將最後幾段文字轉化為視覺描述。基於文字的角色扮演情境文章涵蓋了故事面向。
常見問題與解決方案
幾乎每個提示詞產生器專案都會遇到一些問題。
模型會加入評論
以「這是你的提示詞」開頭的回應會破壞管線。JSON 模式可消除大部分此類情況。若使用純文字,請指定「僅輸出提示詞,不得包含前言」,並加入一個你永遠不想看到的行作為停止序列。
每個提示詞看起來都一樣
低溫度和嚴格模板會產生一致結果。將溫度提高至 1.0、變更你傳入的風格行,或要求三個替代方案並選擇其中一個。罰分(frequency_penalty、presence_penalty)會直接傳遞,可打破重複片語。
提示詞對影像模型來說太長
在系統提示詞中設定硬性字數限制,並在程式碼中檢查長度。手動截斷會遺失最後的細節(通常是最不重要的),但讓模型一開始就寫短一點更好。
你遇到了 429
你每分鐘或同時發送的請求過多。等待幾秒後重試;回應可能包含 Retry-After: 5。具有 4 至 8 個工作執行緒的小型執行緒池的批次,可保持在完整金鑰的限制內。
1,000 筆提示詞的成本
定價為每 1M 輸入 token $0.15,每 1M 輸出 token $0.50。典型的擴展會發送約 150 token 的系統提示詞加上 15-token 的想法,稱之為輸入 170 token,並接收約 120 token 的 JSON。
- 輸入:170 × $0.15 / 1M = $0.0000255。
- 輸出:120 × $0.50 / 1M = $0.00006。
- 每筆提示詞:約 $0.0000855。
- 1,000 筆提示詞:約 $0.0855,或 $0.09。
請將 token 數量向上取整,適用於較長的系統提示詞或少樣本範例。若加入 600 個 token 的範例,輸入量將變為 770 個 token,而 1,000 次請求的輸入費用約為 $0.1155、輸出費用約為 $0.06,總計約為 $0.18。無論如何,$0.50 的試用額度足以涵蓋數千次擴展。失敗的請求不會計費,且預付額度永不失效;請參閱 定價頁面 進行儲值($20 至 $500,支援加密貨幣)。
更多指南
問答
LLM 能直接生成 Stable Diffusion 圖片嗎?
不行。它僅輸出文字。你需將其提示詞傳送至 SDXL、ComfyUI、Automatic1111 或你執行的其他圖片工具。
SDXL 提示詞的長度應為何?
約 40 至 60 個字效果良好,並將關鍵細節置於前方,因為文字編碼器以 77-token 為單位進行讀取。
它會拒絕成熟或黑暗主題嗎?
該模型經過調整,可針對合法成人用途無內容拒絕地回應。不會產生涉及未成年人的內容。
我應該傳送哪個模型名稱?
將 uncensored 設為模型 ID,搭配基礎 URL https://api.sdxlapi.com/v1 以及你的金鑰作為 Bearer token。
我可以並行執行多個提示詞嗎?
完整金鑰允許 8 個並行請求和每分鐘 300 個請求;試用金鑰允許 2 個和每分鐘 60 個。收到 429 回應表示需等待並重試。
只差一張表單,即可取得金鑰
建立帳號、複製金鑰、更改基礎 URL。這就是整個設定過程。