Nodes/ComfyUI-KSTR-Nodes/Korean Image Prompt (Local LLM)
ComfyUI Node

Korean Image Prompt (Local LLM)

Type Your Prompt in Korean, Get Structured Tags Back

By Ye0l·Created 2 months ago·Updated about a month ago· 0
Korean Image Prompt (Local LLM)
    • positive_prompt
    • negative_prompt
    description
    prompt_formatanime_tags
    creativitybalanced
    seed0
    max_new_tokens256
    keep_model_loadedfalse
    style_prefix
    negative_hint

    If English tagging isn't your first language, prompt-writing becomes a translation chore before you've even started drawing. This node removes that step: you describe the scene in Korean - or honestly any natural language - and a small local LLM rewrites it into a ready-to-use English image prompt. No API key, no cloud call, no censorship layer. It runs a ~1.7B model on your own GPU, downloads once from Hugging Face, and works offline after that. For a Korean-speaking user it's the rare node built for you rather than for an English-first workflow.

    How it works

    You type into description - something like "비 오는 밤 골목에서 검은 교복을 입은 여학생이 우산을 들고 뒤돌아본다" (a schoolgirl in a black uniform holding an umbrella, looking back in a rainy alley at night). The node builds a system prompt asking for JSON with positive and negative keys, runs the model, parses the JSON (with a regex fallback if the model gets chatty), and hands you two strings.

    Three dials shape the output:

    • prompt_format - anime_tags (comma-separated booru-style tags, the default), natural_language (prose for Flux/SD3-style models), or hybrid (a short scene description plus comma modifiers).
    • creativity - strict / balanced / creative. Strict only reorganizes what you wrote; creative is allowed to add compatible composition, lighting and atmosphere. Default balanced.
    • seed + max_new_tokens - seed controls the LLM's sampling (deterministic if you like your runs reproducible); max tokens caps the reply (default 256, range 64–1024).

    There are two optional inputs worth knowing: style_prefix gets injected as a mandatory style instruction ("always include X"), and negative_hint seeds the negative prompt with your own preferences. The neat touch is literal protection: things like <lora:name:0.8>, (tag:1.2), __wildcard__ and {red|blue} are pulled out of your description before the LLM sees it and pasted back verbatim afterward, so the model can't mangle your LoRA syntax or wildcards. The Qwen3 default has thinking mode disabled so you get the JSON, not the model's internal monologue.

    Outputs: positive_prompt and negative_prompt, both plain STRINGs - wire them into your encoder like any prompt.

    Install and the model

    It ships in Ye0l/ComfyUI-KSTR-Nodes, and this is the one node in the pack with a real dependency:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Ye0l/ComfyUI-KSTR-Nodes
    pip install -r requirements-llm.txt   # transformers>=4.51
    

    ComfyUI Manager installs the pack but will not install requirements-llm.txt - you have to run that pip line yourself, in the same Python environment as ComfyUI. On first run the node downloads Qwen/Qwen3-1.7B from Hugging Face (Apache-2.0), which is a couple of GB and needs a working internet connection that first time. You can swap models with the KSTR_PROMPT_MODEL env var - a Hugging Face ID or a local directory:

    export KSTR_PROMPT_MODEL=/models/your-prompt-model
    

    The README also mentions LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct as an option - but that one has a separate non-commercial license with restrictions on outputs, so read it before you point the node at it.

    Where people get burned

    VRAM is the classic squeeze: a 1.7B LLM and your diffusion model both want the card. keep_model_loaded (default off) holds the LLM resident so repeats are fast - but if you're on a tight card, leave it off and let the model unload after each call. First run will look "stuck" while it downloads and loads the model; that's normal. And remember what a small local model actually is: a convenience that removes the blank-page problem, not a writing assistant - strict/balanced keeps it honest about what you described.

    CategoryYeol/Prompt

    Inputs (8)

    NameTypeDefaultDescription
    descriptionSTRING
    prompt_formatCOMBOanime_tags3 options: anime_tags, natural_language, hybrid
    creativityCOMBObalanced3 options: strict, balanced, creative
    seedINT00–18446744073709550000
    max_new_tokensINT25664–1024
    keep_model_loadedBOOLEANfalse
    style_prefixoptSTRING
    negative_hintoptSTRING

    Outputs (2)

    NameTypeDescription
    positive_promptSTRING
    negative_promptSTRING