mudler/LocalAI · error · ValueError
Must provide at least one of: class_name, task, or model_id.
Error message
Must provide at least one of: class_name, task, or model_id. Available pipelines: {', '.join(sorted(registry.keys())[:20])}... Available tasks: {', '.join(sorted(aliases.keys())[:20])}... What it means
Raised by resolve_pipeline_class as its final guard: all three resolution inputs were falsy — no class_name, no task, and no model_id — so there is nothing to resolve and the HuggingFace-inference branch (which requires model_id) was skipped. The message lists both available pipeline classes and task aliases.
Source
Thrown at backend/python/diffusers/diffusers_dynamic_loader.py:414
except ImportError:
# huggingface_hub not available
pass
except (KeyError, AttributeError, ValueError, OSError):
# Model info lookup failed - common cases:
# - KeyError: Missing keys in model card
# - AttributeError: Missing attributes on model info
# - ValueError: Invalid model data
# - OSError: Network or file access issues
pass
# Fallback: use DiffusionPipeline.from_pretrained which auto-detects
# DiffusionPipeline is always added to registry in _discover_pipelines (line 132)
# but use .get() with import fallback for extra safety
from diffusers import DiffusionPipeline
return registry.get('DiffusionPipeline', DiffusionPipeline)
raise ValueError(
"Must provide at least one of: class_name, task, or model_id. "
f"Available pipelines: {', '.join(sorted(registry.keys())[:20])}... "
f"Available tasks: {', '.join(sorted(aliases.keys())[:20])}..."
)
def load_diffusers_pipeline(
class_name: Optional[str] = None,
task: Optional[str] = None,
model_id: Optional[str] = None,
from_single_file: bool = False,
**kwargs
) -> Any:
"""
Load a diffusers pipeline dynamically.
This function resolves the appropriate pipeline class based on the provided
parameters and instantiates it with the given kwargs.View on GitHub (pinned to 44413a9d06)
Solutions
- Supply at least one of the three arguments; model_id alone is usually sufficient (auto-detection via the model card).
- Fix the caller: log the arguments at the call site to find which layer dropped them.
- If wrapping this API, validate inputs before calling and raise a domain-specific error instead.
Example fix
# before pipe = load_diffusers_pipeline() # after pipe = load_diffusers_pipeline(model_id=model_ref)
Defensive patterns
Strategy: validation
Validate before calling
assert class_name or task or model_id, (
"load_diffusers_pipeline needs at least one of class_name/task/model_id") Type guard
def has_resolution_input(class_name, task, model_id) -> bool:
return bool(class_name or task or model_id) Try / catch
try:
pipe = load_diffusers_pipeline(class_name=c, task=t, model_id=m)
except ValueError as e:
if "Must provide at least one" in str(e):
raise ProgrammingError("loader called without any resolution input") from e
raise Prevention
- Make model_id a required field in your wrapper's signature.
- Fail fast on empty config values before calling the loader.
- Treat this error as a caller bug, not a user error.
When it happens
Trigger: Calling load_diffusers_pipeline() (or resolve_pipeline_class) with all of class_name, task, and model_id as None/empty — typically a caller bug that failed to populate any argument.
Common situations: A request pipeline where the user omitted both pipeline type and model, a default-argument refactor that dropped model_id propagation, or a config file where all optional fields were left blank.
Related errors
- model_id is required to load a pipeline
- Invalid scheduler '{'k_' if is_karras else ''}{name}'
- Failed to load pipeline '{effective_pipeline_type}': {e}\nAv
- Could not find base class '{base_class_name}' in diffusers
- Unknown pipeline class '{class_name}'. Available pipelines:
AI-assisted analysis of mudler/LocalAI@44413a9d06 (2026-08-15).
Data as JSON: /api/errors/b030df5654fc87ad.
Report an issue: GitHub.