Step3-VL (StepFun)
The sharpest describer in the pack, minus the thinking noise
- model
- image
- settings
- text
Step3-VL (StepFun) is the inference node you graduate to when the 1.6B and 1B captioners aren't sharp enough - when an image has dense text, multiple subjects, or small details that actually matter to your prompt. StepFun's 10B model is the strongest describer in mamorett/orama, and this node is where it actually does the work. The price is real: it needs the model loaded at bf16, which means ~20 GB+ of VRAM, so check the loader's hardware notes before you fall in love.
How it works, and the interesting surgical bits
The core pattern is shared with the LFM node - image tensor to PIL, optional system_prompt, apply_chat_template, generate() under torch.no_grad(), prompt tokens stripped, text returned. But Step3-VL gets three extra fixes that make it notable:
- A default system prompt when you leave the field blank: "Please respond directly in English. Do not output any reasoning or thinking steps." That's a quality-of-life decision most VLM nodes don't make for you.
- In-memory
<think>removal. If the model's chat template injects a chain-of-thought marker, the node strips it from the template before generation, so you get the answer instead of the reasoning scratchpad. This is the same "reasoning models are not the answer for captioning" lesson the ecosystem keeps learning - here it's baked into the node. - Forced
eos_token_id(plus the loader's KV-cache patches) to stop the infinite-generation loop that plagued this model on HuggingFace. If you'd ever hit that bug with raw Step3-VL, this node is the workaround.
The inputs that matter
The dials match the rest of the pack - temperature 0.7, top_k 50, top_p 0.9, repetition_penalty 1.0, do_sample on - with two differences:
max_new_tokensdefaults to 1024 (double the LFM node's 512) and can go to 65536. A 10B model writes longer answers, and this node gives them room.prompt- default "Describe this image in detail.", and worth your attention: this is a strong model, so specific prompts ("What does the text on the sign say? List the visible objects left to right.") pay off disproportionately here.
Optional inputs: system_prompt (blank by default - the node's own sensible default kicks in) and settings for the pack's Vision Model Settings block, which overrides the inline widgets when connected.
One trap: if you wire in the settings node for shared sampling, remember it caps max_new_tokens at 8192. That's plenty for almost everything, but it's below this node's ceiling - set long generations directly on the node.
Output and what to do with it
A single text (STRING) socket. The natural wiring is Show Text to read it, a file writer to log captions, or - the workflow that makes this pack earn its keep - feed the description into an LLM prompt-enhancer node that reshapes it into a structured prompt for your actual image model. That's the standard pattern for this whole category: a local VLM to describe, then the graph to build on top.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/mamorett/orama
pip install -r ComfyUI/custom_nodes/orama/requirements.txt
Restart ComfyUI (or find orama in ComfyUI Manager). It needs transformers>=5.7.0 - update it first if your install is old - and the 10B weights auto-download into ComfyUI/models/vision_models/ on first load. Want the uncensored build? The abliterated variant is in the loader's model_id dropdown, and it uses identical inference code here.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | STEP3_VL_MODEL | — | |
| image | IMAGE | — | |
| prompt | STRING | Describe this image in detail. | — |
| max_new_tokens | INT | 10241–65536 | — |
| temperature | FLOAT | 0.700–2 | — |
| top_k | INT | 500–1000 | — |
| top_p | FLOAT | 0.900–1 | — |
| repetition_penalty | FLOAT | 1.001–2 | — |
| do_sample | BOOLEAN | true | — |
| system_promptopt | STRING | Optional system prompt. | |
| settingsopt | VISION_SETTINGS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |