ComfyUI Node

Claude Haiku 4.5

Claude Haiku 4.5 in a node — the fast, cheap LLM for graph plumbing

By Runware·Created 2 years ago·Updated about a month ago· 140
Claude Haiku 4.5
  • messages
  • images
  • text
numberResults1
includeUsagefalse
settings.maxTokens4096
settings.cache.scopesystem+history
settings.systemPrompt
settings.thinkingLevel(default)
toolChoicefalse
toolChoice.name
toolChoice.type(default)
outputFormatTEXT
settings.cache.ttl5m
advanced_json

Claude Haiku has always been Anthropic's answer to "I need an LLM for the boring, high-volume work." Haiku 4.5 keeps that job, and this node is how that job happens inside ComfyUI: you wire in a messages conversation, get a STRING back, and the cost stays low enough that you can afford to call it on every image in a batch. If the 397B Qwen node next to it is a sledgehammer, Haiku is the screwdriver - and for most prompt-expansion, captioning, and tagging work in a graph, that's the right tool.

It's served through Runware's cloud, same as every node in this pack: no local model, no VRAM, billed per call. Where Haiku earns its keep is latency and price - you use it where you'd use a utility, not a thought partner.

What you set

messages is required (RUNWARE_MESSAGES socket). The controls that matter:

  • settings.systemPrompt - the instruction that sets the job ("You are a prompt expander. Output only JSON.").
  • settings.thinkingLevel - off / low / medium / high. Haiku gets a real thinking range in 4.5, but the whole point of this tier is that you usually want off or low. Turn thinking on and you've just made Haiku slow - use Sonnet/Opus for that.
  • settings.maxTokens - up to 64000, default 4096. Set it tight for extraction tasks so a runaway generation doesn't run the bill up.
  • images - IMAGE socket; Haiku is multimodal, handy for quick "describe this frame" passes.
  • toolChoice - gated toggle plus toolChoice.type/name for forcing a specific tool call, and advanced_json carries tools, inputs.documents, and settings.stopSequences.
  • settings.cache.scope (system or system+history) and settings.cache.ttl (5m/1h) - Anthropic's prompt caching, exposed directly. If your workflow repeats the same system prompt across a batch, caching is how you stop paying for it every call.

Output is text (STRING) → anywhere text flows in your graph. includeUsage adds token stats so you can actually see what a batch cost.

Installing

Part of the Runware/ComfyUI-Runware pack.

ComfyUI Manager: search Runware, install, restart.

Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt

Deps are runware-sdk, pillow, soundfile. Runware API key from runware.ai/api-keys (Settings panel or RUNWARE_API_KEY).

Where people get burned

The failure mode is using Haiku like it's Opus. It's not - it's the tier you pick for volume, and if your graph logic depends on subtle reasoning, Haiku will quietly degrade results and you'll blame the workflow. The other trap is leaving thinkingLevel at a high setting: on a fast model, thinking isn't a quality upgrade so much as a tax. off it for anything mechanical.

CategoryRunware/Text/anthropic

Inputs (14)

NameTypeDefaultDescription
messagesRUNWARE_MESSAGES
imagesoptIMAGE
numberResultsoptINT11–4Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
includeUsageoptBOOLEANfalseInclude token usage statistics in the response.
settings.maxTokensoptINT40961–64000Maximum number of tokens to generate in the response.
settings.cache.scopeoptCOMBOsystem+historyControls which parts of the request are cached.
settings.systemPromptoptSTRINGSystem-level instruction that guides the model's behavior and output style across the entire generation.
settings.thinkingLeveloptCOMBO(default)Controls the depth of internal reasoning the model performs before generating a response.
toolChoiceoptBOOLEANfalseEnable to set toolChoice. Off uses the model's default.
toolChoice.nameoptSTRINGName of the specific tool the model must call. Required when type is `tool`.
toolChoice.typeoptCOMBO(default)Strategy the model uses to decide when and which tools to call.
outputFormatoptCOMBOTEXTOutput format for the generated text.
settings.cache.ttloptCOMBO5mTime-to-live for the cache.
advanced_jsonoptSTRINGOptional JSON merged into the request. For: inputs.documents, settings.stopSequences, tools

Outputs (1)

NameTypeDescription
textSTRING