Nodes/Comfyui_image2prompt/Multi Text to GPTPrompt 🐼
ComfyUI Node

Multi Text to GPTPrompt 🐼

Multi Text to GPTPrompt 🐼 — ComfyUI Node Guide

By zhongpei·Created 3 years ago·Updated about a year ago· 386
Multi Text to GPTPrompt 🐼
    • STRING
    promptYou must use English and use the "Supplementary Description" content to add a more detailed picture description to the "Picture Description" within 77 words.
    text1
    text2
    text1_perfixPicture Description:
    text2_perfixSupplementary Description:
    print_outputdisable

    What it is

    The name is a bit misleading - despite "GPTPrompt" in the title, this node doesn't call any API and doesn't run any model at all. Check the inputs: there's no model field anywhere in its schema. What it actually does is pure text formatting: it takes two labeled pieces of text and stitches them into one combined instruction block, wrapped around a prompt template. It's a preparation step, not a generation step - you build the combined text here, then hand it off to whatever LLM node (this pack's Text to Prompt, or an external chat node) is actually going to read it.

    The README explains exactly what this is for: combining what a captioner like moondream produces with what a Danbooru tagger like wd-swinv2-tagger-v3 produces, formatted as a single instruction meant for a "7b-level" chat model (the README specifically mentions qwen1.5-7b and deepseek-ai/deepseek-vl-7b-chat) to merge into one clean description. This node builds that merged instruction; it doesn't run the 7B model itself.

    How it works

    It takes your two text inputs, prefixes each with a label, and assembles everything under a top-level instruction. Nothing more complicated than string concatenation with labels - but the labeling and the instruction wrapper are exactly the structure a downstream chat model needs to reliably treat the two inputs as separate, related pieces of context rather than one run-on block of text.

    Inputs and outputs

    • prompt - the instruction wrapping the whole thing. Defaults to something like "use the 'Supplementary Description' content to add a more detailed picture description to the 'Picture Description' within 77 words" - telling a downstream model exactly how to combine the two text blocks below.
    • text1 - your first text block, typically a caption from Image to Text or Image to Text with Tags.
    • text2 - your second text block, typically a tag list or a second description you want folded into the first.
    • text1_perfix - defaults to "Picture Description:", the label prepended to text1.
    • text2_perfix - defaults to "Supplementary Description:", the label prepended to text2.
    • print_output - off by default, echoes the assembled text to console if you turn it on.

    Single STRING output - the fully assembled instruction block, ready to hand to whatever LLM you're actually generating with.

    Installing it

    Ships with the rest of the pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/zhongpei/Comfyui_image2prompt
    

    Or search "Comfyui_image2prompt" in ComfyUI Manager. (The README's own clone command is typo'd to a hyphenated URL that 404s - use the underscored one above.) Restart ComfyUI afterward. No model download involved for this node specifically - it's plain text logic.

    Common issues

    Expecting it to generate anything on its own. Since there's no model input, wiring this node's output straight into a sampler or save node without routing it through an actual text-generation node first will just give you back the labeled template text, unprocessed. It has to feed something like Text to Prompt (or an external LLM call) to actually get merged/rewritten.

    The default prompt targets a 77-word limit as an instruction, not an enforced cutoff. Whether the downstream model respects that depends entirely on the model you route this into - this node has no way to enforce it, since it isn't generating anything itself.

    Mismatched prefixes and content. If you swap what you feed into text1 and text2 without also swapping the prefix labels, the downstream model gets a "Picture Description" label on what's actually your tag list (or vice versa), which can confuse a smaller model's interpretation of which block is which. Keep the prefix and the content it's describing paired correctly.

    Categoryfofo🐼/prompt

    Inputs (6)

    NameTypeDefaultDescription
    promptSTRINGYou must use English and use the "Supplementary Description" content to add a more detailed picture description to the "Picture Description" within 77 words.
    text1STRING
    text2STRING
    text1_perfixSTRINGPicture Description:
    text2_perfixSTRINGSupplementary Description:
    print_outputCOMBOdisable2 options: enable, disable

    Outputs (1)

    NameTypeDescription
    STRINGSTRING