Chuyển đến nội dung chính

第 7 課:時尚提示工程 — 最佳化提示與設計變化

建立服裝設計提示範本系統。透過 LLM 自動增強提示。雙語支援(EN/VI)。負提示優化列印品質。變異生成策略。

🧠 人工智慧與機器學習 — 第 6 課 第 7 課:時尚的快速工程 — 優化提示和設計變化

人工智慧在行動:建構時尚和按需印刷的人工智慧平台

第 2 部分:AI 設計生成引擎

亞洲開發網

簡介

提示是使用者與AI之間的介面。好的提示可以創造出色的設計,壞的提示會產生垃圾。本文建構了一個專門針對時尚的提示工程系統——包括模板、自動增強、負面優化提示和雙語處理。


1. 時尚提示解剖

T卹設計的有效提示結構

[Style] + [Subject] + [Details] + [Technical Quality] + [Print Spec]

Ví dụ:
"cyberpunk style, neon smiley face with sunglasses,
 glowing edges, holographic effect,
 high detail, vector art, clean lines,
 t-shirt design, transparent background, print-ready, 300 DPI"

提示元件

PROMPT_COMPONENTS = {
    "styles": [
        "cyberpunk", "minimalist", "vintage retro", "gaming esports",
        "streetwear urban", "japanese typography", "graffiti art",
        "botanical nature", "abstract geometric", "pop art",
        "gothic dark", "kawaii cute", "vaporwave", "psychedelic",
    ],
    "techniques": [
        "vector art", "illustration", "watercolor", "line art",
        "pixel art", "3D render", "collage", "halftone",
        "screen print style", "embroidery style",
    ],
    "quality_boosters": [
        "high detail", "clean lines", "sharp edges",
        "professional quality", "studio quality",
        "crisp", "vibrant colors",
    ],
    "print_specs": [
        "t-shirt design", "isolated design element",
        "transparent background", "print-ready",
        "single color background", "centered composition",
    ],
}

2. 自動增強管道

class PromptEnhancer:
    """Tự động nâng cấp user prompt cho fashion design"""

    def __init__(self):
        self.llm = openai.AsyncClient()

    async def enhance(self, user_prompt: str) -> EnhancedPrompt:
        # Step 1: Detect language
        lang = self._detect_language(user_prompt)

        # Step 2: Translate if Vietnamese
        if lang == "vi":
            user_prompt = await self._translate_vi_to_en(user_prompt)

        # Step 3: Analyze prompt completeness
        analysis = self._analyze_prompt(user_prompt)

        # Step 4: Enhance with missing components
        enhanced = await self._llm_enhance(user_prompt, analysis)

        # Step 5: Build negative prompt
        negative = self._build_negative_prompt(analysis)

        return EnhancedPrompt(
            original=user_prompt,
            enhanced=enhanced,
            negative=negative,
            detected_style=analysis.get("style"),
            detected_language=lang,
        )

    ENHANCE_SYSTEM_PROMPT = """
You are a fashion design prompt engineer for a t-shirt print-on-demand AI.

Given a user's design idea, create an optimized Stable Diffusion prompt.

Rules:
1. Keep the user's core concept intact
2. Add art style if missing (e.g., vector art, illustration)
3. Add "t-shirt design, isolated, transparent background, print-ready"
4. Add quality boosters: "high detail, clean lines, vibrant"
5. Maximum 77 tokens (CLIP limit)
6. Do NOT add: people, mannequins, mockups, backgrounds

Output only the enhanced prompt, nothing else.
"""

    FASHION_NEGATIVE_PROMPT = (
        "blurry, low quality, watermark, signature, text overlay, "
        "person wearing shirt, full body, mannequin, model, "
        "wrinkled fabric, photographic, photo, realistic background, "
        "busy background, multiple designs, border, frame, "
        "distorted, deformed, ugly, duplicate, morbid, "
        "low resolution, jpeg artifacts, out of frame"
    )

