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

# Qwen2.5 VL 7B Instruct

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

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

Qwen2.5-VL-7B-Instruct is een visueel-talig model voor afbeeldingen, documenten en video. Het produceert tekst en gestructureerde bevindingen, waaronder objectkaders, punten en attributen, en brengt tijdsgebonden gebeurtenislokalisatie en visuele-agentmogelijkheden naar de 7B-editie.

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

Over het model

Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.

Qwen2.5-VL-7B-Instruct is de op instructies afgestemde 7B-editie van Qwen2.5-VL. Het verbindt een tekstinstructie met afbeeldingen of video en geeft een tekstresultaat terug. De belangrijkste verbeteringen van de maker omvatten herkenning van objecten en visuele details, analyse van tekst en lay-outs, visuele-agenttaken, begrip van gebeurtenissen in lange video’s, objectlokalisatie en gestructureerde extractie uit documenten.

Visuele inhoud begrijpen

De familie gaat verder dan het herkennen van het hoofdonderwerp van een foto. De gedocumenteerde taken omvatten analyse van tekst, grafieken, pictogrammen, grafische elementen en de ordening van elementen binnen een afbeelding. Specificeer voor een grafiek de te onderzoeken reeks of relatie en bewaar de assen, legenda en eenheden. Vraag voor een diagram hoe de gelabelde onderdelen met elkaar samenhangen en wat de zichtbare ordening over het proces zegt.

Een bruikbare vergelijking kan een oorspronkelijk en een herzien ontwerp aanleveren, aangeven welk ontwerp welk is en om zichtbare wijzigingen ten opzichte van een korte lijst vereisten vragen. Vraag samen om de waarneming en het relevante gebied in de afbeelding. Dat geeft het antwoord een concreet doel in plaats van een algemene beschrijving van twee niet-gerelateerde afbeeldingen te vragen.

Workflows met visuele agents

De maker positioneert Qwen2.5-VL als een visuele agent die over een scherm kan redeneren en tools kan aansturen bij taken op een computer of telefoon. Het model levert een interpretatie en een voorgestelde handeling; een omringende agenttoepassing levert de besturingselementen, voert de handeling uit en geeft de nieuwe toestand terug. Een tekstantwoord of voorspelde coördinaat is dus één onderdeel van die geïntegreerde workflow.

Lever voor een interfacevraag de schermafbeelding en het werkelijke doel aan, en vraag vervolgens welk zichtbaar besturingselement relevant is en wat er daarna moet gebeuren. Houd de gevraagde uitvoer specifiek: het label van het besturingselement, de locatie en de beoogde handeling. Als de toepassing die handeling vervolgens uitvoert, levert de volgende schermafbeelding de bijgewerkte visuele invoer voor een volgende beslissing.

Lange video’s en gebeurtenislokalisatie

De maker beschrijft begrip van video’s langer dan één uur en het identificeren van het segment dat een gevraagde gebeurtenis bevat. Dat breidt videobeschrijving uit naar lokalisatie in de tijd. Een taak kan vragen wanneer een object voor het eerst verschijnt, waar een demonstratie een bepaalde stap bereikt of welke zichtbare gebeurtenis vóór een andere plaatsvindt. Vermeld of het resultaat een samenvatting, een geordende gebeurtenissenlijst of begin- en eindtijden met een gebeurtenisbeschrijving moet zijn.

De familie wordt getraind met dynamische framefrequentiebemonstering en stemt temporele positie-informatie af op absolute tijd. Informatie over de framefrequentie hoort dus bij de videovoorbereiding en is geen willekeurig label dat mag worden weggegooid wanneer tijdstempels van belang zijn. De gedocumenteerde mogelijkheid voor lange video’s is geen universele specificatie van bestandsgrootte of maximale duur voor elk invoerpad.

Objectlokalisatie en gestructureerde documenten

