Qwen-VL
Run any Qwen vision model - natively or via OpenRouter.
Run any Qwen vision-language model - natively on Roboflow infrastructure or via OpenRouter.
You can specify arbitrary text prompts or predefined ones, the block supports the following types of prompt:
Open Prompt (
unconstrained) - Use any prompt to generate a raw responseText Recognition (OCR) (
ocr) - Model recognizes text in the imageVisual Question Answering (
visual-question-answering) - Model answers the question you submit in the promptCaptioning (short) (
caption) - Model provides a short description of the imageCaptioning (
detailed-caption) - Model provides a long description of the imageSingle-Label Classification (
classification) - Model classifies the image content as one of the provided classesMulti-Label Classification (
multi-label-classification) - Model classifies the image content as one or more of the provided classesUnprompted Object Detection (
object-detection) - Model detects and returns the bounding boxes for prominent objects in the imageStructured Output Generation (
structured-answering) - Model returns a JSON response with the specified fields
🛠️ Backend selection
Native (Roboflow) - small Qwen-VL models (0.8B–7B) run on the same infrastructure as your other Roboflow models. Lower latency. Recommended for tasks like OCR, captioning, and visual question answering.
OpenRouter - large hosted Qwen models (9B–397B) reached via OpenRouter. Defaults to a Roboflow-managed API key and bills your Roboflow credits. Paste your own
sk-or-...key in theapi_keyfield to bypass Roboflow billing. Recommended for structured tasks that benefit from larger models (classification, object-detection, structured-answering).
The model_version dropdown lists every supported variant; each is bound to one backend. A validator catches mismatches between your selected backend and model.
🔒 Privacy filter (OpenRouter only)
No data collection (default) – providers may not train on your inputs.
Allow data collection – broader provider pool.
Zero data retention – strictest, restricts to providers that retain nothing.
Type identifier
Use the following identifier in step "type" field: roboflow_core/qwen_vlm@v1 to add the block as a step in your workflow.
Properties
Name
Type
Description
Refs
name
str
Enter a unique identifier for this step..
❌
api_key
str
OpenRouter API key (only used when backend=openrouter). Defaults to Roboflow's managed key. Provide your own sk-or-... key to call OpenRouter directly without Roboflow billing..
✅
privacy_level
str
Provider privacy filter (only used when backend=openrouter). Stricter levels reduce the pool of providers and may increase per-call cost on the managed key..
❌
max_tokens
int
Maximum number of tokens the model can generate in its response..
❌
temperature
float
Sampling temperature (only used when backend=openrouter). The native Qwen-VL runtime doesn't accept a temperature knob. Range 0.0-2.0 - higher = more random / "creative" generations..
✅
max_concurrent_requests
int
Maximum number of OpenRouter requests to run in parallel for a batch of images (only used when backend=openrouter). The native backend processes images sequentially. If unset, falls back to the global Workflows Execution Engine default. Restrict this if you hit OpenRouter rate limits..
❌
backend
str
Where to run inference. Native = Roboflow infrastructure. OpenRouter = large hosted Qwen models via OpenRouter..
❌
model_version
str
Native Qwen-VL variant. Pick a pre-trained model or Fine-tuned model to use a Qwen3 fine-tune from your workspace..
✅
fine_tuned_model_id
str
Fine-tuned Qwen3-VL model from your workspace, in workspace/version form..
✅
openrouter_model_version
str
OpenRouter-hosted Qwen variant..
✅
task_type
str
Task type to be performed by model. Value determines required parameters and output response..
❌
prompt
str
Text prompt to the Qwen model.
✅
enable_thinking
bool
Enable Qwen3.5-VL's reasoning mode, where the model emits thinking tokens before its answer. The reasoning trace is returned in the thinking output. Only the Qwen 3.5 VL 2B checkpoint (and Qwen3-VL fine-tunes derived from it) supports this; ignored elsewhere..
❌
output_structure
Dict[str, str]
Dictionary with structure of expected JSON response.
❌
classes
List[str]
List of classes to be used.
✅
The Refs column marks possibility to parametrise the property with dynamic values available in workflow runtime. See Bindings for more info.
Runtime compatibility
requires_internet - air-gapped / offline deployments : This block depends on a service that is not reachable from fully offline / air-gapped deployments.
Input and Output Bindings
The available connections depend on its binding kinds. Check what binding kinds Qwen-VL in version v1 has.
Input and output bindings
input
api_key(Union[ROBOFLOW_MANAGED_KEY,secret,string]): OpenRouter API key (only used when backend=openrouter). Defaults to Roboflow's managed key. Provide your ownsk-or-...key to call OpenRouter directly without Roboflow billing..temperature(float): Sampling temperature (only used when backend=openrouter). The native Qwen-VL runtime doesn't accept a temperature knob. Range 0.0-2.0 - higher = more random / "creative" generations..images(image): The image to infer on..model_version(string): Native Qwen-VL variant. Pick a pre-trained model orFine-tuned modelto use a Qwen3 fine-tune from your workspace..fine_tuned_model_id(Union[roboflow_model_id,string]): Fine-tuned Qwen3-VL model from your workspace, inworkspace/versionform..openrouter_model_version(string): OpenRouter-hosted Qwen variant..prompt(string): Text prompt to the Qwen model.classes(list_of_values): List of classes to be used.
output
output(Union[string,language_model_output]): String value ifstringor LLM / VLM output iflanguage_model_output.classes(list_of_values): List of values of any type.thinking(string): String value.
Last updated
Was this helpful?