mudler/LocalAI · error · ValueError
{name} must be a number
Error message
{name} must be a number What it means
Raised by require_float() in the longcat-video backend when a numeric option cannot be parsed with float(). TypeError (None, containers) and ValueError (unparseable strings like 'fast') are re-raised as this message with the original exception chained.
Source
Thrown at backend/python/longcat-video/longcat_utils.py:109
def require_int(value, name, minimum=None, maximum=None):
try:
parsed = int(value)
except (TypeError, ValueError) as err:
raise ValueError(f"{name} must be an integer") from err
if minimum is not None and parsed < minimum:
raise ValueError(f"{name} must be at least {minimum}")
if maximum is not None and parsed > maximum:
raise ValueError(f"{name} must be at most {maximum}")
return parsed
def require_float(value, name, minimum=None, maximum=None):
try:
parsed = float(value)
except (TypeError, ValueError) as err:
raise ValueError(f"{name} must be a number") from err
if minimum is not None and parsed < minimum:
raise ValueError(f"{name} must be at least {minimum}")
if maximum is not None and parsed > maximum:
raise ValueError(f"{name} must be at most {maximum}")
return parsed
def attention_overrides(name):
try:
return dict(ATTENTION_OVERRIDES[name])
except KeyError as err:
choices = ", ".join(ATTENTION_OVERRIDES)
raise ValueError(f"attention_backend must be one of: {choices}") from err
def _model_name_from_directory(path):
for filename in ("model_index.json", "config.json"):
config_path = os.path.join(path, filename)View on GitHub (pinned to 44413a9d06)
Solutions
- Pass a real float/int or a clean numeric string like '0.7'
- Normalize locale input before validation (replace ',' with '.')
- Default None to the option's default before calling require_float
Example fix
# before
require_float('0,7', 'cfg_scale') # ValueError: cfg_scale must be a number
# after
require_float('0.7', 'cfg_scale') # 0.7 Defensive patterns
Strategy: validation
Validate before calling
def coerce_float(value, default=None):
if value is None:
return default
try:
return float(value)
except (TypeError, ValueError):
return None
scale = coerce_float(opts.get('cfg_scale'), 0.7) Type guard
def is_float_like(v) -> bool:
if isinstance(v, bool):
return False
if isinstance(v, (int, float)):
return True
if isinstance(v, str):
try:
float(v)
return True
except ValueError:
return False
return False Try / catch
try:
value = require_float(raw, 'cfg_scale')
except ValueError as err:
logger.warning('invalid option: %s', err)
value = DEFAULT Prevention
- Normalize locale decimal separators before validation
- Map null to defaults at the JSON boundary
- Validate numeric fields with JSON schema (type: number) upstream
When it happens
Trigger: Calling an option routed through require_float with None, a non-numeric string ('high'), or a malformed number ('1,5' with a comma separator from locale-formatted input).
Common situations: Locale-formatted decimal strings, YAML values that parse as strings instead of numbers, or null passed from JSON payloads for optional float fields.
Related errors
- resolution must be 480p or 720p
- base_model must point to a LongCat-Video checkpoint
- request needs {segments} avatar segments, but max_segments i
- {name} must be true or false
- {name} must be an integer
AI-assisted analysis of mudler/LocalAI@44413a9d06 (2026-08-15).
Data as JSON: /api/errors/d434e8bd9f2f464c.
Report an issue: GitHub.