invoke-ai/InvokeAI · error · ValueError
Unsupported control_lllite type: {type(control_lllite)}
Error message
Unsupported control_lllite type: {type(control_lllite)} What it means
_normalize_control_lllite accepts control_lllite as None, a single AnimaLLLiteField, or a list of them; anything else (e.g. a dict, string, or wrong field type) raises ValueError with the offending Python type. It is an internal input-shape contract in the Anima denoise invocation.
Source
Thrown at invokeai/app/invocations/anima_denoise.py:292
The model cache returns ONE shared AnimaControlNetLLLite instance per
model key, so two adapters using the same model in one run would share
cond/multiplier state and clobber each other's bindings.
The list is sorted by model key: the frontend fans adapters into a
`collect` node whose output order follows graph node ids (random
UUIDs), not user intent, and composition is weakly order-sensitive
(each adapter's delta sees the perturbations of adapters applied after
it). Sorting makes the cascade deterministic and reproducible.
"""
if control_lllite is None:
lllite_fields: list[AnimaLLLiteField] = []
elif isinstance(control_lllite, AnimaLLLiteField):
lllite_fields = [control_lllite]
elif isinstance(control_lllite, list):
lllite_fields = control_lllite
else:
raise ValueError(f"Unsupported control_lllite type: {type(control_lllite)}")
seen_keys: set[str] = set()
for lllite_field in lllite_fields:
key = lllite_field.control_model.key
if key in seen_keys:
raise ValueError(
f"The Anima ControlNet-LLLite model '{lllite_field.control_model.name}' is used by more than "
"one control input. Each LLLite model can only be applied once per generation — remove the "
"duplicate, or select a different model for it."
)
seen_keys.add(key)
return sorted(lllite_fields, key=lambda f: f.control_model.key)
def _build_lllite_cond_image(
self,
context: InvocationContext,
lllite_field: AnimaLLLiteField,
lllite_model: AnimaControlNetLLLite,View on GitHub (pinned to 0b6a024f2f)
Solutions
- Ensure the control_lllite input is an AnimaLLLiteField (or a list of them) from the LLLite loader node
- Fix the graph wiring so the ControlNet-LLLite node output feeds the denoise control input
- Update custom node packs to versions emitting AnimaLLLiteField
Example fix
// before lllite = "my_lllite_model_key" # wrong type // after lllite = AnimaLLLiteField(control_model=model_field, image_name="img", mask_name=None)
Defensive patterns
Strategy: type-guard
Validate before calling
if not isinstance(control_lllite, (AnimaLLLiteField, list, type(None))):
raise TypeError('control_lllite must be AnimaLLLiteField or list[AnimaLLLiteField]') Type guard
def is_lllite_field(x) -> bool:
return isinstance(x, AnimaLLLiteField)
def normalize(x):
if x is None: return []
if is_lllite_field(x): return [x]
if isinstance(x, list) and all(is_lllite_field(i) for i in x): return x
raise TypeError('unsupported control_lllite type') Try / catch
try:
fields = _normalize_control_lllite(control_lllite)
except ValueError as e:
raise NodeInputError(f'Invalid control_lllite input: {e}') from e Prevention
- Always wire the LLLite loader node's typed output into control_lllite
- Validate graph field types before invoking diffusion
- Keep custom node packs updated to emit AnimaLLLiteField
When it happens
Trigger: Calling _normalize_control_lllite (via _run_diffusion) with a control_lllite value that is not None, not an AnimaLLLiteField, and not a list — typically a malformed graph field or wrong node output wired into the control_lllite input.
Common situations: Custom node code passing a raw model identifier instead of an AnimaLLLiteField; graph JSON hand-edited so the field has an unexpected shape; API version mismatch between node pack and core.
Related errors
- The Anima ControlNet-LLLite model '{lllite_field.control_mod
- This Anima ControlNet-LLLite adapter is an inpainting adapte
- Unsupported Anima ControlNet-LLLite adapter: expected 3 or 4
- Unexpected control_input type: ${type(control_input)}
- Unsupported controlnet type: {type(self.control)}
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/ea8ad40774cb9254.
Report an issue: GitHub.