Source: https://ailoot.ai/models/es/qwen2-5-vl-7b-instruct/
Canonical: https://ailoot.ai/models/es/qwen2-5-vl-7b-instruct/
Language: es

# Qwen2.5 VL 7B Instruct

[Markdown](https://ailoot.ai/models/es/qwen2-5-vl-7b-instruct/index.md) · [JSON](https://ailoot.ai/models/es/qwen2-5-vl-7b-instruct/facts.json)

## [Qwen2.5 VL 7B Instruct](https://ailoot.ai/models/es/qwen2-5-vl-7b-instruct/)

Qwen2.5-VL-7B-Instruct es un modelo de visión y lenguaje para imágenes, documentos y vídeo. Genera texto y resultados estructurados, incluidos cuadros de objetos, puntos y atributos, e incorpora a la edición 7B la localización temporal de eventos y las capacidades de agente visual.

- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen2.5-vl-7b-instruct`](https://ailoot.ai/models/es/qwen2-5-vl-7b-instruct/#method-0)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen2.5-vl-7b-instruct`](https://ailoot.ai/models/es/qwen2-5-vl-7b-instruct/#method-1)

Sobre el modelo

Esta descripción cubre las capacidades del modelo. Las entradas, salidas y opciones disponibles en Ailoot se indican a continuación para el método seleccionado.

Qwen2.5-VL-7B-Instruct es la edición 7B de Qwen2.5-VL ajustada para seguir instrucciones. Combina una instrucción de texto con imágenes o vídeo y devuelve un resultado textual. Las principales mejoras del desarrollador abarcan el reconocimiento de objetos y detalles visuales, el análisis de texto y diseños, las tareas de agente visual, la comprensión de eventos en vídeos largos, la localización de objetos y la extracción estructurada de documentos.

Comprensión del contenido visual

La familia va más allá de identificar el sujeto principal de una fotografía. Entre sus tareas documentadas se encuentran el análisis de texto, gráficos de datos, iconos, elementos gráficos y la disposición de los elementos de una imagen. Para un gráfico de datos, especifica la serie o la relación que se debe examinar y conserva los ejes, la leyenda y las unidades. Para un diagrama, pregunta cómo se conectan los componentes etiquetados y qué indica la disposición visible sobre el proceso.

Una comparación útil puede incluir un diseño original y otro revisado, identificar cuál es cada uno y solicitar los cambios visibles con respecto a una breve lista de requisitos. Pide que la observación vaya acompañada de la región de la imagen pertinente. Así la respuesta tiene un propósito concreto, en lugar de pedir una descripción general de dos imágenes sin relación.

Flujos de trabajo de agentes visuales

El desarrollador presenta Qwen2.5-VL como un agente visual capaz de razonar sobre una pantalla y dirigir herramientas en tareas de uso de ordenadores o teléfonos. El modelo aporta una interpretación y una operación propuesta; la aplicación de agente que lo integra proporciona los controles, ejecuta la operación y devuelve el nuevo estado. Por tanto, una respuesta textual o una coordenada predicha es una parte de ese flujo de trabajo integrado.

Para una consulta sobre una interfaz, proporciona la captura de pantalla y el objetivo real, y después pregunta qué control visible es pertinente y qué se debe hacer a continuación. Concreta el resultado solicitado: la etiqueta del control, su ubicación y la acción prevista. Si la aplicación realiza esa acción, la siguiente captura de pantalla proporciona la entrada visual actualizada para una decisión posterior.

Vídeos largos y localización de eventos

El desarrollador describe la comprensión de vídeos de más de una hora y la identificación del segmento que contiene un evento solicitado. Esto amplía la descripción de vídeo a la localización temporal. Una tarea puede preguntar cuándo aparece un objeto por primera vez, en qué momento una demostración llega a un paso concreto o qué evento visible ocurre antes que otro. Indica si el resultado debe ser un resumen, una lista ordenada de eventos o tiempos de inicio y fin con una descripción del evento.

La familia se entrena con muestreo dinámico de la frecuencia de fotogramas y alinea la información posicional temporal con el tiempo absoluto. Por ello, la información sobre la frecuencia de fotogramas forma parte de la preparación del vídeo, en lugar de ser una etiqueta arbitraria que se pueda descartar cuando las marcas de tiempo importan. La capacidad documentada para vídeos largos no constituye una especificación universal de tamaño de archivo o duración máxima para todas las vías de entrada.

Localización de objetos y documentos estructurados

Qwen2.5-VL puede devolver cuadros delimitadores o puntos y organizar las coordenadas y los atributos en JSON. Esta versión utiliza coordenadas en la escala del tamaño real de la imagen, en lugar de las coordenadas normalizadas tradicionales. Especifica si la tarea necesita un cuadro envolvente, un punto concreto o una descripción del objeto, y conserva las dimensiones de la imagen y la información sobre cualquier cambio de tamaño que sea necesaria para interpretar la ubicación devuelta.

Por ejemplo, una solicitud de inventario visual puede pedir cada objeto objetivo, su cuadro y un atributo visible. Una tarea basada en puntos puede pedir la ubicación de un control etiquetado o de una parte concreta de un objeto. Son propuestas de diseño del resultado, no nombres de campos fijos que todas las solicitudes deban utilizar. Mantén cada coordenada asociada a su imagen de origen cuando se proporcionen varias imágenes.

El desarrollador destaca por separado la extracción estructurada de facturas escaneadas, formularios y tablas. Define los campos, conserva las etiquetas originales y pide una representación explícita cuando no se pueda leer un valor. Para una tabla, conserva las cabeceras de las columnas y las unidades junto con las filas solicitadas. Un registro práctico puede contener el identificador del documento, la etiqueta del campo, el valor extraído y su ubicación, de modo que el resultado sirva para una comparación posterior o una inspección humana.

Arquitectura y preparación de la entrada

El modelo combina resolución dinámica de imágenes y muestreo dinámico de vídeo con información posicional rotatoria multimodal actualizada. Su codificador visual utiliza atención por ventanas, SwiGLU y RMSNorm. Son cambios de arquitectura que facilitan el procesamiento visual y temporal; no añaden entrada de audio ni generación de imágenes al flujo documentado con resultado textual.

La ficha muestra una sola imagen, varias imágenes, una secuencia de fotogramas de vídeo, un archivo o referencia de vídeo y conversaciones por lotes. El procesador de imágenes documenta un intervalo predeterminado de 4 a 16,384 tokens visuales por imagen. Los ajustes de píxeles mínimos y máximos conservan la relación de aspecto; las dimensiones exactas solicitadas se redondean a un múltiplo de 28. El intervalo de ejemplo de 256 a 1,280 tokens visuales es una ilustración ajustable, no otro límite estricto de imagen. Conserva el detalle que necesita la pregunta al elegir un cambio de tamaño.

Contexto y ajustes sensibles a la localización

La configuración publicada establece las posiciones máximas en 128,000. La sección de texto largo de la ficha del modelo describe por separado una base de 32,768 tokens y un ejemplo de extensión con YaRN. Advierte expresamente de que esta extensión afecta de forma significativa a la localización temporal y espacial y no la recomienda. La guía también trata el cambio de las posiciones máximas para vídeos largos; son notas de configuración, no un límite de entrada incondicional para todas las tareas.

Mantén la configuración exacta de la versión y el preprocesamiento visual alineados con la tarea, especialmente cuando importen las coordenadas o los tiempos de los eventos. El ejemplo de generación de 128 tokens de la ficha no especifica una capacidad máxima de salida independiente. Qwen2.5-VL-7B-Instruct produce texto, coordenadas y resultados estructurados; una acción externa, una imagen renderizada, un vídeo o una respuesta hablada requieren otro componente de la aplicación.

Tarea práctica

### Tarea práctica

Ejemplo técnico en inglés

```
Extract a transcribed invoice table

Extract line items from this invoice transcription: "Invoice N-33; item | quantity | unit price; Clip | 4 | 2.50; Folder | 2 | unreadable." Return each item with quantity, unit price and source invoice ID. Mark the unreadable price explicitly and do not infer it from a total. No image is supplied.
```

#### Resultado esperado

```
A two-row field table retaining N-33 and an explicit unreadable value for the folder unit price.
```

#### Comprobar el resultado

```
Verify quantities are not swapped and the unreadable price is neither zero nor a guessed amount.
```

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen2.5-vl-7b-instruct`

[`qwen2.5-vl-7b-instruct`](https://ailoot.ai/models/es/#m=qwen2.5-vl-7b-instruct&route=Ultra&caller=qwen2.5-vl-7b-instruct&fmt=chat)

Alibaba /`qwen2.5-vl-7b-instruct`

### Primeros pasos

Qwen2.5-VL-7B-Instruct es un modelo de visión y lenguaje para imágenes, documentos y vídeo. Genera texto y resultados estructurados, incluidos cuadros de objetos, puntos y atributos, e incorpora a la edición 7B la localización temporal de eventos y las capacidades de agente visual.

Entradas aceptadas

Texto

Resultados

Texto

### Disponible en Ailoot · entradas y métodos

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

Tipos de entrada

`text`

Tipos de salida

`text`

Formato de salida

json o SSE

| Campo | Tipo | Requisito | Valores y límites | Predeterminado |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObligatorio | Valores y límites qwen2.5-vl-7b-instruct | Predeterminado— |
| Campo`messages` | Tipo`message[]` | RequisitoObligatorio | Valores y límites Número mínimo de elementos: 1 | Predeterminado— |
| Campo`messages[].role` | Tipo`string` | RequisitoObligatorio | Valores y límites Ejemplos: system, user, assistant, tool, function Condiciones: Estos roles están representados explícitamente por los tipos de compatibilidad del código fuente; el conjunto exacto de roles depende del modelo. Depende del modelo | Predeterminado— |
| Campo`messages[].content` | Tipo`string\|content_part[]\|null` | RequisitoOpcional | Valores y límites | Predeterminado— |
| Campo`messages[].tool_calls` | Tipo`tool_call[]` | RequisitoOpcional | Valores y límites | Predeterminado— |
| Campo`messages[].tool_call_id` | Tipo`string` | RequisitoOpcional | Valores y límites Se aplica cuando: role=tool; utiliza el ID real devuelto | Predeterminado— |
| Campo`messages[].name` | Tipo`string` | RequisitoOpcional | Valores y límites | Predeterminado— |
| Campo`messages[].reasoning_content` | Tipo`string` | RequisitoOpcional | Valores y límites Se aplica cuando: Devuelve en los turnos siguientes el razonamiento realmente recibido cuando este modelo lo utilice | Predeterminado— |
| Campo`messages[].reasoning_details` | Tipo`object\|array` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`max_tokens` | Tipo`integer` | RequisitoOpcional | Valores y límites Mínimo: 1 Depende del modelo | Predeterminado— |
| Campo`max_completion_tokens` | Tipo`integer` | RequisitoOpcional | Valores y límites Mínimo: 1 Depende del modelo | Predeterminado— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores y límites | Predeterminadofalse |
| Campo`stream_options.include_usage` | Tipo`boolean` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`stop` | Tipo`string\|string[]` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`tools` | Tipo`function_tool[]` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`tools[].type` | Tipo`string` | RequisitoOpcional | Valores y límites function Depende del modelo | Predeterminado— |
| Campo`tools[].function.name` | Tipo`string` | RequisitoObligatorio | Valores y límites Se aplica cuando: herramienta de función proporcionada | Predeterminado— |
| Campo`tools[].function.description` | Tipo`string` | RequisitoOpcional | Valores y límites | Predeterminado— |
| Campo`tools[].function.parameters` | Tipo`JSON_schema` | RequisitoOpcional | Valores y límites | Predeterminado— |
| Campo`tool_choice` | Tipo`string\|object` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`parallel_tool_calls` | Tipo`boolean` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`response_format` | Tipo`object` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`reasoning_effort` | Tipo`string` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`reasoning` | Tipo`object` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`service_tier` | Tipo`string` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`instructions` | Tipo`string` | RequisitoOpcional | Valores y límites Campo de compatibilidad | Predeterminado— |
| Campo`functions` | Tipo`function[]` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`function_call` | Tipo`string\|object` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`prompt_cache_options` | Tipo`object` | RequisitoOpcional | Valores y límites Depende del modelo | Predeterminado— |
| Campo`modalities` | Tipo`string[]` | RequisitoOpcional | Valores y límites text | Predeterminado— |
| Campo`provider` | Tipo`object` | RequisitoOpcional | Valores y límites Condiciones: provider.options se rechaza en esta ruta de texto Ultra | Predeterminado— |
| Campo`cache_control.ttl` | Tipo`string` | RequisitoOpcional | Valores y límites Condiciones: 1h se rechaza en los campos reales de caché de instrucciones | Predeterminado— |

Combinaciones de materiales de entrada

**Texto** · Texto UTF8

`messages[].content`

Parámetros del método y ciclo de vida

| Parámetro | Contrato |
| --- | --- |
| Parámetro`content_type` | Contratoapplication/json |
| Parámetro`required` | Contratomodel, messages |
| Parámetro`material_types` | Contratotext |
| Parámetro`messages` | Contratomatriz de mensajes con estructura role/content |
| Parámetro`file_material` | Contratodocumento real en UTF-8 insertado como texto literal; no se deduce ningún ID de archivo |
| Parámetro`optional_controls` | Contratostream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parámetro`control_scope` | Contratodepende del modelo; las herramientas de funciones del usuario difieren de las herramientas alojadas |
| Parámetro`output_modalities` | Contratotext |
| Parámetro`hosted_operations` | Contratofalse |
| Parámetro`multimodal_input_binding` | Contratonull |

Ciclo de vida: `synchronous_or_streamed`

Envía el ID exacto del modelo junto con messages.

La longitud del contexto no es un límite máximo de salida.

Un archivo de texto puede aportar texto literal; las entradas de imagen, audio u objetos de archivo requieren una vinculación exacta.

### Planes

Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.

Modo rápido

Sin especificar Cuando se selecciona el modo rápido

Modo flex

Sin especificar Cuando se selecciona el modo flex

Esfuerzo máximo de razonamiento

Sin especificar Cuando el esfuerzo máximo de razonamiento utiliza el ajuste predeterminado (default)

#### Tarifas de Ailoot

#### Precios por configuración

| Configuración | Tabla de tarifas | Cargo |
| --- | --- | --- |
| ConfiguraciónTarifas base por token | Tabla de tarifasTarifa base | Cargo Entrada · Tokens de entrada **$0.0001** / 1K tokens Salida · Tokens de salida **$0.0001** / 1K tokens Entrada · Lectura de caché **$0** / 1K tokens Entrada · Escritura en caché **$0** / 1K tokens Entrada · Escritura en caché, 1 hora **—** / 1K tokens |

Ailoot reserva un importe estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. [Cómo funcionan la reserva y la liquidación →](https://ailoot.ai/docs/es/billing/reserve/)

### Solicitudes de ejemplo

#### Ailoot Ultra · OpenAI Chat

curlPython SDKFlujo en Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen2.5-vl-7b-instruct", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='qwen2.5-vl-7b-instruct',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='qwen2.5-vl-7b-instruct',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Recibir y guardar resultados

#### Ailoot Ultra · OpenAI Chat

json o SSE

##### Conserva todos los resultados completados

Conserva todas las respuestas, archivos y partes de contenido completos recibidos.

Conserva cada alternativa y su contenido, llamadas de herramientas y razonamiento. En SSE, ensambla los fragmentos incrementales por índice de alternativa/herramienta y conserva el motivo final de terminación y el uso.

##### Si es necesario revisar la respuesta original

Conserva los ID de solicitud y respuesta y las cabeceras. No se proporciona una URL genérica para recuperar tareas de texto.

Campos de respuesta

| Campo | Tipo |
| --- | --- |
| Campo`choices[].index` | Tipointeger |
| Campo`choices[].message.content` | Tipostring\|null |
| Campo`choices[].message.tool_calls` | Tipotool\_call\[\] |
| Campo`choices[].message.reasoning_content` | Tipostring |
| Campo`choices[].message.reasoning_details` | Tipoobject\|array |
| Campo`choices[].finish_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Errores y siguientes pasos

| Respuesta | Condición | Siguiente paso |
| --- | --- | --- |
| Respuesta400 · `invalid_request_error` | CondiciónCampos obligatorios, representación del material o valor del parámetro no válidos | Siguiente pasoCorrige los campos indicados antes de una nueva solicitud de creación. |

### Alias

#### Alias del modelo

**Ailoot Ultra** [`qwen2.5-vl-7b-instruct`](https://ailoot.ai/models/es/#m=qwen2.5-vl-7b-instruct&route=Ultra&caller=qwen2.5-vl-7b-instruct&fmt=chat)

#### Alias de rutas de métodos

Usa las rutas de método indicadas arriba.

#### ID de modelo relacionados

[`qwen2.5-vl-7b-instruct`](https://ailoot.ai/models/es/#m=qwen2.5-vl-7b-instruct&route=Ultra&caller=qwen2.5-vl-7b-instruct&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen2.5-vl-7b-instruct`

[`qwen2.5-vl-7b-instruct`](https://ailoot.ai/models/es/#m=qwen2.5-vl-7b-instruct&route=Ultra&caller=qwen2.5-vl-7b-instruct&fmt=messages)

Alibaba /`qwen2.5-vl-7b-instruct`

### Primeros pasos

Qwen2.5-VL-7B-Instruct es un modelo de visión y lenguaje para imágenes, documentos y vídeo. Genera texto y resultados estructurados, incluidos cuadros de objetos, puntos y atributos, e incorpora a la edición 7B la localización temporal de eventos y las capacidades de agente visual.

Entradas aceptadas

Texto

Resultados

json · sse

### Disponible en Ailoot · entradas y métodos

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

Tipos de entrada

`text`

Tipos de salida

`json`, `sse`

Formato de salida

JSON o SSE

| Campo | Tipo | Requisito | Valores y límites | Predeterminado |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObligatorio | Valores y límites qwen2.5-vl-7b-instruct | Predeterminado— |
| Campo`messages` | Tipo`message[]` | RequisitoObligatorio | Valores y límites | Predeterminado— |
| Campo`messages[].role` | Tipo`string` | RequisitoObligatorio | Valores y límites user, assistant | Predeterminado— |
| Campo`messages[].content` | Tipo`string` | RequisitoObligatorio | Valores y límites | Predeterminado— |
| Campo`max_tokens` | Tipo`integer` | RequisitoObligatorio | Valores y límites | Predeterminado— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores y límites | Predeterminadofalse |

Combinaciones de materiales de entrada

**Texto** · Texto UTF-8

`cadena messages[].content`

Parámetros del método y ciclo de vida

| Parámetro | Contrato |
| --- | --- |
| Parámetro`content_type` | Contratoapplication/json |
| Parámetro`required` | Contratomodel, messages, max\_tokens |
| Parámetro`optional_controls` | Contratostream |
| Parámetro`material_types` | Contratotext |
| Parámetro`text_file_material` | ContratoLee el documento real en UTF-8 y coloca su texto en el campo input indicado o en la cadena de contenido del mensaje. |

Ciclo de vida: `synchronous_or_streamed`

### Planes

Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.

Modo rápido

Sin especificar Cuando se selecciona el modo rápido

Modo flex

Sin especificar Cuando se selecciona el modo flex

Esfuerzo máximo de razonamiento

Sin especificar Cuando el esfuerzo máximo de razonamiento utiliza el ajuste predeterminado (default)

#### Tarifas de Ailoot

#### Precios por configuración

| Configuración | Tabla de tarifas | Cargo |
| --- | --- | --- |
| ConfiguraciónTarifas base por token | Tabla de tarifasTarifa base | Cargo Entrada · Tokens de entrada **$0.0001** / 1K tokens Salida · Tokens de salida **$0.0001** / 1K tokens Entrada · Lectura de caché **$0** / 1K tokens Entrada · Escritura en caché **$0** / 1K tokens Entrada · Escritura en caché, 1 hora **—** / 1K tokens |

Ailoot reserva un importe estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. [Cómo funcionan la reserva y la liquidación →](https://ailoot.ai/docs/es/billing/reserve/)

### Solicitudes de ejemplo

#### Ailoot Ultra · Anthropic Messages

Cuerpo JSON mínimo completocurl · usa tu documento en UTF-8Python · guarda el resultado completo

```json
{
  "model": "qwen2.5-vl-7b-instruct",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'qwen2.5-vl-7b-instruct', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'qwen2.5-vl-7b-instruct', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Recibir y guardar resultados

#### Ailoot Ultra · Anthropic Messages

JSON o SSE

##### Conserva todos los resultados completados

Conserva todas las respuestas, archivos y partes de contenido completos recibidos.

Conserva todos los bloques de contenido, las firmas de razonamiento y los ID reales de uso de herramientas. Ensambla todos los fragmentos incrementales de los bloques SSE; el primer bloque de texto no constituye la salida completa.

##### Si es necesario revisar la respuesta original

Conserva los ID de solicitud y respuesta y las cabeceras. No se proporciona una URL genérica para recuperar tareas de texto.

Campos de respuesta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`model` | Tipostring |
| Campo`content[]` | Tipotext\|thinking\|tool\_use\|other content block |
| Campo`stop_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Errores y siguientes pasos

| Respuesta | Condición | Siguiente paso |
| --- | --- | --- |
| Respuesta400 · `invalid_request_error` | CondiciónCampos obligatorios, representación del material o valor del parámetro no válidos | Siguiente pasoCorrige los campos indicados antes de una nueva solicitud de creación. |

### Alias

#### Alias del modelo

**Ailoot Ultra** [`qwen2.5-vl-7b-instruct`](https://ailoot.ai/models/es/#m=qwen2.5-vl-7b-instruct&route=Ultra&caller=qwen2.5-vl-7b-instruct&fmt=messages)

#### Alias de rutas de métodos

Usa las rutas de método indicadas arriba.

#### ID de modelo relacionados

[`qwen2.5-vl-7b-instruct`](https://ailoot.ai/models/es/#m=qwen2.5-vl-7b-instruct&route=Ultra&caller=qwen2.5-vl-7b-instruct&fmt=messages)

FAQ · Pro/Qwen/Qwen2.5-VL-7B-Instruct

¿Qué entradas y resultados están disponibles?

`POST /v1/chat/completions` · `qwen2.5-vl-7b-instruct`: `text` → `text` `POST /v1/messages` · `qwen2.5-vl-7b-instruct`: `text` → `json`, `sse`

¿Qué campos utiliza la solicitud?

`POST /v1/chat/completions` · `qwen2.5-vl-7b-instruct`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `qwen2.5-vl-7b-instruct`: `model`, `messages`, `max_tokens`, `stream`

¿Qué límites se aplican?

`POST /v1/chat/completions` · `qwen2.5-vl-7b-instruct`: `messages.min_items`: `1`

Conecta Ailoot a Claude Code, OpenCode, Hermes o tu aplicación.

## La empresa y su cartera de proyectos

La empresa y su cartera de proyectos: millones de clientes; ventas por miles de millones al mes.

## Compra tokens con descuento.

Ahorro por suscripción para trabajo habitual. Códigos promocionales: hasta el 50% al comprar tokens.

Suscripción

Elige un plan con descuento para tus peticiones habituales.

Código de hasta el 50%

Introduce el código al comprar. El precio se recalcula según la promoción vigente.

Gasto en el historial

Modelo, tokens e importe quedan guardados por cada petición.

[Elegir suscripción](https://ailoot.ai/docs/es/billing/subscriptions/) · [Consultar precios de modelos](https://ailoot.ai/models/es/)

## Conecta la API al producto que vendes.

SaaS, aplicaciones y bots bajo la oferta y el acuerdo de licencia Ailoot. Solicita una licencia de reventa para redistribuir el acceso.

Aplicación comercial

Integra generación de texto, imágenes, vídeo y sonido en funciones de pago de tu servicio.

Licencia para revendedores

Envía descripción del proyecto y esquema de acceso. Solicita condiciones escritas de uso y reventa.

Documentos en la web

La oferta, el acuerdo de licencia y la política de datos están disponibles antes de conectar.

[Solicitar licencia de reventa](mailto:support@ailoot.ai) · [Oferta y acuerdo de licencia](https://ailoot.ai/legal/offer?lang=es)

## Ailoot · La empresa y su cartera de proyectos





Ailoot se apoya en la experiencia operativa acumulada, una amplia base de clientes, un servicio estable y el seguimiento continuo de KPI.





La empresa y su cartera de proyectos: millones de clientes; ventas por miles de millones al mes.





Ailoot aplica esa experiencia operativa al acceso por API a funciones de IA en productos de clientes, agentes, aplicaciones y automatizaciones.
