ATH-MaaS/Pixelle-Video · error · RuntimeError
DashScope QwenVLClient failed: {getattr(response, 'message',
Error message
DashScope QwenVLClient failed: {getattr(response, 'message', response)} What it means
chat() calls MultiModalConversation.call() and checks response.status_code == 200. When the DashScope API returns a non-200 status (the response object carries an error message instead of output.choices), the client raises RuntimeError('DashScope QwenVLClient failed: ...') embedding response.message or the raw response. This is an API-level failure reported by the DashScope service, re-raised as a Python RuntimeError.
Source
Thrown at pixelle_video/services/api_services/vlm_dashscope.py:78
*({"image": p} for p in images),
*({"video": p} for p in videos or []),
]
messages = [{"role": "user", "content": content}]
response = MultiModalConversation.call(
model=model,
messages=messages,
api_key=self.api_key,
enable_thinking=False,
**(parameters or {})
)
if hasattr(response, 'status_code') and response.status_code == 200:
# qwen3.5-plus 的返回格式为 { choices: [ { message: { content: [...] } } ] }
resp = response.output.choices[0].message.content[0]
if resp.get('text'):
return resp['text']
return resp
else:
raise RuntimeError(f"DashScope QwenVLClient failed: {getattr(response, 'message', response)}")
except Exception as e:
raise RuntimeError(f"DashScope QwenVLClient error: {e}")
if __name__ == "__main__":
import sys
import time
import json
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from config import Config
# 支持的 VLM 模型列表
MODELS = ["qwen3.6-plus", "qwen3.6-flash", "kimi-k2.6"]
print("=== Qwen VL (DashScope) 多模态可用性测试 ===")
api_key = getattr(Config, "DASHSCOPE_API_KEY", None) or os.getenv("DASHSCOPE_API_KEY", "")
if not api_key:
print("✗ DASHSCOPE_API_KEY 未设置,跳过")View on GitHub (pinned to 848b054e4f)
Solutions
- Read the embedded response.message in the error text to get DashScope's specific error code (e.g. InvalidApiKey, Throttling, InvalidParameter).
- Verify DASHSCOPE_API_KEY is set and valid for the account/region.
- Confirm the model name passed to chat() is valid and enabled (e.g. 'qwen3.5-plus', 'qwen3-vl-plus').
- Check that all image/video paths exist locally or are reachable URLs.
- Add retry/backoff if the message indicates throttling or transient server errors.
Example fix
# before
result = client.chat(text, images=['missing.png'], model='qwen3.5-plus')
RuntimeError: DashScope QwenVLClient failed: InvalidParameter: file not found
# after
img = 'missing.png'
assert os.path.exists(img), f'image not found: {img}'
result = client.chat(text, images=[img], model='qwen3.5-plus') Defensive patterns
Strategy: try-catch
Validate before calling
import os
assert os.getenv("DASHSCOPE_API_KEY"), "DASHSCOPE_API_KEY not set"
for p in images:
assert p.startswith(("http://", "https://")) or os.path.exists(p), f"bad image path: {p}" Type guard
def is_ok_response(response) -> bool:
return (
hasattr(response, "status_code")
and response.status_code == 200
and getattr(getattr(response, "output", None), "choices", None)
) Try / catch
try:
result = client.chat(text=text, images=images, model=model)
except RuntimeError as e:
msg = str(e)
if "failed:" in msg: # non-200 status from DashScope
logger.error(f"DashScope API rejected request: {msg}") # inspect code in msg
# handle: fix key/model/inputs, or fall back to another provider Prevention
- Validate DASHSCOPE_API_KEY at startup before making calls.
- Whitelist/verify model names before passing them to chat().
- Check that every image/video path exists (or is a reachable URL) before the call.
- Handle throttling with exponential backoff for batch workloads.
When it happens
Trigger: Any call where the DashScope multimodal endpoint returns status_code != 200: invalid/absent DASHSCOPE_API_KEY, unknown model name (e.g. misspelled qwen model), malformed image/video path or URL, payload rejected by the API, throttling/quota errors, or service-side errors surfaced in response.message.
Common situations: Expired or wrong API key; using a model id not enabled for the account; passing a local image path that doesn't exist (can't be converted to file://); region/account without access to qwen3.5-plus or qwen3-vl-plus; rate limits during batch processing.
Related errors
- rsp.code
- DashScope QwenVLClient error: {e}
- Image generation failed: {response.code}, {response.message}
- 万象视频任务查询失败: status={rsp.status_code}, code={rsp.code}, messa
- DashScope VLM model must be explicitly selected.
AI-assisted analysis of ATH-MaaS/Pixelle-Video@848b054e4f (2026-08-30).
Data as JSON: /api/errors/07b3ebec4d7a3231.
Report an issue: GitHub.