Source: https://ailoot.ai/models/da/qwen-qwen3-vl-30b-a3b-instruct/
Canonical: https://ailoot.ai/models/da/qwen-qwen3-vl-30b-a3b-instruct/
Language: da

# Qwen: Qwen3 VL 30B A3B Instruct

[Markdown](https://ailoot.ai/models/da/qwen-qwen3-vl-30b-a3b-instruct/index.md) · [JSON](https://ailoot.ai/models/da/qwen-qwen3-vl-30b-a3b-instruct/facts.json)

## [Qwen: Qwen3 VL 30B A3B Instruct](https://ailoot.ai/models/da/qwen-qwen3-vl-30b-a3b-instruct/)

Qwen3-VL-30B-A3B-Instruct er Qwens instruktionsfokuserede vision-sprogudgave med mixture-of-experts til tekst, billeder og video. Den returnerer tekst eller kode til visuelle agentforløb, dokumentlæsning, rumlige spørgsmål og visuel programmering med OCR på 32 sprog og en indbygget kontekst på 262,144 tokens.

- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/da/qwen-qwen3-vl-30b-a3b-instruct/#method-0)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/da/qwen-qwen3-vl-30b-a3b-instruct/#method-1)

Om modellen

Denne beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.

30B-A3B Instruct-udgaven

Qwen3-VL-30B-A3B-Instruct er den instruktionsfokuserede mixture-of-experts-udgave af Qwen3-VL. Den kombinerer tekst med billeder eller video og producerer tekst, herunder kode. Bevar denne præcise Instruct-identitet frem for at erstatte den med den ræsonnementsforstærkede Thinking-udgave eller en anden familiestørrelse. En nyttig forespørgsel definerer den visuelle dokumentation, spørgsmålet og den konkrete leverance, der forventes i svaret.

Visuelle agenter og visuel programmering

Producenten beskriver genkendelse af elementer i computer- eller mobilgrænseflader, forståelse af deres funktioner og værktøjskald i et visuelt agentforløb. Lever skærmbilledet og det tilsigtede mål, og spørg derefter, hvilken synlig kontrol der svarer til opgaven, og hvad der underbygger valget. Den tilsluttede applikation udfører handlinger og returnerer deres resultater; visuel genkendelse alene styrer ikke enheden.

Visuel programmering omfatter diagramindhold og HTML, CSS eller JavaScript genereret ud fra billeder eller video. Lever en layoutreference med funktionelle begrænsninger, og bed om redigerbar kildekode. Til en ændring af en eksisterende grænseflade skal du medtage relevant kode og forventede interaktionstilstande. Adskil leverancen fra forklaringen, så et udviklingsforløb kan gengive og inspicere den. Genereret kildekode er et forslag til gennemgang, ikke bevis på en fungerende applikation.

Rumlig opfattelse, kontekst og video

Qwen dokumenterer vurderinger af objektpositioner, synsvinkler og okklusioner med todimensional grounding og understøttelse af tredimensional grounding. Udpeg målet, og bed om de synlige tegn, der understøtter forholdet. Et billedbaseret forhold bør holdes adskilt fra en kalibreret fysisk måling.

Den indbyggede kontekst er 262,144 tokens. Familien beskriver bøger og flere timer lang video med hændelsesindeksering på sekundniveau og udvidelse til cirka en million tokens via konfiguration. Bevar tidsangivelser og billedrækkefølge, når du spørger om en sekvens. Det konfigurerede repræsentationsbudget bestemmer, hvilket materiale der behandles, så familiens brede beskrivelse af lang video bør ikke blive et løfte om perfekt genkaldelse af hvert billede.

Multimodalt ræsonnement, genkendelse og OCR

Modellen understøtter visuelle STEM- og matematikspørgsmål, årsagsanalyse og dokumentationsbaserede forklaringer. Lever hele opgaveteksten og diagrametiketter, og bed om de anvendte værdier før den endelige konklusion. Familien udvider også genkendelse til personer, produkter, vartegn, planter, dyr og mediefigurer. Kontrollér et identifikationsresultat, når den præcise identitet er vigtig.

OCR dækker 32 sprog og er udviklet til at forbedre læsning i svagt lys, ved sløring eller hældning, herunder specialistordforråd og dokumentstruktur. Lever læsbare sider, og bed om felter, citater eller en tabel, der kan kontrolleres mod kilden. Tekst- og billedforståelse kombineres, så spørgsmålet kan forbinde en passage med dens figur og brugerens instruktioner.

Arkitektur

Den offentliggjorte konfiguration identificerer en vision-sprogmodel med mixture-of-experts, 48 tekstlag, 128 eksperter og otte eksperter valgt pr. token. Interleaved-MRoPE repræsenterer tid, bredde og højde; DeepStack kombinerer egenskaber fra flere niveauer i vision-encoderen; tekst-tidsstempeljustering forankrer hændelser i tidsreferencer. Brug denne 30B-A3B Instruct-udgave konsekvent ved klargøring af visuelle opgaver og sammenligning af deres resultater.

Klargøring af input

Familieeksemplerne omfatter opgaver med kun tekst, enkelte eller flere billeder og video. Mærk visuelle input, og bevar deres forhold. Billed- og videopixelbudgetter er særskilte, hvor video medregner pixels på tværs af samplede billeder. Eksplicitte billeddimensioner tilpasses multipla af 32. Den dokumenterede videostandard er to billeder pr. sekund med indstillinger for frekvens eller billedantal i understøttede forløb.

Mediehjælpeværktøjet kan bevare videometadata og anbefaler at undgå en anden størrelsesændring, når det allerede har skaleret materialet. Til en dokumentsammenligning skal svaret organiseres efter sidemærke. For et klip skal du bede om hændelsen, det relevante interval og understøttende dokumentation. Sammenlign returnerede felter, passager og hændelsestidspunkter med de oprindelige sider eller klippet.

Genereringsvejledning og begrænsninger

Checkpointets genereringsfil har standardværdierne temperature 0.7, top\_p 0.8, top\_k 20 og repetition penalty 1.0. Familiens Instruct-opskrift bruger desuden presence penalty 1.5 og et outputbudget på 32,768 tokens. Budgettet er en del af producentens opskrift, ikke et selvstændigt fastslået hårdt outputmaksimum. 8B Instruct-kortets særskilte opgavebudgetter bør ikke automatisk tilskrives denne udgave.

Familiens udvidelsesprocedure bruger YaRN og foreslår en faktor på to eller tre ved udvidelse af den sammenflettede positionsordning fra 256K til cirka 1M. Reservér plads til resultatet sammen med tekst og repræsenteret visuelt materiale, og kontrollér OCR, beregnede konklusioner og genereret kode mod den oprindelige dokumentation. Hold Instruct-genereringskontrakten adskilt fra et Thinking-checkpoints indstillinger; en applikationsspecifik hybridomskifter fastslås ikke af udgavenavnet alene.

Praktisk opgave

### Praktisk opgave

Teknisk eksempel på engelsk

```
Generate source from a written layout

Produce self-contained HTML and CSS from this written layout: a heading “Upload report”, a file input and a status line below it. On screens narrower than 480 pixels, controls fill the available width. Include empty, selected-file and error text examples, accessible labels and no external assets. Return editable source with a short state explanation.
```

#### Forventet resultat

```
An HTML/CSS source artifact and a short explanation of the three requested states.
```

#### Kontrollér resultatet

```
Check that the file input has an associated label, narrow layouts fit their container and every requested state has distinct text.
```

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen/qwen3-vl-30b-a3b-instruct`

[`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=chat)

