ComfyUI Node

Claude Fable 5

Claude Fable 5 — extended thinking with built-in prompt caching

By Runware·Created 2 years ago·Updated about a month ago· 140
Claude Fable 5
  • messages
  • images
  • text
numberResults1
includeUsagefalse
settings.maxTokensfalse
settings.maxTokens_value1
settings.cache.scopesystem+history
settings.splitThinkingtrue
settings.systemPrompt
settings.thinkingLevelhigh
toolChoicefalse
toolChoice.name
toolChoice.type(default)
outputFormatTEXT
settings.cache.ttl5m
advanced_json

Claude is Anthropic's model line, and "Fable 5" is the current generation in Runware's catalog - the one with the deep extended-thinking tier. This node drops it into ComfyUI as a text node: build a conversation with the Runware Messages builder, optionally attach images, and get a string back. What makes this specific node worth seeking out over the other LLM nodes in the pack is its control surface: six thinking levels including max and adaptive, explicit prompt caching with a TTL, and extended-thinking output that can be split off from the main answer.

For ComfyUI purposes, this is the "give me the serious reasoning model for the hard parts of my workflow" node - prompt engineering, complex captioning, workflow logic that needs actual judgment, or generating structured JSON that drives other nodes. It's also vision-capable (images in, descriptions/analysis out).

How it works

Same text-node pattern as the rest of the pack: required messages socket from the Runware Messages builder, a textInference request, STRING text out. The distinctive parts are under settings: cache management and thinking control, which are where Claude's economics and personality live.

Inputs that matter

  • messages (required) + settings.systemPrompt - the conversation and system instruction. With caching on, the system prompt is also what gets cached, so this is both a behavior knob and a cost knob.
  • settings.thinkingLevel - low, medium, high, xhigh, max, adaptive (default high). This is the deepest thinking range in the pack. adaptive lets the model spend as long as the task deserves; max is the ceiling for genuinely hard reasoning. For quick pipeline tasks, drop to low - you're paying for thinking tokens either way.
  • settings.splitThinking - on by default. The model's internal reasoning is separated from the main response and returned in a dedicated reasoningContent field. Keep it on if you want to see (and separate) the chain of thought; the main text output stays clean either way.
  • settings.cache.scope - system (default) or system+history. What gets cached across requests. system+history caches the whole conversation, which is a real cost saver if you're iterating on the same context - at the price of cache size.
  • settings.cache.ttl - 5m (default) or 1h. How long the cache lives. If you're doing a burst of related calls, the longer TTL means more of them hit cache.
  • images - an IMAGE input for vision tasks.
  • settings.maxTokens - off-by-default gate with maxTokens_value (up to 128,000). Reasoning models consume tokens in the thinking phase too; if you're maxing out, it may be the thinking, not the answer.
  • outputFormat - TEXT or JSON. JSON mode plus advanced_json's jsonSchema gets you structured output for downstream nodes.
  • toolChoice / toolChoice.type / toolChoice.name - tool calling; the advanced_json field covers tools, inputs.documents, settings.stopSequences, and jsonSchema.
  • numberResults (1–4), includeUsage - variations and spend visibility. With caching involved, includeUsage is worth a look once to understand what you're actually paying for.

Single output: text - a plain string.

Installing

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

Or ComfyUI Manager → search Runware → install → restart. API key via Settings, RUNWARE_API_KEY, or runware auth login. No local models.

Honest notes

The two things that actually matter in practice are the thinking level and the cache. thinkingLevel is a cost lever as much as a quality lever - max thinking on every trivial call is how you run up a bill, and the title bar shows each run's price. And the cache only helps if your workflow actually repeats context: one-shot prompts don't benefit, batch/iteration loops do. Don't turn splitThinking off thinking it speeds things up - it doesn't; it just hides the reasoning. This is the node to reach for when the task genuinely needs Claude-grade judgment, not for trivial string munging where a cheaper model in the pack will do.

CategoryRunware/Text/anthropic

Inputs (16)

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.maxTokensoptBOOLEANfalseEnable to set settings.maxTokens. Off uses the model's default.
settings.maxTokens_valueoptINT11–128000Maximum number of tokens to generate in the response.
settings.cache.scopeoptCOMBOsystem+historyControls which parts of the request are cached.
settings.splitThinkingoptBOOLEANtrueWhen enabled, the model's internal reasoning is separated from the main response and returned in a dedicated `reasoningContent` field.
settings.systemPromptoptSTRINGSystem-level instruction that guides the model's behavior and output style across the entire generation.
settings.thinkingLeveloptCOMBOhighControls 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, jsonSchema, tools

Outputs (1)

NameTypeDescription
textSTRING