Nodes/ComfyUI_SimpleButcher/Simple Remove Think πŸ“š
ComfyUI Node

Simple Remove Think πŸ“š

Strip <think>...</think> reasoning blocks from LLM output

By KLL535Β·Created 2 years agoΒ·Updated 12 months agoΒ· 13
Simple Remove Think πŸ“š
    • cleaned_text
    β—„textβ€”β–Ί

    If you've wired a reasoning model - DeepSeek-R1, QwQ, or one of the other "thinking" LLMs - into a ComfyUI graph to generate or expand prompts, you've probably seen it hand back a wall of <think>...reasoning about what the user wants...</think> before it ever gets to the actual answer. That's the model showing its work, and it's genuinely useful for chat, but it's dead weight if what you actually want out the other end is a clean prompt string to feed a CLIP Text Encode. Simple Remove Think is a one-job node: strip that block out and leave the real output.

    How it works

    There's not much mechanism to describe, and that's the appeal - you hand it a text string, it finds and removes the <think>...</think> section (tags included), and returns what's left. No LLM call happens here, no model is loaded; it's a pure text-cleanup step that sits downstream of whatever node is actually talking to your language model.

    The inputs and outputs that matter

    One input, text - the raw output from your LLM node, think-block and all. One output, cleaned_text - the same string with the reasoning trace removed, ready to feed onward into a text encoder or anywhere else you'd use a plain prompt string.

    Installing it

    ComfyUI Manager β†’ search ComfyUI_SimpleButcher β†’ install β†’ restart. Manual install:

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

    No dependencies of note for this one specifically - it's string processing, not model inference.

    Common issues

    Nothing changes after the node. The most likely reason is there was nothing to strip in the first place. A lot of local LLM front-ends and API wrappers (including some ComfyUI LLM nodes) already separate or discard the reasoning trace before you ever see it, in which case your text input never contained a <think> block to remove and this node is correctly doing nothing. Check the raw output of your LLM node directly before assuming this node isn't working.

    Only handles the standard tag. This node is built around the literal <think>...</think> format that DeepSeek-R1-style models use. If whatever you're running wraps its reasoning in a different marker, or doesn't close the tag consistently, don't expect this node to guess - it's a straightforward strip, not a general-purpose reasoning-trace detector.

    It's the smallest node in the pack by a wide margin, and it shows - there isn't a config surface to get wrong here. If your workflow includes a reasoning LLM anywhere upstream of a text encoder, this is the kind of node you drop in once and stop thinking about.

    CategoryπŸ“š SimpleButcher

    Inputs (1)

    NameTypeDefaultDescription
    textSTRINGβ€”

    Outputs (1)

    NameTypeDescription
    cleaned_textSTRINGβ€”