Qwen2.5-VL kan begrenzingskaders of punten teruggeven en coördinaten en attributen als JSON ordenen. De release gebruikt coördinaten op de schaal van de werkelijke afbeeldingsafmetingen in plaats van traditionele genormaliseerde coördinaten. Specificeer of de taak een omsluitend kader, een bepaald punt of een objectbeschrijving nodig heeft, en bewaar de afbeeldingsafmetingen en eventuele informatie over herschaling die nodig is om de teruggegeven locatie te interpreteren.

Een visueel voorraadverzoek kan bijvoorbeeld om elk doelobject, het bijbehorende kader en een zichtbaar attribuut vragen. Een taak op basis van punten kan naar de locatie van een gelabeld besturingselement of een opgegeven onderdeel van een object vragen. Dit zijn voorgestelde uitvoerontwerpen, geen vaste veldnamen die elke aanvraag moet gebruiken. Houd elke coördinaat gekoppeld aan de bronafbeelding wanneer meerdere afbeeldingen worden aangeleverd.

De maker benadrukt afzonderlijk gestructureerde extractie uit factuurscans, formulieren en tabellen. Definieer de velden, bewaar de oorspronkelijke labels en vraag om een expliciete representatie wanneer een waarde niet kan worden gelezen. Bewaar voor een tabel de kolomkoppen en eenheden bij de gevraagde rijen. Een praktisch record kan de documentidentificatie, het veldlabel, de geëxtraheerde waarde en de locatie bevatten, waardoor de uitvoer bruikbaar is voor een latere vergelijking of menselijke inspectie.

Architectuur en invoervoorbereiding

Het model combineert dynamische afbeeldingsresolutie en dynamische videobemonstering met bijgewerkte multimodale roterende positie-informatie. De visuele encoder gebruikt window attention, SwiGLU en RMSNorm. Dit zijn architectuurwijzigingen die visuele en temporele verwerking ondersteunen; ze voegen geen audio-invoer of beeldgeneratie toe aan de gedocumenteerde workflow met tekstresultaten.

De kaart demonstreert één afbeelding, meerdere afbeeldingen, een reeks videoframes, een videobestand of -referentie en gebatchte gesprekken. De afbeeldingsprocessor documenteert een standaardbereik van 4 tot 16,384 visuele tokens per afbeelding. Instellingen voor minimale en maximale pixels behouden de beeldverhouding; gevraagde exacte afmetingen worden afgerond op een veelvoud van 28. Het voorbeeldbereik van 256 tot 1,280 visuele tokens is een aanpasbare illustratie, geen afzonderlijke harde afbeeldingslimiet. Bewaar bij het kiezen van een herschaling de details die de vraag vereist.

Context en instellingen die lokalisatie beïnvloeden

De uitgebrachte configuratie stelt het maximum aantal posities in op 128,000. De sectie over lange tekst op de modelkaart beschrijft afzonderlijk een basis van 32,768 tokens en een voorbeeld van YaRN-uitbreiding. Ze waarschuwt expliciet dat deze uitbreiding temporele en ruimtelijke lokalisatie aanzienlijk beïnvloedt en beveelt haar niet aan. De handleiding bespreekt ook het wijzigen van het maximum aantal posities voor lange video’s; dit zijn configuratienotities en geen uniforme onvoorwaardelijke invoerlimiet voor elke taak.

Houd de exacte releaseconfiguratie en visuele voorverwerking afgestemd op de taak, vooral wanneer coördinaten of gebeurtenistijden van belang zijn. Het generatievoorbeeld met 128 tokens op de kaart specificeert geen afzonderlijke maximale uitvoercapaciteit. Qwen2.5-VL-7B-Instruct produceert tekst, coördinaten en gestructureerde bevindingen; een externe handeling, gerenderde afbeelding, video of gesproken antwoord vereist een ander toepassingsonderdeel.

Praktische taak

### Praktische taak

Technisch voorbeeld in het Engels

```
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.
```

#### Verwacht resultaat

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

#### Resultaat controleren

