TTP_JoyCaption2_simple
TTP_JoyCaption2_simple
- image
- text
JoyCaption2_simple (displayed as TTP_JoyCaption2_simple) is the same JoyCaption Alpha Two engine as the pack's JoyCaption2 node, with all the knobs pulled out. If the Full node feels like a control panel with 17 toggle switches you never touch, this is the version that just asks you what you want and gets on with it. Same model, same captions, same output - just a cleaner graph.
What changed, exactly
The Full node bakes every extra option in as an input: enable-extra-options master switch, a boolean for lighting details, one for camera angle, one for watermarks, plus a character_name field, all living directly on the node. The simple version strips those out and instead exposes a single optional input, extra_options_node, that accepts the string output of the pack's ExtraOptionsNode. You build your extra options on that separate node (where they're grouped and readable), wire its extra_options_str output in here, and the caption node stays small.
That's a real quality-of-life win once you have a few workflows. Your captioning graph reads top-to-bottom: ExtraOptionsNode says "here are the tweaks," JoyCaption2_simple says "here's the engine." And because the extra options are just instruction text glued into the prompt, you can even bypass the companion node and feed in any string you like - the input is a plain STRING with forceInput, so you can pipe in a custom instruction block from anywhere.
The inputs you'll actually touch
The required set is the core captioning kit, identical to the Full node:
- image - one or many; you get a caption per image.
- llm_model -
unsloth/Meta-Llama-3.1-8B-Instructor the uncensoredOrenguteng/Llama-3.1-8B-Lexi-Uncensored-V2variant. Both auto-download on first run intoComfyUI/models/LLM/. - caption_type - the 9 presets: Descriptive, Descriptive (Informal), Training Prompt, MidJourney, Booru tag list, Booru-like tag list, Art Critic, Product Listing, Social Media Post.
- caption_length - from "very short" to a hard word count.
- dtype -
nf4(about 10GB VRAM) orbf16(about 19GB+). Under a 3090/4090, nf4 is the right default. - max_new_tokens, temperature, top_p - the sampling dials; defaults are fine.
- cache_model - keep the 8B resident between runs. Flip it on for batch captioning.
Output is text as a list - one caption string per input image, so a batch of 50 in gives a list of 50 out. That's the shape your training pipeline wants.
Install and the fine print
Same as the Full node: ComfyUI Manager → search Comfyui_JC2, or:
cd ComfyUI/custom_nodes
git clone https://github.com/TTPlanetPig/Comfyui_JC2
pip install -r requirements.txt # into your ComfyUI python
It needs the same models: SigLIP and the LLM download themselves, but the Alpha Two checkpoint must go at ComfyUI/models/Joy_caption/cgrkzexw-599808 (from the fancyfeast/joy-caption-alpha-two space). The device input only offers cuda:0 - this is a CUDA-only node, so don't expect it on Apple Silicon without patching.
Two gotchas worth knowing. First, if you wire in an ExtraOptionsNode, don't also try to force extras through user_prompt - they stack and you'll get a run-on caption request. Second, the usual bitsandbytes drama: quantization errors mean pip install -U bitsandbytes. Otherwise this is the node I'd actually reach for when I just want captions on a folder of images without twenty toggles staring at me.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| llm_model | COMBO | 2 options: unsloth/Meta-Llama-3.1-8B-Instruct, Orenguteng/Llama-3.1-8B-Lexi-Uncensored-V2 | |
| dtype | COMBO | 2 options: nf4, bf16 | |
| caption_type | COMBO | 9 options: Descriptive, Descriptive (Informal), Training Prompt, MidJourney, Booru tag list, Booru-like tag list, +3 | |
| caption_length | COMBO | 55 options: any, very short, short, medium-length, long, very long, +49 | |
| user_prompt | STRING | — | |
| max_new_tokens | INT | 2608–4096 | — |
| top_p | FLOAT | 0.800–1 | — |
| temperature | FLOAT | 0.600–1 | — |
| cache_model | BOOLEAN | false | — |
| device | COMBO | 1 options: cuda:0 | |
| extra_options_nodeopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |