Install
openclaw skills install aliyun-qwen-vlUse when understanding images with Alibaba Cloud Model Studio Qwen VL models (qwen3-vl-plus/qwen3-vl-flash and latest aliases). Use when building image Q&A, visual analysis, OCR-like extraction, chart/table reading, or screenshot understanding workflows.
openclaw skills install aliyun-qwen-vlCategory: provider
mkdir -p output/aliyun-qwen-vl
python -m py_compile skills/ai/multimodal/aliyun-qwen-vl/scripts/analyze_image.py && echo "py_compile_ok" > output/aliyun-qwen-vl/validate.txt
Pass criteria: command exits 0 and output/aliyun-qwen-vl/validate.txt is generated.
output/aliyun-qwen-vl/.Use Qwen VL models for image input + text output understanding tasks via DashScope compatible-mode API.
python3 -m venv .venv
. .venv/bin/activate
python -m pip install requests
DASHSCOPE_API_KEY in environment, or add dashscope_api_key to ~/.alibabacloud/credentials.Prefer the Qwen3 VL family:
qwen3-vl-plusqwen3-vl-flashWhen you need explicit "latest" routing or reproducible snapshots, use supported aliases/snapshots from the official model list, such as:
qwen3-vl-plus-latestqwen3-vl-plus-2025-12-19qwen3-vl-flash-2026-01-22qwen3-vl-flash-latestLegacy names still seen in some workloads:
qwen-vl-max-latestqwen-vl-plus-latestFor OCR-specialized extraction, prefer skills/ai/multimodal/aliyun-qwen-ocr/ instead of using the general VL skill.
prompt (string, required): user question/instruction about image.image (string, required): HTTPS URL, local path, or data: URL.model (string, optional): default qwen3-vl-plus.max_tokens (int, optional): default 512.temperature (float, optional): default 0.2.detail (string, optional): auto/low/high, default auto.json_mode (bool, optional): return JSON-only response when possible.schema (object, optional): JSON Schema for structured extraction.max_retries (int, optional): retry count for 429/5xx, default 2.retry_backoff_s (float, optional): exponential backoff base seconds, default 1.5.text (string): primary model answer.model (string): model actually used.usage (object): token usage if returned by backend.python skills/ai/multimodal/aliyun-qwen-vl/scripts/analyze_image.py \
--request '{"prompt":"Summarize the main content in this image","image":"https://example.com/demo.jpg"}' \
--print-response
Using local image:
python skills/ai/multimodal/aliyun-qwen-vl/scripts/analyze_image.py \
--request '{"prompt":"Extract key information from the image","image":"./samples/invoice.png","model":"qwen3-vl-plus"}' \
--print-response
Structured extraction (JSON mode):
python skills/ai/multimodal/aliyun-qwen-vl/scripts/analyze_image.py \
--request '{"prompt":"Extract fields: title, amount, date","image":"./samples/invoice.png"}' \
--json-mode \
--print-response
Structured extraction (JSON Schema):
python skills/ai/multimodal/aliyun-qwen-vl/scripts/analyze_image.py \
--request '{"prompt":"Extract invoice fields","image":"./samples/invoice.png"}' \
--schema skills/ai/multimodal/aliyun-qwen-vl/references/examples/invoice.schema.json \
--print-response
curl -sS https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model":"qwen3-vl-plus",
"messages":[
{
"role":"user",
"content":[
{"type":"image_url","image_url":{"url":"https://example.com/demo.jpg"}},
{"type":"text","text":"Describe this image and list executable actions"}
]
}
],
"max_tokens":512,
"temperature":0.2
}'
--output is set, JSON response is saved to that file.output/aliyun-qwen-vl/.python tests/ai/multimodal/aliyun-qwen-vl-test/scripts/smoke_test_qwen_vl.py \
--image ./tmp/vl_test_cat.png
| Error | Likely cause | Action |
|---|---|---|
| 401/403 | Missing or invalid key | Check DASHSCOPE_API_KEY and account permissions. |
| 400 | Invalid request schema or unsupported image source | Validate messages content and image URL/path format. |
| 429 | Rate limit | Retry with exponential backoff and lower concurrency. |
| 5xx | Temporary backend issue | Retry with backoff and idempotent request design. |
-latest.references/sources.mdreferences/api_reference.md