```
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/nl-be/#m=qwen2.5-vl-7b-instruct&route=Ultra&caller=qwen2.5-vl-7b-instruct&fmt=chat)

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

### Aan de slag

Qwen2.5-VL-7B-Instruct is een visueel-talig model voor afbeeldingen, documenten en video. Het produceert tekst en gestructureerde bevindingen, waaronder objectkaders, punten en attributen, en brengt tijdsgebonden gebeurtenislokalisatie en visuele-agentmogelijkheden naar de 7B-editie.

Toegestane invoer

Tekst

Resultaten

Tekst

### Beschikbaar in Ailoot · invoer en methoden

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

Invoer

`text`

Uitvoer

`text`

Uitvoerformaat

json of SSE

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten qwen2.5-vl-7b-instruct | Standaard— |
| Veld`messages` | Type`message[]` | VereisteVereist | Waarden en limieten Minimumaantal items: 1 | Standaard— |
| Veld`messages[].role` | Type`string` | VereisteVereist | Waarden en limieten Voorbeelden: system, user, assistant, tool, function Voorwaarden: Deze rollen worden expliciet weergegeven door compatibiliteitstypen in de broncode; de exacte rollenverzameling van het model blijft modelspecifiek. Afhankelijk van het model | Standaard— |
| Veld`messages[].content` | Type`string\|content_part[]\|null` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`messages[].tool_calls` | Type`tool_call[]` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`messages[].tool_call_id` | Type`string` | VereisteOptioneel | Waarden en limieten Geldt wanneer: role=tool; gebruik het werkelijk teruggegeven ID | Standaard— |
| Veld`messages[].name` | Type`string` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`messages[].reasoning_content` | Type`string` | VereisteOptioneel | Waarden en limieten Geldt wanneer: Stuur de werkelijk teruggegeven redeneringen terug wanneer dit model ze gebruikt | Standaard— |
| Veld`messages[].reasoning_details` | Type`object\|array` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`max_tokens` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 1 Afhankelijk van het model | Standaard— |
| Veld`max_completion_tokens` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 1 Afhankelijk van het model | Standaard— |
| Veld`stream` | Type`boolean` | VereisteOptioneel | Waarden en limieten | Standaardfalse |
| Veld`stream_options.include_usage` | Type`boolean` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`temperature` | Type`number` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`top_p` | Type`number` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`stop` | Type`string\|string[]` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`tools` | Type`function_tool[]` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`tools[].type` | Type`string` | VereisteOptioneel | Waarden en limieten function Afhankelijk van het model | Standaard— |
| Veld`tools[].function.name` | Type`string` | VereisteVereist | Waarden en limieten Geldt wanneer: functietool opgegeven | Standaard— |
| Veld`tools[].function.description` | Type`string` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`tools[].function.parameters` | Type`JSON_schema` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`tool_choice` | Type`string\|object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`parallel_tool_calls` | Type`boolean` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`response_format` | Type`object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`reasoning_effort` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`reasoning` | Type`object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`service_tier` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`instructions` | Type`string` | VereisteOptioneel | Waarden en limieten Compatibiliteitsveld | Standaard— |
| Veld`functions` | Type`function[]` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`function_call` | Type`string\|object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`prompt_cache_options` | Type`object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`modalities` | Type`string[]` | VereisteOptioneel | Waarden en limieten text | Standaard— |
| Veld`provider` | Type`object` | VereisteOptioneel | Waarden en limieten Voorwaarden: provider.options wordt op deze Ultra-tekstroute geweigerd | Standaard— |
| Veld`cache_control.ttl` | Type`string` | VereisteOptioneel | Waarden en limieten Voorwaarden: 1h wordt op de daadwerkelijke locaties voor promptcaching geweigerd | Standaard— |

Combinaties van invoermaterialen

**Tekst** · UTF8-tekst

