sgl-project/sglang · error · ValueError
No prompts found in file: {path}
Error message
No prompts found in file: {path} What it means
The prompt file given to DiffusionGenerator.generate exists and was opened successfully, but contains no non-blank lines after stripping, so no prompts could be extracted. Rather than sending an empty batch, the loader raises this ValueError.
Source
Thrown at python/sglang/multimodal_gen/runtime/entrypoints/diffusion_generator.py:489
raise RuntimeError(output_batch.error)
if output_batch.output is None:
raise RuntimeError("action policy returned no output")
return output_batch.output[0]
def _resolve_prompts(
self,
prompt: str | list[str] | None,
prompt_path: str | None = None,
) -> list[str]:
"""Collect prompts from the argument or from a prompt file."""
path = prompt_path or self.server_args.prompt_file_path
if path is not None:
if not os.path.exists(path):
raise FileNotFoundError(f"Prompt text file not found: {path}")
with open(path, encoding="utf-8") as f:
prompts = [line.strip() for line in f if line.strip()]
if not prompts:
raise ValueError(f"No prompts found in file: {path}")
logger.info("Found %d prompts in %s", len(prompts), path)
return prompts
if prompt is None:
return [" "]
if isinstance(prompt, str):
return [prompt]
return list(prompt)
def _log_summary(self, results: list[GenerationResult]) -> None:
if not results:
return
if self.server_args.warmup_mode != "off":
total_duration_ms = results[0].metrics.get("total_duration_ms", 0)
logger.info(
f"Warmed-up request processed in {GREEN}%.2f{RESET} seconds (with warmup excluded)",
total_duration_ms / 1000.0,
)View on GitHub (pinned to 0132848349)
Solutions
- Open the file and confirm it has at least one non-empty line
- Regenerate the prompt file if it was truncated by an upstream step
- Guard your pipeline: skip generation when the prompt file is empty
- Check the file encoding is UTF-8 text and not, e.g., binary or UTF-16 read as one line
Example fix
# before
open("prompts.txt","w").close() # accidentally empty
generator.generate(prompt_path="prompts.txt")
# after
with open("prompts.txt","w") as f:
f.write("a red panda\n")
generator.generate(prompt_path="prompts.txt") Defensive patterns
Strategy: validation
Validate before calling
def load_prompts(path):
lines = [l.strip() for l in open(path, encoding="utf-8") if l.strip()]
if not lines:
raise SystemExit(f"prompt file {path} has no prompts")
return lines Type guard
def has_prompts(path) -> bool:
return any(l.strip() for l in open(path, encoding="utf-8")) Prevention
- Validate prompt files at pipeline build time, not at generation time
- Check upstream steps that write prompt files actually produced content
When it happens
Trigger: generate(prompt_path=...) where the file is empty, contains only whitespace/newlines, or only blank lines; a server launched with --prompt-file-path pointing at a truncated/placeholder file.
Common situations: Downstream step of a pipeline wrote an empty prompt file; encoding mismatch making every line unreadable; placeholder file committed by mistake; file truncated by a previous crash.
Related errors
- Prompt text file not found: {path}
- metal_shader_sources is empty; nothing to compile
- unsupported input for causal Conv3D cat/pad CUDA
- unsupported input for usp_merge_heads CUDA
- unsupported input for modulate_scale_shift CUDA
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/ab8c42e2f970350d.
Report an issue: GitHub.