3. 模板系統

class PromptTemplateSystem:
    """Template-based prompt generation cho quick design"""

    TEMPLATES = {
        "meme": {
            "prompt": (
                "{subject}, meme style, bold text ready, "
                "humorous illustration, {color_scheme}, "
                "t-shirt design, transparent background"
            ),
            "negative_extra": "serious, realistic, photographic",
        },
        "gaming": {
            "prompt": (
                "{subject}, gaming esports style, "
                "glowing effects, neon lighting, {color_scheme}, "
                "dynamic composition, t-shirt design, "
                "transparent background"
            ),
            "negative_extra": "calm, peaceful, nature",
        },
        "minimal": {
            "prompt": (
                "{subject}, minimalist design, clean lines, "
                "simple composition, {color_scheme}, "
                "flat design, t-shirt design, transparent background"
            ),
            "negative_extra": "complex, detailed, busy, cluttered",
        },
        "streetwear": {
            "prompt": (
                "{subject}, streetwear urban style, bold graphics, "
                "{color_scheme}, grunge texture, "
                "t-shirt design, transparent background"
            ),
            "negative_extra": "elegant, formal, corporate",
        },
        "japanese": {
            "prompt": (
                "{subject}, Japanese aesthetic, kanji typography, "
                "{color_scheme}, ukiyo-e inspired, "
                "t-shirt design, transparent background"
            ),
            "negative_extra": "western, modern, corporate",
        },
    }

    def apply_template(
        self,
        template_name: str,
        subject: str,
        color_scheme: str = "vibrant colors",
    ) -> tuple[str, str]:
        template = self.TEMPLATES[template_name]
        prompt = template["prompt"].format(
            subject=subject,
            color_scheme=color_scheme,
        )
        negative = (
            PromptEnhancer.FASHION_NEGATIVE_PROMPT
            + ", " + template["negative_extra"]
        )
        return prompt, negative

4. 變化策略

class VariationStrategy:
    """Tạo variations đa dạng từ 1 prompt"""

    def generate_diverse_variations(
        self, base_prompt: str, num_variations: int = 4
    ) -> list[dict]:
        strategies = [
            self._seed_variation,       # Cùng prompt, khác seed
            self._style_variation,      # Cùng subject, khác style
            self._color_variation,      # Cùng design, khác color
            self._composition_variation, # Cùng elements, khác layout
        ]

        variations = []
        for i in range(num_variations):
            strategy = strategies[i % len(strategies)]
            variation = strategy(base_prompt, i)
            variations.append(variation)

        return variations

    def _style_variation(
        self, prompt: str, index: int
    ) -> dict:
        """Thay đổi art style"""
        styles = [
            "vector art style",
            "watercolor illustration",
            "line art style",
            "screen print style",
        ]
        return {
            "prompt": f"{prompt}, {styles[index % len(styles)]}",
            "strategy": "style_variation",
        }

    def _color_variation(
        self, prompt: str, index: int
    ) -> dict:
        """Thay đổi color scheme"""
        schemes = [
            "vibrant neon colors",
            "monochrome black and white",
            "pastel soft colors",
            "earth tones warm colors",
        ]
        return {
            "prompt": f"{prompt}, {schemes[index % len(schemes)]}",
            "strategy": "color_variation",
        }

總結

時尚快速工程系統:

  1. 提示解剖學 — 結構【風格】+【主題】+【詳細資料】+【品質】+【印刷】
  2. 自動增強-LLM自動升級提示,加入時尚專屬關鍵字
  3. 模板系統 — 迷因、遊戲、極簡、街頭服飾、日文的模板
  4. 否定提示 — 最佳化列印質量,刪除不需要的元素
  5. 變化策略——種子、風格、顏色、成分變化

下一篇文章開始第 3 部分:AI 設計優化和編輯 — 確保設計可以真實地列印。