`messages[].content`

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, messages |
| Parameter`material_types` | Contracttext |
| Parameter`messages` | Contractberichtenarray met de structuur role/content |
| Parameter`file_material` | Contractwerkelijk UTF-8-document ingevoegd als letterlijke tekst; er wordt geen bestands-ID afgeleid |
| Parameter`optional_controls` | Contractstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parameter`control_scope` | Contractmodelspecifiek; functietools van de gebruiker verschillen van gehoste tools |
| Parameter`output_modalities` | Contracttext |
| Parameter`hosted_operations` | Contractfalse |
| Parameter`multimodal_input_binding` | Contractnull |

Levenscyclus: `synchronous_or_streamed`

Stuur het exacte model-ID mee met messages.

Contextlengte is geen uitvoerlimiet.

Een tekstbestand kan letterlijke tekst aanleveren; beeld-, audio- en bestandsobjectinvoer vereisen een exacte koppeling.

### Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus

Niet opgegeven Wanneer de snelle modus geselecteerd is

Flex-modus

Niet opgegeven Wanneer de flex-modus geselecteerd is

Maximale redeneerinspanning

Niet opgegeven Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt

#### Ailoot-tarieven

#### Prijzen per configuratie

| Configuratie | Tariefstaffel | Kosten |
| --- | --- | --- |
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Kosten Invoer · Invoertokens **$0.0001** / 1K tokens Uitvoer · Uitvoertokens **$0.0001** / 1K tokens Invoer · Cache lezen **$0** / 1K tokens Invoer · Cache schrijven **$0** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl-be/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot Ultra · OpenAI Chat

curlPython SDKPython-stream

```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")
```

### Resultaten ophalen en opslaan

#### Ailoot Ultra · OpenAI Chat

json of SSE

##### Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar elke keuze en de bijbehorende inhoud, toolaanroepen en redeneringen. Voeg in SSE delta’s samen per keuze-/toolindex en bewaar de uiteindelijke reden van beëindiging en de verbruiksgegevens.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden

| Veld | Type |
| --- | --- |
| Veld`choices[].index` | Typeinteger |
| Veld`choices[].message.content` | Typestring\|null |
| Veld`choices[].message.tool_calls` | Typetool\_call\[\] |
| Veld`choices[].message.reasoning_content` | Typestring |
| Veld`choices[].message.reasoning_details` | Typeobject\|array |
| Veld`choices[].finish_reason` | Typestring\|null |
| Veld`usage` | Typeobject |

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |

### Aliasnamen

#### Modelaliasnamen

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

#### Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

#### Gerelateerde aanroeper-ID’s

