invoke-ai/InvokeAI · error · UnsupportedWorkflowNodeError

Unsupported float generator type '{generator_type}'

Error message

Unsupported float generator type '{generator_type}'

What it means

A float_generator node in a called batch child workflow declares a generator 'type' that _resolve_float_generator does not implement. Only float_generator_arithmetic_sequence, float_generator_linear_distribution, float_generator_random_distribution_uniform, and float_generator_parse_string are supported in this expansion path; anything else (often None) is rejected.

Source

Thrown at invokeai/app/services/session_processor/workflow_call_batch.py:264

        end = float(value.get("end", 1))
        count = int(value.get("count", 10))
        if count == 1:
            return [start]
        return [start + (end - start) * (i / (count - 1)) for i in range(count)]
    if generator_type == "float_generator_random_distribution_uniform":
        minimum = float(value.get("min", 0))
        maximum = float(value.get("max", 1))
        count = int(value.get("count", 10))
        if "values" in value and isinstance(value["values"], list):
            return [float(v) for v in value["values"]]
        rng = random.Random(value.get("seed"))
        return [rng.random() * (maximum - minimum) + minimum for _ in range(count)]
    if generator_type == "float_generator_parse_string":
        if "values" in value and isinstance(value["values"], list):
            return [float(v) for v in value["values"]]
        split_values = _parse_split_values(str(value.get("input", "")), str(value.get("splitOn", ",")))
        return [float(v.strip()) for v in split_values if v.strip()]
    raise UnsupportedWorkflowNodeError(f"Unsupported float generator type '{generator_type}'")


def _resolve_integer_generator(value: Mapping[str, Any]) -> list[int]:
    generator_type = value.get("type")
    if generator_type == "integer_generator_arithmetic_sequence":
        start = int(value.get("start", 0))
        step = int(value.get("step", 1))
        count = int(value.get("count", 10))
        if step == 0:
            return [start]
        return [start + i * step for i in range(count)]
    if generator_type == "integer_generator_linear_distribution":
        start = int(value.get("start", 0))
        end = int(value.get("end", 10))
        count = int(value.get("count", 10))
        if count == 1:
            return [start]
        return [start + round((end - start) * (i / (count - 1))) for i in range(count)]

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Change the generator type to one of the supported float types: arithmetic_sequence, linear_distribution, random_distribution_uniform, or parse_string
  2. Fix typos in the 'type' string in the generator input value
  3. Pre-compute the float values externally and feed them as a direct list to the batch node instead
  4. Upgrade InvokeAI if the generator type exists in a newer release

Example fix

// before
{ "type": "float_generator_random_gaussian", "count": 5 }
// after
{ "type": "float_generator_random_distribution_uniform", "min": 0, "max": 1, "count": 5 }
Defensive patterns

Strategy: validation

Validate before calling

SUPPORTED_FLOAT_TYPES = {"float_generator_arithmetic_sequence", "float_generator_linear_distribution", "float_generator_random_distribution_uniform", "float_generator_parse_string"}
for node in workflow.get("nodes", []):
    d = node.get("data", {}) if isinstance(node, dict) else {}
    if d.get("type") == "float_generator":
        t = d.get("inputs", {}).get("generator", {}).get("value", {}).get("type")
        if t not in SUPPORTED_FLOAT_TYPES:
            raise ValueError(f"unsupported float generator type: {t!r}")

Type guard

def is_supported_float_generator(value: object) -> bool:
    return (isinstance(value, dict) and value.get("type") in {
        "float_generator_arithmetic_sequence", "float_generator_linear_distribution",
        "float_generator_random_distribution_uniform", "float_generator_parse_string"})

Try / catch

try:
    sessions = build_batch_child_workflow_sessions(...)
except UnsupportedWorkflowNodeError as e:
    m = re.search(r"Unsupported float generator type '(.+?)'", str(e))
    if m:
        workflow = replace_generator_with_static_list(workflow, m.group(1))
        sessions = build_batch_child_workflow_sessions(...)
    else:
        raise

Prevention

When it happens

Trigger: Calling a saved workflow with a float_generator whose inputs.generator.value.type is a type only supported by the interactive queue batch (e.g. other random distributions) or missing/misspelled entirely.

Common situations: Workflows using float generator variants added in newer InvokeAI versions than the running server; hand-edited generator 'type' strings with typos; copying generator configs between different InvokeAI features with different supported sets.

Related errors


AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29). Data as JSON: /api/errors/f11e92cb6a352002. Report an issue: GitHub.