Alibaba /`qwen/qwen3-vl-30b-a3b-instruct`

### Start

Qwen3-VL-30B-A3B-Instruct er Qwens instruktionsfokuserede vision-sprogudgave med mixture-of-experts til tekst, billeder og video. Den returnerer tekst eller kode til visuelle agentforløb, dokumentlæsning, rumlige spørgsmål og visuel programmering med OCR på 32 sprog og en indbygget kontekst på 262,144 tokens.

Accepterede input

Tekst

Resultater

Tekst

### Tilgængelig i Ailoot · input og metoder

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

Inputtyper

`text`

Outputtyper

`text`

Outputformat

json eller SSE

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser qwen/qwen3-vl-30b-a3b-instruct | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrævet | Værdier og grænser Minimumsantal elementer: 1 | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrævet | Værdier og grænser Eksempler: system, user, assistant, tool, function Betingelser: Disse roller er eksplicit repræsenteret i kildekodens kompatibilitetstyper; modellens præcise rollesæt er fortsat modelspecifikt. Afhænger af modellen | Standard— |
| Felt`messages[].content` | Type`string\|content_part[]\|null` | KravValgfrit | Værdier og grænser | Standard— |
| Felt`messages[].tool_calls` | Type`tool_call[]` | KravValgfrit | Værdier og grænser | Standard— |
| Felt`messages[].tool_call_id` | Type`string` | KravValgfrit | Værdier og grænser Gælder når: role=tool; brug det faktisk returnerede ID | Standard— |
| Felt`messages[].name` | Type`string` | KravValgfrit | Værdier og grænser | Standard— |
| Felt`messages[].reasoning_content` | Type`string` | KravValgfrit | Værdier og grænser Gælder når: Send det faktisk returnerede ræsonnement tilbage, når modellen bruger det | Standard— |
| Felt`messages[].reasoning_details` | Type`object\|array` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`max_tokens` | Type`integer` | KravValgfrit | Værdier og grænser Minimum: 1 Afhænger af modellen | Standard— |
| Felt`max_completion_tokens` | Type`integer` | KravValgfrit | Værdier og grænser Minimum: 1 Afhænger af modellen | Standard— |
| Felt`stream` | Type`boolean` | KravValgfrit | Værdier og grænser | Standardfalse |
| Felt`stream_options.include_usage` | Type`boolean` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`temperature` | Type`number` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`top_p` | Type`number` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`stop` | Type`string\|string[]` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`tools` | Type`function_tool[]` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`tools[].type` | Type`string` | KravValgfrit | Værdier og grænser function Afhænger af modellen | Standard— |
| Felt`tools[].function.name` | Type`string` | KravPåkrævet | Værdier og grænser Gælder når: funktionsværktøj angivet | Standard— |
| Felt`tools[].function.description` | Type`string` | KravValgfrit | Værdier og grænser | Standard— |
| Felt`tools[].function.parameters` | Type`JSON_schema` | KravValgfrit | Værdier og grænser | Standard— |
| Felt`tool_choice` | Type`string\|object` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`parallel_tool_calls` | Type`boolean` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`response_format` | Type`object` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`reasoning_effort` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`reasoning` | Type`object` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`service_tier` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`instructions` | Type`string` | KravValgfrit | Værdier og grænser Kompatibilitetsfelt | Standard— |
| Felt`functions` | Type`function[]` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`function_call` | Type`string\|object` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`prompt_cache_options` | Type`object` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`modalities` | Type`string[]` | KravValgfrit | Værdier og grænser text | Standard— |
| Felt`provider` | Type`object` | KravValgfrit | Værdier og grænser Betingelser: provider.options afvises på denne Ultra-tekstrute | Standard— |
| Felt`cache_control.ttl` | Type`string` | KravValgfrit | Værdier og grænser Betingelser: 1h afvises på de faktiske placeringer for promptcaching | Standard— |

