# Qwen2.5 VL AWQ 3B

**Qwen2.5 VL AWQ 3B** is a vision-language model with 3 billion parameters. It reads text and images, returns text, and handles visual analysis, agentic reasoning, long video comprehension, visual localization, and structured output generation. [AI Inference](/en/documentation/platform/ai-inference/) runs it under the id `qwen-qwen25-vl-3b-instruct-awq`.

## Model details

The id is what a request sends to reach this model, and `Azion.AI.run` takes it as the first argument. The HuggingFace repository holds the model card.

| Detail                     | Value                                                                                     |
| -------------------------- | ----------------------------------------------------------------------------------------- |
| Model name                 | Qwen2.5 VL                                                                                |
| Version                    | AWQ 3B                                                                                    |
| Model category             | Vision-Language Model (VLM)                                                               |
| Model id                   | `qwen-qwen25-vl-3b-instruct-awq`                                                          |
| Size                       | 3B parameters                                                                             |
| HuggingFace model          | [Qwen/Qwen2.5-VL-3B-Instruct-AWQ](https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct-AWQ) |
| OpenAI-compatible endpoint | [OpenAI Chat API](https://developers.openai.com/api/reference/overview)                   |
| License                    | [Apache 2.0](https://choosealicense.com/licenses/apache-2.0/)                             |

## Capabilities

These capabilities are properties of the model, and a request body does not set them. For every field a chat request accepts, with its type, default, and bounds, refer to [Model invocation](/en/documentation/platform/ai-inference/model-invocation/).

| Capability     | Value          |
| -------------- | -------------- |
| Input data     | Text and image |
| Context length | 32k tokens     |
| Tool calling   | Yes            |
| Supports LoRA  | Yes            |

---

## Usage

You call this model from a [function](/en/documentation/platform/functions/), through the `Azion.AI.run` binding. The first argument is the model id, and the second is an OpenAI-compatible request body. Each example on this page uses that binding. For the HTTP form of the same request, refer to [Model invocation](/en/documentation/platform/ai-inference/model-invocation/).

### Chat completion

This request carries a system message that sets the behavior of the model and a user message that holds the prompt:

```ts
const modelResponse = await Azion.AI.run("qwen-qwen25-vl-3b-instruct-awq", {
  "stream": false,
  "messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    { "role": "user", "content": "Name the European capitals." }
  ]
})
```

One entry arrives in `choices`, and the text the model generated sits at `choices[0].message.content`:

```json
{
  "id": "chatcmpl-0123456789abcdef0123456789abcdef",
  "object": "chat.completion",
  "created": 1767268800,
  "model": "qwen-qwen25-vl-3b-instruct-awq",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "reasoning_content": null,
        "content": "Sure! Here is a list of some European capitals...",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop",
      "stop_reason": null
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "total_tokens": 527,
    "completion_tokens": 518,
    "prompt_tokens_details": null
  },
  "prompt_logprobs": null
}
```

### Tool calling

A `tools` array declares the functions the model may call. Every entry sets `type` to `function` and carries a `function` object with three fields: the `name` the model returns, a `description` of what the function does, and the `parameters` it accepts, written as a JSON Schema object:

```ts
const modelResponse = await Azion.AI.run("qwen-qwen25-vl-3b-instruct-awq", {
  "stream": false,
  "messages": [
    { "role": "system", "content": "You are a helpful assistant with access to tools." },
    { "role": "user", "content": "What is the weather in London?" }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get the current weather for a location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state"
            }
          },
          "required": ["location"]
        }
      }
    }
  ]
})
```

A response that selects a tool carries `null` in `content`, one entry in `tool_calls` holding the function name and the arguments the model chose, and `tool_calls` in `finish_reason`:

```json
{
  "id": "chatcmpl-fedcba9876543210fedcba9876543210",
  "object": "chat.completion",
  "created": 1746821866,
  "model": "qwen-qwen25-vl-3b-instruct-awq",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "reasoning_content": null,
        "content": null,
        "tool_calls": [
          {
            "id": "chatcmpl-tool-0123456789abcdef0123456789abcdef",
            "type": "function",
            "function": {
              "name": "get_weather",
              "arguments": "{\"location\": \"London\"}"
            }
          }
        ]
      },
      "logprobs": null,
      "finish_reason": "tool_calls",
      "stop_reason": null
    }
  ],
  "usage": {
    "prompt_tokens": 293,
    "total_tokens": 313,
    "completion_tokens": 20,
    "prompt_tokens_details": null
  },
  "prompt_logprobs": null
}
```

### Multimodal input

A user message that carries an image sets `content` to an array of parts instead of a string. Each part states its `type`: a `text` part holds the prompt, and an `image_url` part holds the URL the model reads the image from. For every content part a message accepts, refer to [Message objects](/en/documentation/platform/ai-inference/model-invocation/#message-objects).

This request sends one text part and one image part inside the same user message:

```ts
const modelResponse = await Azion.AI.run("qwen-qwen25-vl-3b-instruct-awq", {
  "stream": false,
  "messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "What is in this image?" },
        { "type": "image_url", "image_url": { "url": "https://example.com/image.jpg" } }
      ]
    }
  ]
})
```

The model returns the same response object as a chat completion, and what it read in the image sits at `choices[0].message.content`.

---

## Related resources

- [Model invocation](/en/documentation/platform/ai-inference/model-invocation.md): The request fields, the message objects, and the HTTP endpoint that takes the same body.
- [AI models](/en/documentation/platform/ai-inference/models.md): The catalog of models AI Inference runs, with the id and the capabilities of each one.
- [AI Inference](/en/documentation/platform/ai-inference.md): The product that loads and runs this model.
- [Functions](/en/documentation/platform/functions.md): The product whose runtime carries the binding these examples call.
- [LoRA Fine-Tune](/en/documentation/platform/ai-inference/lora-fine-tune.md): The extension of AI Inference that adapts a model with LoRA, and the models that accept it.
- [Glossary](/en/documentation/platform/ai-inference/glossary.md): Where model id, context length, and the rest of the AI Inference vocabulary are defined.
