infiniflow/ragflow · error · ValueError
does not support empty value.
Error message
does not support empty value.
What it means
check_empty raises when a required string param is falsy ('' , None, empty collection). Used in component check() flows to enforce that fields like model ids, prompts, or dataset ids are present before a run.
Source
Thrown at agent/component/base.py:261
if self.func[op_type](value, validation_dict[op_type]):
value_legal = True
break
if not value_legal:
raise ValueError("Please check runtime conf, {} = {} does not match user-parameter restriction".format(variable, value))
elif variable in validation_json:
self._validate_param(attr, validation_json)
@staticmethod
def check_string(param, description):
if type(param).__name__ not in ["str"]:
raise ValueError(description + " {} not supported, should be string type".format(param))
@staticmethod
def check_empty(param, description):
if not param:
raise ValueError(description + " does not support empty value.")
@staticmethod
def check_nonnegative_integer(param, description):
if type(param).__name__ not in ["int", "long"] or param < 0:
raise ValueError(description + " {} not supported, should be 0 or positive integer".format(param))
@staticmethod
def check_positive_integer(param, description):
if type(param).__name__ not in ["int", "long"] or param <= 0:
raise ValueError(description + " {} not supported, should be positive integer".format(param))
@staticmethod
def check_positive_number(param, description):
if type(param).__name__ not in ["float", "int", "long"] or param <= 0:
raise ValueError(description + " {} not supported, should be positive numeric".format(param))
@staticmethod
def check_nonnegative_number(param, description):View on GitHub (pinned to 554fb1133a)
Solutions
- Fill the field named in the description with a non-empty value in the component's params.
- Add UI-level required-field enforcement so the canvas cannot be run with empty required inputs.
- When generating DSLs programmatically, assert required fields are non-empty before save/run.
- If the field is genuinely optional for your use, remove the check_empty call for it rather than defaulting to junk values.
Example fix
# before
params = {"prompt": ""}
# after
params = {"prompt": "Summarize the following:"} Defensive patterns
Strategy: validation
Validate before calling
def require_non_empty(conf, required_fields):
missing = [f for f in required_fields if not conf.get(f)]
if missing:
raise ValueError(f'required fields empty/missing: {missing}') Type guard
def is_filled(v) -> bool:
return v is not None and v != '' Try / catch
try:
param.check()
except ValueError as e:
if 'does not support empty value' in str(e):
field = parse_field(str(e))
raise ValueError(f'fill in required field: {field}') from e
raise Prevention
- Mark required fields in the UI and block run/save while empty.
- Assert non-empty required params in DSL generation scripts.
- Differentiate optional fields by removing their check_empty call, not by dummy values.
When it happens
Trigger: A component check() invoking check_empty(param, description) with an empty string or None — e.g. a Generation node with an empty prompt, a Retrieval node with no dataset selected.
Common situations: Creating a component in the canvas and forgetting to fill a required field; clearing a dropdown in the UI without picking a replacement; templates shipped with placeholder fields the user never filled; programmatic DSL generation omitting keys.
Related errors
- {component_name}: {e}
- Param define nesting too deep!!!, can not parse it
- cpn `{name}` has redundant parameters: `{[redundant_attrs]}`
- Please check runtime conf, {} = {} does not match user-param
- {} not supported, should be string type
AI-assisted analysis of infiniflow/ragflow@554fb1133a (2026-08-15).
Data as JSON: /api/errors/b25fcdfd6d2a694e.
Report an issue: GitHub.