Kombinationer af inputmaterialer

**Tekst** · UTF8-tekst

`messages[].content`

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`content_type` | Kontraktapplication/json |
| Parameter`required` | Kontraktmodel, messages |
| Parameter`material_types` | Kontrakttext |
| Parameter`messages` | Kontraktbeskedarray med strukturen role/content |
| Parameter`file_material` | Kontraktfaktisk UTF-8-dokument indsat som bogstavelig tekst; intet fil-ID udledes |
| Parameter`optional_controls` | Kontraktstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parameter`control_scope` | Kontraktmodelspecifikt; brugerens funktionsværktøjer er forskellige fra hostede værktøjer |
| Parameter`output_modalities` | Kontrakttext |
| Parameter`hosted_operations` | Kontraktfalse |
| Parameter`multimodal_input_binding` | Kontraktnull |

Livscyklus: `synchronous_or_streamed`

Send det præcise model-ID med messages.

Kontekstlængde er ikke et outputloft.

En tekstfil kan levere bogstavelig tekst; billed-, lyd- og filobjektinput kræver en præcis binding.

### Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand

Standardpris Når hurtig tilstand er valgt

flex-tilstand

Standardpris Når flex-tilstanden er valgt

Maksimal ræsonneringsindsats

Standardpris Når default-justeringen anvendes ved maksimal ræsonneringsindsats

#### Ailoot-takster

#### Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

