LayerUtility: JoyCaption Beta One (Advance)
JoyCaption Beta One — the captioner people actually reach for when training LoRAs
- image
- joycaption_beta1_model
- extra_options
- text
JoyCaption is the community's favorite captioner for a specific reason: it's uncensored by design. fpgaminer built it starting mid-2024 explicitly because the alternatives at the time were either ChatGPT (expensive, filtered) or open models like CogVLM that choked the moment content wasn't SFW. For LoRA training on natural-language-encoder models - Flux, Z-Image, Qwen-Image and friends - JoyCaption is still the go-to over Florence 2 for exactly that reason, and it's nowhere near a fringe pick: it's the most-mentioned captioning tool in the ecosystem this year. "Beta One" is the current generation, and this is the actual captioning node - it takes the model handle from LayerUtility: Load JoyCaption Beta One Model and an image, and gives you text back.
The setting that matters most is caption_type, and there are twelve of them: plain Descriptive, a looser Descriptive (Casual), Straightforward, a Stable Diffusion Prompt format built for feeding straight back into generation, MidJourney-style, three tag-list formats (Danbooru, e621, Rule34), a generic Booru-like tag list, and a few non-dataset formats (Art Critic, Product Listing, Social Media Post) for when you just want a description rather than training data. Picking the right one matters - if you're captioning a dataset for a natural-language-encoder LoRA, Descriptive or Stable Diffusion Prompt is what you want; if you're feeding an anime/Illustrious-style pipeline that expects tags, one of the Booru variants is closer to useful, though a dedicated WD14 tagger is still the standard for that lineage. caption_length gives you rough control over how verbose the output is (from very short up through numeric token targets). temperature, top_p, and max_new_tokens are the usual LLM sampling knobs - leave them at defaults unless you're specifically fighting repetition or truncation. If you fill in user_prompt, it overrides everything else - caption_type, caption_length, and any extra_options you've plugged in - so use it when you want full manual control over the instruction. The optional extra_options input takes a JoyCaption2ExtraOption handle from the companion extra-options node, letting you toggle things like excluding watermark mentions or including camera-angle detail. Output is text.
Install the pack through ComfyUI Manager (search "ComfyUI Layer Style Advance") or git clone https://github.com/chflame163/ComfyUI_LayerStyle_Advance, restart, run the requirements installer. The model itself auto-downloads on first use to ComfyUI/models/LLavacheckpoints/llama-joycaption-beta-one-hf-llava, or grab it manually from HuggingFace (fancyfeast/llama-joycaption-beta-one-hf-llava) if you'd rather not wait on the in-workflow pull.
One caption-quality note worth keeping in mind, whichever mode you use: describe what you want the LoRA to be able to change, and leave out what you want it to treat as fixed. If you're training a character and you never mention their hair color in the captions, the model locks that in as part of the character; if you do mention it, it stays adjustable at inference time. Trouble-wise, this node shares the pack's common transformers/protobuf traps - if you hit an UnboundLocalError on clip_processor or text_model with the model files confirmed present, update transformers to at least 4.43.2; if that fixes one error and surfaces a protobuf descriptor complaint instead, downgrade protobuf to 3.20.3 or set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| joycaption_beta1_model | JOYCAPTIONBETA1_MODEL | — | |
| caption_type | COMBO | 12 options: Descriptive, Descriptive (Casual), Straightforward, Stable Diffusion Prompt, MidJourney, Danbooru tag list, +6 | |
| caption_length | COMBO | 31 options: any, very short, short, medium-length, long, very long, +25 | |
| max_new_tokens | INT | 5124–2048 | — |
| top_p | FLOAT | 0.900–1 | — |
| top_k | INT | 00–100 | — |
| temperature | FLOAT | 0.600–2 | — |
| user_prompt | STRING | — | |
| extra_optionsopt | JoyCaption2ExtraOption | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |