Nodes/arkennemasis Nodes/arkennemasis Prompt Request (2A · ask for all N prompts)
ComfyUI Node

arkennemasis Prompt Request (2A · ask for all N prompts)

Ask for every variation prompt in one LLM call, then never ask again

By Hishamahmer·Created 2 months ago·Updated 8 days ago· 9
arkennemasis Prompt Request (2A · ask for all N prompts)
    • request
    • count
    • keys
    cells_json[]
    template

    If a product has 30 variations, you can ask a language model to write 30 prompts, or you can ask it once to write all 30. ArkPromptRequest exists because the first way quietly destroys the whole job. Thirty individually-authored prompts drift - one says "softly illuminated", the next "warm glow", a third mentions the surface the product sits on - and every one of those incidental words moves the camera. Ask for the whole set in a single call, written against the same instructions, and the set stays parallel.

    This is step 2A of the arkennemasis variation pipeline. The pipeline takes a client's variation spreadsheet plus one locked base photograph and produces a verified, consistently-framed product image library. The node before this (Cell Matrix / Cell At) hands you the cartesian product of every axis × plate as cells_json; this node turns that list into one prompt for your LLM.

    How it works

    Each cell's slots get flattened into a row: axis = value, which region it changes, the target hex stated numerically (twice - the model is told to "write this exact value into the prompt", because no colour chip is attached for it), and any reference images with their roles. All the rows go into a template that demands a JSON array back - exactly %(count)d objects, each with n, key and prompt, in order, and nothing else.

    The template is a widget, not magic. It uses %(count)d and %(rows)s placeholders, and you can edit it, but the default is good enough that most people never touch it.

    The inputs and outputs that matter

    • cells_json - the cell list from the matrix stage. The only required input.
    • template - the request text, with %(count)d and %(rows)s.
    • request - wire this into your LLM node's prompt input, with json_only ON, alongside the customised system instructions from step 1B.
    • keys - a JSON list of the cell keys in order. Wire it into the LLM's batch_keys so a batched reply names which item each object answers. That's the difference between a prompt reaching its own cell and reaching whichever cell happens to share its position.
    • count - the number of variations, handy for sanity-checking downstream.

    Install

    ArkPromptRequest is one of 61 nodes in the arkennemasis pack. The node itself is pure string plumbing - no API, no key. The LLM it feeds is a separate node in the same pack, which is where any Replicate or Codex setup happens.

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

    Or use ComfyUI Manager → Install via Git URL and paste the repo URL. Restart after.

    Common issues

    • The LLM returns prose instead of a JSON array. This node can't fix that - make sure json_only is ON on the LLM node.
    • Keys mismatch. If the reply is numbered from the model's own viewpoint rather than your keys, the batch_keys wire is missing. Every prompt reaching the wrong cell looks like drift and wastes a paid generation.
    • Empty cell list. An empty cells_json raises immediately rather than shipping an empty request, so if you see that error, the problem is upstream in the matrix stage.

    The pack's own runbook pushes an even further step - ArkPromptBuild, which drops the LLM from prompt assembly entirely and does pure substitution. 2A/2B is the route where one LLM call drafts all the change instructions and you bolt the fidelity locks on after. Both exist on the canvas; you get to pick which one your prompts deserve.

    Categoryarkennemasis/Variation

    Inputs (2)

    NameTypeDefaultDescription
    cells_jsonSTRING[]
    templateoptSTRINGUses %(count)d and %(rows)s.

    Outputs (3)

    NameTypeDescription
    requestSTRING
    countINT
    keysSTRING