| Konfiguration | Takstplan | Konteksttokens, mere end | Konteksttokens, op til og med | Beløb |
| --- | --- | --- | --- | --- |
| KonfigurationGrundtakster for tokens | TakstplanGrundtakst | Konteksttokens, mere end— | Konteksttokens, op til og medIngen øvre grænse | Beløb Input · Inputtokens **$0.0003** / 1K tokens Output · Outputtokens **$0.0012** / 1K tokens Input · Cachelæsning **$0** / 1K tokens Input · Cacheskrivning **$0** / 1K tokens Input · Cacheskrivning, 1 time **—** / 1K tokens |
| KonfigurationAnmodningslængde · niveau 1 | Takstplan— | Konteksttokens, mere end0 | Konteksttokens, op til og medIngen øvre grænse | Beløb Input · Inputtokens **$0.0003** / 1K tokens Output · Outputtokens **$0.0012** / 1K tokens Input · Cachelæsning **$0** / 1K tokens Input · Cacheskrivning **$0** / 1K tokens Input · Cacheskrivning, 1 time **—** / 1K tokens |

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. [Sådan fungerer reservation og afregning →](https://ailoot.ai/docs/da/billing/reserve/)

### Eksempelanmodninger

#### 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": "qwen/qwen3-vl-30b-a3b-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='qwen/qwen3-vl-30b-a3b-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='qwen/qwen3-vl-30b-a3b-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")
```

### Hent og gem resultater

#### Ailoot Ultra · OpenAI Chat

json eller SSE

##### Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar hvert valg og dets indhold, værktøjskald og ræsonnement. Saml i SSE deltaer efter valg-/værktøjsindeks, og bevar den endelige afslutningsårsag og forbrugsoplysningerne.

##### Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter

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

Fejl og næste trin

| Svar | Betingelse | Næste trin |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |

### Aliaser

#### Modelaliaser

**Ailoot Ultra** [`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=chat)

#### Aliaser for metodestier

Brug metodestierne vist ovenfor.

#### Relaterede kalder-ID’er

