ATH-MaaS/Pixelle-Video · error · Exception
No description generated
Error message
No description generated
What it means
Raised when the workflow finished with status "completed" but the service could not extract any text description from result.outputs. It tries two formats — selfhost text outputs ({'6': {'text': [...]}}) and RunningHub raw_data txt file URLs — and raises if neither yields non-empty text.
Source
Thrown at pixelle_video/services/image_analysis.py:189
# Format: {'raw_data': [{'fileUrl': 'https://...txt', 'fileType': 'txt', ...}]}
if not description and result.outputs and 'raw_data' in result.outputs:
raw_data = result.outputs['raw_data']
if raw_data and len(raw_data) > 0:
# Find text file entry
for item in raw_data:
if item.get('fileType') == 'txt' and 'fileUrl' in item:
# Download text content from URL
import aiohttp
async with aiohttp.ClientSession() as session:
async with session.get(item['fileUrl']) as resp:
if resp.status == 200:
description = await resp.text()
description = description.strip()
break
if not description:
logger.error(f"No text found in outputs: {result.outputs}")
raise Exception("No description generated")
logger.info(f"✅ Image analyzed: {description[:100]}...")
return description
except Exception as e:
logger.error(f"Image analysis error: {e}")
raise
View on GitHub (pinned to 848b054e4f)
Solutions
- Inspect the logged 'No text found in outputs: {...}' payload to see the actual output shape
- Update the workflow so a text-output node (e.g. ShowText/SaveText) is present and enabled
- Extend the extraction to cover the new output format for the backend you use
- If using RunningHub, check the raw_data entry fileType/fileUrl and confirm the txt URL is still downloadable
Example fix
// before
if 'text' in node_output:
description = node_output['text'][0]
// after
if 'text' in node_output and node_output['text']:
description = node_output['text'][0]
elif 'string' in node_output and node_output['string']:
description = node_output['string'][0] Defensive patterns
Strategy: fallback
Validate before calling
def outputs_contain_text(outputs) -> bool:
if not outputs:
return False
if any('text' in o and o['text'] for o in outputs.values()):
return True
rd = outputs.get('raw_data') or []
return any(i.get('fileType') == 'txt' and i.get('fileUrl') for i in rd) Type guard
def extract_text_output(node_output) -> str | None:
if isinstance(node_output, dict):
texts = node_output.get('text') or node_output.get('string')
if isinstance(texts, list) and texts and isinstance(texts[0], str):
return texts[0]
return None Try / catch
try:
desc = await analyzer(image_path=img, source=src)
except Exception as e:
logger.warning(f"no description extracted ({e}); using placeholder")
desc = "(no description available)" Prevention
- Pin and test the analysis workflow JSON — output node ids/keys are the contract
- After backend upgrades, run one smoke analysis and log result.outputs to verify format
- Download RunningHub txt URLs promptly; they can expire
- Treat empty-string outputs the same as missing and handle explicitly
When it happens
Trigger: Workflow completed but its LLM/text node output node id changed so 'text' key is absent from outputs; RunningHub returned raw_data without a fileType=='txt' item; the txt fileUrl download returned non-200; or outputs is empty/None.
Common situations: Edited or upgraded workflow JSON renamed the output node; backend switched between selfhost and RunningHub so the output format changed; RunningHub returned a URL that expired before download; text node produced an empty string.
Related errors
- No default workflow configured for {self.service_name}. Plea
- Workflow '{workflow}' not found. Available workflows: {avail
- Image analysis failed: {error_msg}
- Progress must be between 0.0 and 1.0, got {self.progress}
- dashscope package not installed. Run: pip install dashscope
AI-assisted analysis of ATH-MaaS/Pixelle-Video@848b054e4f (2026-08-30).
Data as JSON: /api/errors/453db4dd304a7d82.
Report an issue: GitHub.