Trình tạo prompt Stable Diffusion LLM: Cài đặt Python
Nếu bạn muốn một trình tạo prompt Stable Diffusion LLM để mở rộng vài từ thành một prompt đầy đủ, có cấu trúc tốt, bạn chỉ cần một mô hình văn bản và khoảng ba mươi dòng Python. Mô hình viết prompt dưới dạng văn bản; nó không tạo hình ảnh, vì vậy bạn vẫn cần chạy kết quả qua SDXL hoặc bất kỳ công cụ tạo ảnh nào bạn sử dụng.


Điểm chính
- LLM chỉ tạo văn bản. Hãy đưa đầu ra của nó vào cài đặt SDXL, ComfyUI hoặc Automatic1111 của bạn.
- Chế độ JSON trả về một prompt tích cực và một prompt tiêu cực mà bạn có thể phân tích cú pháp mà không cần regex.
- Một lần mở rộng tốn dưới $0,0001, vì vậy 1.000 prompt tốn khoảng $0,09.
- Giữ prompt ngắn gọn: bộ mã hóa văn bản của SDXL chỉ đọc 77 token đầu tiên của mỗi khối.
LLM làm được gì và không làm được gì
Các mô hình ảnh phản hồi tốt với các prompt dày đặc, cụ thể: chủ thể, bối cảnh, ống kính, ánh sáng, phương tiện, tâm trạng và danh sách những thứ cần tránh. Hầu hết mọi người chỉ gõ ba từ và nhận được kết quả phẳng. Một LLM thu hẹp khoảng trống này bằng cách lấy ý tưởng ngắn của bạn và viết phiên bản dài hơn theo một định dạng nhất quán.
Hãy rõ ràng về sự phân chia lao động. Dịch vụ này là một API text-only. Nó không tạo ảnh, âm thanh hoặc video, và không có embedding hay fine-tuning. Nó đứng trước pipeline tạo ảnh của bạn và viết các hướng dẫn mà pipeline đó đọc. Đây là một endpoint tương thích OpenAI phục vụ một mô hình open-weight duy nhất từ một nhà cung cấp độc lập, không phải sản phẩm của bất kỳ nhà cung cấp mô hình ảnh nào.
Mô hình được tinh chỉnh để trả lời mà không từ chối nội dung cho mục đích người lớn hợp pháp, điều này rất quan trọng đối với các nghệ sĩ và nhà phát triển game có các chủ đề (kinh dị, bạo lực trong tiểu thuyết, chủ đề trưởng thành) bị chặn ở nơi khác. Nội dung tình dục liên quan đến người chưa thành niên là giới hạn cứng và không bao giờ được tạo ra.
Bước 1: lấy khóa và thử một lệnh gọi
Đăng ký bằng Google hoặc bằng email và mật khẩu, sau đó mở trang khóa API. Một lần nhấp để dùng thử thêm $0,50 tín dụng, có giá trị trong 7 ngày và không cần thẻ. Điều đó đủ cho hàng nghìn lần mở rộng prompt, như phần chi phí đã chỉ ra.
Kiểm tra xem mọi thứ có hoạt động không bằng 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"}
]
}'
Bất kỳ SDK OpenAI nào cũng hoạt động sau khi bạn thay đổi base URL và khóa. Chi tiết có trong tài liệu.
Bước 2: một prompt hệ thống cho đầu ra ổn định
Prompt hệ thống là nơi chất lượng đến từ đó. Hãy cho mô hình biết định dạng mục tiêu, thứ tự các phần, giới hạn độ dài và những gì cần loại bỏ. Một phiên bản hoạt động tốt làm điểm bắt đầu:
Bạn chuyển đổi các ý tưởng ảnh ngắn thành prompt cho SDXL. Hãy viết một prompt tích cực dài 40 đến 60 từ: chủ thể trước, sau đó là bối cảnh, bố cục, ánh sáng, phương tiện hoặc phong cách, và tâm trạng. Sử dụng các cụm từ được phân tách bằng dấu phẩy, không dùng câu đầy đủ. Sau đó viết một prompt tiêu cực gồm tối đa 15 cụm từ ngắn. Không thêm văn bản, watermark hoặc chú thích vào ảnh. Trả về JSON với các khóa "prompt" và "negative".
Giới hạn từ rất quan trọng. Các bộ mã hóa văn bản CLIP của SDXL đọc prompt theo từng đoạn 77 token, và mọi thứ vượt quá đó sẽ bị cắt hoặc xử lý bằng tính năng phân đoạn trong giao diện người dùng của bạn. Hãy nhắm đến 40 đến 60 từ để giữ hầu hết các prompt nằm trong một đoạn, với các chi tiết quan trọng nhất ở đầu.
Hãy sử dụng nhiệt độ thấp đến trung bình (0,7 đến 0,9) để phong cách được nhất quán nhưng hai lần chạy cùng một ý tưởng sẽ khác nhau. Nếu bạn cần đầu ra giống hệt nhau để kiểm tra, hãy truyền một seed cố định.
Bước 3: tập lệnh Python
Tập lệnh này đọc các ý tưởng từ một danh sách, yêu cầu JSON và in ra cặp prompt. Nó sử dụng gói Python chính thức của OpenAI với URL cơ sở đã được thay đổi.
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")
Chế độ JSON (response_format với json_object) giúp phản hồi được giải mã sạch sẽ. Vẫn hãy bọc json.loads trong khối try khi triển khai và thử lại một lần nếu nó thất bại, vì một phản hồi dài bị cắt ở max_tokens có thể kết thúc giữa đối tượng.
Bước 4: gửi prompt đến công cụ tạo ảnh của bạn
Đầu ra là các chuỗi văn bản thuần túy, vì vậy bất kỳ giao diện người dùng nào cũng có thể nhận nó. Với cài đặt Automatic1111 hoặc ComfyUI cục bộ, hãy gửi hai trường này đến API của nó. Với một tập lệnh lặp qua một tệp CSV chứa các ý tưởng, hãy ghi kết quả vào một tệp và xếp hàng chúng làm một lô.
- Hãy lưu ý tưởng, prompt và prompt tiêu cực lại với nhau, để bạn có thể truy vết một ảnh tốt trở lại hướng dẫn đã tạo ra nó.
- Hãy thêm một dòng phong cách từ danh sách của riêng bạn ("ảnh điện ảnh", "minh họa mực") làm một trường bổ sung trong thông báo người dùng khi bạn muốn một chuỗi có vẻ ngoài phù hợp.
- Giữ một thư viện ngắn các prompt đã hoạt động, và đưa hai hoặc ba trong số chúng vào prompt hệ thống làm ví dụ. Các ví dụ mẫu định hướng phong cách đáng tin cậy hơn nhiều so với tính từ.
Đối với dự án nhập vai hoặc trò chơi, cùng mẫu đó có thể minh họa các cảnh từ một câu chuyện, với LLM chuyển đổi vài đoạn văn cuối thành mô tả trực quan. Bài viết về kịch bản nhập vai dựa trên văn bản bao quát khía cạnh câu chuyện.
Các vấn đề phổ biến và cách khắc phục
Một số vấn đề xuất hiện trong hầu hết mọi dự án trình tạo prompt.
Mô hình thêm phần bình luận
Các phản hồi bắt đầu bằng "Đây là prompt của bạn" sẽ làm hỏng quy trình xử lý. Chế độ JSON loại bỏ phần lớn điều này. Nếu bạn làm việc với văn bản thuần túy, hãy nói "chỉ xuất ra prompt, không có lời mở đầu" và thêm một chuỗi dừng cho một dòng bạn không bao giờ muốn thấy.
Mọi prompt đều trông giống nhau
Nhiệt độ thấp và một khuôn mẫu nghiêm ngặt mang lại kết quả đồng nhất. Tăng nhiệt độ lên 1.0, thay đổi dòng phong cách bạn truyền vào, hoặc yêu cầu ba lựa chọn thay thế và chọn một. Các hệ số phạt (frequency_penalty, presence_penalty) được truyền qua và có thể phá vỡ các cụm từ lặp lại.
Prompt quá dài đối với mô hình ảnh
Hãy đặt giới hạn từ cứng trong system prompt và kiểm tra độ dài trong mã. Cắt thủ công sẽ làm mất các chi tiết cuối cùng, thường là ít quan trọng nhất, nhưng tốt hơn là để mô hình viết ngắn ngay từ đầu.
Bạn gặp lỗi 429
Bạn đã gửi quá nhiều yêu cầu mỗi phút hoặc cùng lúc. Hãy chờ vài giây rồi thử lại; phản hồi có thể bao gồm Retry-After: 5. Một lô với nhóm luồng nhỏ gồm 4 đến 8 worker sẽ nằm trong giới hạn của một khóa đầy đủ.
Chi phí cho 1.000 prompt
Giá là $0,15 cho mỗi 1M token đầu vào và $0,50 cho mỗi 1M token đầu ra. Một lần mở rộng prompt điển hình gửi một prompt hệ thống khoảng 150 token cộng với một ý tưởng 15 token, gọi là 170 token đầu vào, và nhận được khoảng 120 token JSON.
- Đầu vào: 170 × $0,15 / 1M = $0,0000255.
- Đầu ra: 120 × $0,50 / 1M = $0,00006.
- Mỗi prompt: khoảng $0,0000855.
- 1.000 prompt: khoảng $0,0855, hoặc $0,09.
Làm tròn lên cho các prompt hệ thống dài hơn hoặc các ví dụ few-shot. Nếu bạn thêm 600 token của các ví dụ, đầu vào trở thành 770 token và 1.000 yêu cầu có giá khoảng $0,1155 cho đầu vào + $0,06 cho đầu ra, tổng cộng khoảng $0,18. Dù theo cách nào, tín dụng dùng thử $0,50 cũng bao gồm nhiều lần mở rộng prompt. Các yêu cầu thất bại không bị tính phí và tín dụng trả trước không bao giờ hết hạn; xem trang giá cả để nạp tiền ($20 đến $500, bằng tiền mã hóa).
Hướng dẫn khác
Hỏi đáp
LLM có thể tự tạo ảnh Stable Diffusion không?
Không. Nó chỉ tạo văn bản. Bạn chuyển prompt của nó sang SDXL, ComfyUI, Automatic1111 hoặc bất kỳ công cụ tạo ảnh nào khác mà bạn đang chạy.
Độ dài prompt cho SDXL nên là bao nhiêu?
Khoảng 40 đến 60 từ là phù hợp, với các chi tiết quan trọng đặt ở đầu, vì các bộ mã hóa văn bản đọc theo từng khối 77 token.
Nó có từ chối các chủ đề trưởng thành hoặc u tối không?
Mô hình được tinh chỉnh để trả lời mà không bị từ chối nội dung cho mục đích người trưởng thành hợp pháp. Nội dung liên quan đến người chưa thành niên không bao giờ được tạo ra.
Tôi gửi tên mô hình nào?
Gửi uncensored làm ID mô hình, với base URL https://api.sdxlapi.com/v1 và khóa của bạn làm token Bearer.
Bạn có thể chạy nhiều prompt đồng thời không?
Một khóa đầy đủ cho phép 8 yêu cầu đồng thời và 300 yêu cầu mỗi phút; một khóa dùng thử cho phép 2 và 60. Mã phản hồi 429 có nghĩa là hãy đợi và thử lại.
Khóa của bạn chỉ còn một bước nữa
Tạo tài khoản, sao chép khóa, thay đổi URL cơ sở. Đó là toàn bộ thiết lập.