[`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen/qwen3-vl-30b-a3b-instruct`

[`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=messages)

Alibaba /`qwen/qwen3-vl-30b-a3b-instruct`

### Start

Qwen3-VL-30B-A3B-Instruct er Qwens instruktionsfokuserede vision-sprogudgave med mixture-of-experts til tekst, billeder og video. Den returnerer tekst eller kode til visuelle agentforløb, dokumentlæsning, rumlige spørgsmål og visuel programmering med OCR på 32 sprog og en indbygget kontekst på 262,144 tokens.

Accepterede input

Tekst

Resultater

json · sse

### Tilgængelig i Ailoot · input og metoder

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

Inputtyper

`text`

Outputtyper

`json`, `sse`

Outputformat

JSON eller SSE

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser qwen/qwen3-vl-30b-a3b-instruct | Standard— |
| Felt`messages` | Type`message[]` | KravPåkrævet | Værdier og grænser | Standard— |
| Felt`messages[].role` | Type`string` | KravPåkrævet | Værdier og grænser user, assistant | Standard— |
| Felt`messages[].content` | Type`string` | KravPåkrævet | Værdier og grænser | Standard— |
| Felt`max_tokens` | Type`integer` | KravPåkrævet | Værdier og grænser | Standard— |
| Felt`stream` | Type`boolean` | KravValgfrit | Værdier og grænser | Standardfalse |

Kombinationer af inputmaterialer

**Tekst** · UTF-8-tekst

`messages[].content som streng`

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`content_type` | Kontraktapplication/json |
| Parameter`required` | Kontraktmodel, messages, max\_tokens |
| Parameter`optional_controls` | Kontraktstream |
| Parameter`material_types` | Kontrakttext |
| Parameter`text_file_material` | KontraktLæs det faktiske UTF-8-dokument, og indsæt teksten i det angivne input eller beskedens indholdsstreng. |

Livscyklus: `synchronous_or_streamed`

### Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand

Standardpris Når hurtig tilstand er valgt

flex-tilstand

Standardpris Når flex-tilstanden er valgt

Maksimal ræsonneringsindsats

Standardpris Når default-justeringen anvendes ved maksimal ræsonneringsindsats

#### Ailoot-takster

#### Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

| Konfiguration | Takstplan | Konteksttokens, mere end | Konteksttokens, op til og med | Beløb |
| --- | --- | --- | --- | --- |
| KonfigurationGrundtakster for tokens | TakstplanGrundtakst | Konteksttokens, mere end— | Konteksttokens, op til og medIngen øvre grænse | Beløb Input · Inputtokens **$0.0003** / 1K tokens Output · Outputtokens **$0.0012** / 1K tokens Input · Cachelæsning **$0** / 1K tokens Input · Cacheskrivning **$0** / 1K tokens Input · Cacheskrivning, 1 time **—** / 1K tokens |
| KonfigurationAnmodningslængde · niveau 1 | Takstplan— | Konteksttokens, mere end0 | Konteksttokens, op til og medIngen øvre grænse | Beløb Input · Inputtokens **$0.0003** / 1K tokens Output · Outputtokens **$0.0012** / 1K tokens Input · Cachelæsning **$0** / 1K tokens Input · Cacheskrivning **$0** / 1K tokens Input · Cacheskrivning, 1 time **—** / 1K tokens |

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. [Sådan fungerer reservation og afregning →](https://ailoot.ai/docs/da/billing/reserve/)

### Eksempelanmodninger

#### Ailoot Ultra · Anthropic Messages

Komplet minimalt requestbody i JSONcurl · brug dit UTF-8-dokumentPython · gem hele resultatet

```json
{
  "model": "qwen/qwen3-vl-30b-a3b-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': 'qwen/qwen3-vl-30b-a3b-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': 'qwen/qwen3-vl-30b-a3b-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))
```

### Hent og gem resultater

#### Ailoot Ultra · Anthropic Messages

JSON eller SSE

##### Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar alle indholdsblokke, ræsonnementssignaturer og faktiske værktøjsbrugs-ID’er. Saml alle SSE-blokdeltaer; den første tekstblok er ikke hele outputtet.

##### Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter

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

Fejl og næste trin

| Svar | Betingelse | Næste trin |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |

### Aliaser

#### Modelaliaser

**Ailoot Ultra** [`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=messages)

#### Aliaser for metodestier

Brug metodestierne vist ovenfor.

#### Relaterede kalder-ID’er

[`qwen/qwen3-vl-30b-a3b-instruct`](https://ailoot.ai/models/da/#m=qwen%2Fqwen3-vl-30b-a3b-instruct&route=Ultra&caller=qwen%2Fqwen3-vl-30b-a3b-instruct&fmt=messages)

FAQ · Qwen: Qwen3 VL 30B A3B Instruct

Hvilke input og resultater er tilgængelige?

`POST /v1/chat/completions` · `qwen/qwen3-vl-30b-a3b-instruct`: `text` → `text` `POST /v1/messages` · `qwen/qwen3-vl-30b-a3b-instruct`: `text` → `json`, `sse`

Hvilke felter bruger anmodningen?

`POST /v1/chat/completions` · `qwen/qwen3-vl-30b-a3b-instruct`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `qwen/qwen3-vl-30b-a3b-instruct`: `model`, `messages`, `max_tokens`, `stream`

Hvilke grænser gælder?

`POST /v1/chat/completions` · `qwen/qwen3-vl-30b-a3b-instruct`: `messages.min_items`: `1`

Tilslut Ailoot til Claude Code, OpenCode, Hermes eller din egen applikation.

## Virksomheden og dens projektportefølje

Virksomheden og dens projektportefølje: millioner af kunder; månedligt salg for milliarder.

## Køb tokens med rabat.

Abonnementsrabat til regelmæssigt arbejde. Rabatkoder giver op til 50% på tokenkøb.

Abonnement

Vælg et abonnement med rabat til dine regelmæssige anmodninger.

Rabatkode på op til 50%

Indtast koden ved købet. Prisen genberegnes efter den aktuelle kampagne.

Udgifter i historikken

Model, tokens og beløb gemmes for hver anmodning.

[Vælg abonnement](https://ailoot.ai/docs/da/billing/subscriptions/) · [Se modelpriser](https://ailoot.ai/models/da/)

## Tilslut API’et til produktet, du sælger.

SaaS, apps og bots efter Ailoots tilbudsvilkår og licensaftale. Anmod om en forhandlerlicens til videresalg.

Kommerciel applikation

Byg generering af tekst, billeder, video og lyd ind i tjenestens betalte funktioner.

Licens til forhandlere

Send projektbeskrivelse og adgangsmodel. Bed om skriftlige vilkår for anvendelse og videresalg.

Dokumenter på websitet

Tilbudsvilkår, licensaftale og politik for behandling af data kan læses før tilslutning.

[Anmod om forhandlerlicens](mailto:support@ailoot.ai) · [Tilbudsvilkår og licensaftale](https://ailoot.ai/legal/offer?lang=da)

## Ailoot · Virksomheden og dens projektportefølje





Ailoot bygger på solid driftserfaring, en stor kundebase, stabil service og løbende kontrol af KPI.





Virksomheden og dens projektportefølje: millioner af kunder; månedligt salg for milliarder.





Ailoot bruger denne driftserfaring til API-adgang til AI-funktioner i kundernes produkter, agenter, applikationer og automatiseringer.
