Nodes/Comfyui_JC2/TTP_JoyCaption2_simple
ComfyUI Node Runs on cloud

TTP_JoyCaption2_simple

TTP_JoyCaption2_simple

By TTPlanetPig·Created 2 years ago·Updated about a year ago· 216
TTP_JoyCaption2_simple
  • image
  • text
llm_model
dtype
caption_type
caption_length
user_prompt
max_new_tokens260
top_p0.80
temperature0.60
cache_modelfalse
device
extra_options_node

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-Instruct or the uncensored Orenguteng/Llama-3.1-8B-Lexi-Uncensored-V2 variant. Both auto-download on first run into ComfyUI/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) or bf16 (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.

CategoryTTP_Toolset

Inputs (12)

NameTypeDefaultDescription
imageIMAGE
llm_modelCOMBO2 options: unsloth/Meta-Llama-3.1-8B-Instruct, Orenguteng/Llama-3.1-8B-Lexi-Uncensored-V2
dtypeCOMBO2 options: nf4, bf16
caption_typeCOMBO9 options: Descriptive, Descriptive (Informal), Training Prompt, MidJourney, Booru tag list, Booru-like tag list, +3
caption_lengthCOMBO55 options: any, very short, short, medium-length, long, very long, +49
user_promptSTRING
max_new_tokensINT2608–4096
top_pFLOAT0.800–1
temperatureFLOAT0.600–1
cache_modelBOOLEANfalse
deviceCOMBO1 options: cuda:0
extra_options_nodeoptSTRING

Outputs (1)

NameTypeDescription
textSTRING