Nodes/BizyAirPlus/JoyCaption 3
ComfyUI Node

JoyCaption 3

JoyCaption 3 in the cloud when your GPU can't fit the VLM

By siliconflow·Created 5 months ago·Updated about a month ago· 20
JoyCaption 3
  • image_input
  • api_config
  • result
  • request_id
custom_prompt
name_input
extra_options
caption_lengthany
caption_typeDescriptive
temperature0.5
max_tokens256
do_samplefalse
skip_errorfalse

This is JoyCaption 3 - the captioning model that became the de facto standard for building image training datasets - running as a hosted API node. You feed it an image, it writes you a caption. That's the whole job, and it's one of the most genuinely useful nodes in BizyAirPlus because caption quality is the silent bottleneck of every LoRA you've ever trained.

Normally JoyCaption runs locally, and normally that's a problem: the VLM eats VRAM you'd rather give the diffusion model, and captioning a few thousand training images becomes a multi-night job. This node moves that work to the cloud. It's categorized "Self-Hosted" precisely because the underlying model is one you could run yourself - this is the convenience route for when you can't or won't. The trade is real: free local captioning vs. paid cloud captioning, and if you're captioning a big dataset, that arithmetic matters. But for a few hundred images, paying to skip the VRAM fight is often the saner deal.

How it works

Standard BizyTRD mechanics: image_input (required) goes up, a caption STRING comes back on the result output - wire that straight into a text save node and you're building a dataset. The interesting controls:

  • caption_length (default any) and caption_type (default Descriptive) - combos that shape the caption's size and flavor.
  • max_tokens (16–512, default 256) - how long the caption can run.
  • do_sample (default off) - enable randomness; leave off for reproducible training captions.
  • temperature - oddly, a string field here (default 0.5), so type the number as text.
  • custom_prompt, name_input, extra_options - free-text slots for steering the caption, naming the subject, or passing extra VLM options.

api_config overrides endpoint/key per request; skip_error outputs a placeholder instead of aborting the workflow.

Inputs and outputs

  • image_input (required, IMAGE) - the photo to describe.
  • Optional: custom_prompt, name_input, extra_options, caption_length, caption_type, temperature, max_tokens, do_sample, api_config, skip_error.
  • Outputs: result (STRING), request_id (STRING).

Installing BizyAirPlus

ComfyUI Manager: "BizyAirPlus", or:

cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/siliconflow/BizyAirPlus.git
cd BizyAirPlus
python -m pip install -r requirements.txt

Restart, account at bizyair.ai, API key, BizyAirPlus button ON. Dependencies: bizyair-cloudberry, bizytrd - no VLM weights to download.

Common issues

Caption consistency is the trap: if do_sample is on and temperature is high, every image gets a slightly different style of caption, and your dataset learns the inconsistency. Keep do_sample off and temperature low for training data. Also mind max_tokens - 256 tokens is plenty for most images, and 512-token captions inflate dataset size and cost for no quality gain. Otherwise the pack standard: missing button (pip show bizyair-cloudberry), cloud errors in the console, and per-call pricing that adds up on a big batch.

CategoryBizyAirModelServices/BizyTRD/Self-Hosted

Inputs (11)

NameTypeDefaultDescription
image_inputIMAGEPhoto
custom_promptoptSTRINGCustom prompt
name_inputoptSTRINGName input
extra_optionsoptSTRINGAdditional options
caption_lengthoptCOMBOanyDescription length
caption_typeoptCOMBODescriptiveDescribes the type
temperatureoptSTRING0.5Temperature
max_tokensoptINT25616–512Maximum number of lexical units
do_sampleoptBOOLEANfalseEnable randomness
api_configoptBIZYAIR_OPENAPI_CONFIG单次请求覆盖base_url和api_key
skip_erroroptBOOLEANfalse开启后遇到错误不中断工作流,输出对应类型的错误占位符

Outputs (2)

NameTypeDescription
resultSTRING
request_idSTRING