JoyCaption 3
JoyCaption 3 in the cloud when your GPU can't fit the VLM
- image_input
- api_config
- result
- request_id
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(defaultany) andcaption_type(defaultDescriptive) - 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 (default0.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.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| image_input | IMAGE | Photo | |
| custom_promptopt | STRING | Custom prompt | |
| name_inputopt | STRING | Name input | |
| extra_optionsopt | STRING | Additional options | |
| caption_lengthopt | COMBO | any | Description length |
| caption_typeopt | COMBO | Descriptive | Describes the type |
| temperatureopt | STRING | 0.5 | Temperature |
| max_tokensopt | INT | 25616–512 | Maximum number of lexical units |
| do_sampleopt | BOOLEAN | false | Enable randomness |
| api_configopt | BIZYAIR_OPENAPI_CONFIG | 单次请求覆盖base_url和api_key | |
| skip_erroropt | BOOLEAN | false | 开启后遇到错误不中断工作流,输出对应类型的错误占位符 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| result | STRING | — |
| request_id | STRING | — |