[`qwen2.5-vl-7b-instruct`](https://ailoot.ai/models/nl-be/#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/nl-be/#m=qwen2.5-vl-7b-instruct&route=Ultra&caller=qwen2.5-vl-7b-instruct&fmt=messages)

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

### Aan de slag

Qwen2.5-VL-7B-Instruct is een visueel-talig model voor afbeeldingen, documenten en video. Het produceert tekst en gestructureerde bevindingen, waaronder objectkaders, punten en attributen, en brengt tijdsgebonden gebeurtenislokalisatie en visuele-agentmogelijkheden naar de 7B-editie.

Toegestane invoer

Tekst

Resultaten

json · sse

### Beschikbaar in Ailoot · invoer en methoden

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

Invoer

`text`

Uitvoer

`json`, `sse`

Uitvoerformaat

JSON of SSE

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten qwen2.5-vl-7b-instruct | Standaard— |
| Veld`messages` | Type`message[]` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`messages[].role` | Type`string` | VereisteVereist | Waarden en limieten user, assistant | Standaard— |
| Veld`messages[].content` | Type`string` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`max_tokens` | Type`integer` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`stream` | Type`boolean` | VereisteOptioneel | Waarden en limieten | Standaardfalse |

Combinaties van invoermaterialen

**Tekst** · UTF-8-tekst

`messages[].content als tekenreeks`

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, messages, max\_tokens |
| Parameter`optional_controls` | Contractstream |
| Parameter`material_types` | Contracttext |
| Parameter`text_file_material` | ContractLees het werkelijke UTF-8-document en plaats de tekst ervan in de aangegeven invoer of in de inhoudstekenreeks van een bericht. |

Levenscyclus: `synchronous_or_streamed`

### Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus

Niet opgegeven Wanneer de snelle modus geselecteerd is

Flex-modus

Niet opgegeven Wanneer de flex-modus geselecteerd is

Maximale redeneerinspanning

Niet opgegeven Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt

#### Ailoot-tarieven

#### Prijzen per configuratie

| Configuratie | Tariefstaffel | Kosten |
| --- | --- | --- |
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Kosten Invoer · Invoertokens **$0.0001** / 1K tokens Uitvoer · Uitvoertokens **$0.0001** / 1K tokens Invoer · Cache lezen **$0** / 1K tokens Invoer · Cache schrijven **$0** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl-be/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot Ultra · Anthropic Messages

Volledige minimale JSON-bodycurl · gebruik je UTF-8-documentPython · sla het volledige resultaat op

```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))
```

### Resultaten ophalen en opslaan

#### Ailoot Ultra · Anthropic Messages

JSON of SSE

##### Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar alle inhoudsblokken, handtekeningen van redeneringen en werkelijke toolgebruik-ID’s. Voeg alle SSE-blokdelta’s samen; het eerste tekstblok is niet de volledige uitvoer.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden

| Veld | Type |
| --- | --- |
| Veld`id` | Typestring |
| Veld`model` | Typestring |
| Veld`content[]` | Typetext\|thinking\|tool\_use\|other content block |
| Veld`stop_reason` | Typestring\|null |
| Veld`usage` | Typeobject |

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |

### Aliasnamen

#### Modelaliasnamen

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

#### Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

#### Gerelateerde aanroeper-ID’s

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

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

Welke invoer en resultaten zijn beschikbaar?

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

Welke velden gebruikt het verzoek?

`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`

Welke limieten gelden?

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

Verbind Ailoot met Claude Code, OpenCode, Hermes of je eigen applicatie.

## Het bedrijf en zijn projectenportefeuille

Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.

## Koop tokens met korting.

Abonnementsvoordeel voor regelmatig gebruik. Promotiecodes geven tot 50% korting op tokens.

Abonnement

Kies een abonnement met korting voor je terugkerende verzoeken.

Promotiecode tot 50%

Vul de code bij aankoop in. De prijs wordt volgens de lopende actie herberekend.

Kosten in de geschiedenis

Model, tokens en bedrag worden per verzoek bewaard.

[Kies een abonnement](https://ailoot.ai/docs/nl-be/billing/subscriptions/) · [Bekijk modelprijzen](https://ailoot.ai/models/nl-be/)

## Verbind de API met het product dat je verkoopt.

SaaS, apps en bots volgens de openbare aanbodvoorwaarden en licentieovereenkomst van Ailoot. Vraag voor doorverkoop een resellerlicentie aan.

Commerciële applicatie

Voeg tekst-, beeld-, video- en geluidsgeneratie aan betaalde functies van je service toe.

Resellerlicentie

Stuur een projectbeschrijving en toegangsschema. Vraag schriftelijke voorwaarden voor gebruik en doorverkoop.

Documenten op de site

Aanbodvoorwaarden, licentieovereenkomst en gegevensbeleid zijn vóór het verbinden beschikbaar.

[Vraag een resellerlicentie aan](mailto:support@ailoot.ai) · [Aanbodvoorwaarden en licentieovereenkomst](https://ailoot.ai/legal/offer?lang=nl-be)

## Ailoot · Het bedrijf en zijn projectenportefeuille





Ailoot bouwt op opgebouwde operationele ervaring, een groot klantenbestand, een stabiele dienst en doorlopende KPI-controle.





Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.





Ailoot gebruikt die operationele ervaring voor API-toegang tot AI-functies in klantproducten, agents, applicaties en automatiseringen.
