Qwen3 VL 8B Thinking
Qwen3-VL-8B-Thinking ist Qwens auf Schlussfolgern ausgerichtete 8B-Vision-Language-Edition. Sie verbindet Text, Bilder und Video für visuelles Problemlösen, Dokumentinterpretation, räumliche Analyse und Codegenerierung aus visuellen Referenzen.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsQwen/Qwen3-VL-8B-Thinking - Ailoot Ultra · Anthropic Messages
POST /v1/messagesQwen/Qwen3-VL-8B-Thinking
Über das Modell
Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.
Qwen3-VL-8B-Thinking ist die auf Schlussfolgern ausgerichtete dichte 8B-Edition von Alibabas Qwen3-VL-Familie. Sie verbindet Text, Bilder und Video in einer gemeinsamen Aufgabe und erzeugt Text. Qwen veröffentlicht Thinking- und Instruct-Editionen getrennt; diese Modellkarte betrifft das benannte Thinking-Modell, zu dessen Zweck die Analyse visueller Belege vor der Ausgabe einer Antwort gehört. Reine Textarbeit ist ebenfalls Teil der Sprachfähigkeit des Modells.
Der Hersteller stellt visuelle Agenten an erste Stelle: Das Modell kann Elemente von Desktop- oder mobilen Oberflächen erkennen, ihre Funktionen interpretieren und über die nächste Interaktion nachdenken. In einer Anwendung liefern Screenshots den aktuellen Zustand und Werkzeuge führen die ausgewählten Aktionen aus. Eine nützliche Aufgabenbeschreibung gibt das Ziel des Nutzers, den sichtbaren Bildschirm und die erlaubten Aktionen an und fragt anschließend nach dem nächsten Schritt und dem Element, das ihn begründet. Die erzeugte Interpretation ist von einer durch die umgebende Anwendung ausgeführten Aktion getrennt.
Visuell gestützte Programmierung verbindet Referenzbilder oder Video mit textlichem Code. Qwen dokumentiert Draw.io-Diagramme und HTML, CSS sowie JavaScript als Beispielausgaben. Stellen Sie einen Screenshot oder eine Skizze zusammen mit dem erforderlichen Verhalten, den Inhalten und dem Ziellayout bereit; verlangen Sie ein editierbares Code- oder Diagrammdokument. Für räumliche Arbeit beschreibt die Familie Objektposition, Blickwinkel und Verdeckung, mit 2D-Grounding und 3D-Grounding. Geben Sie bei benötigten Positionsangaben die Koordinatenkonvention an, damit eine beschriebene Position und ein angeforderter Begrenzungsrahmen dieselbe Referenz verwenden.
Der native Kontext umfasst 256K Token für Text und dazwischen eingefügtes visuelles Material. Die Modellkarte beschreibt außerdem eine Erweiterung auf eine Million Token; dies ist eine gesonderte konfigurierte Erweiterung und keine Spezifikation des nativen Kontexts. Zu Anwendungen mit langem Kontext gehören Querverweise zwischen Dokumentseiten und das Auffinden von Ereignissen in Video. Bewahren Sie bei der Vorbereitung der Eingabe Seitenreihenfolge und Videozeitstempel und verlangen Sie, dass die Antwort für jede Schlussfolgerung die verwendete Seite oder den Zeitpunkt nennt.
Multimodales Schlussfolgern umfasst mathematische und naturwissenschaftliche Aufgaben, die sowohl das sichtbare Material als auch die schriftliche Frage dazu erfordern. Die Familie unterstützt außerdem breite visuelle Erkennung von Objekten, Produkten, Wahrzeichen, Pflanzen und Tieren. Ihre OCR-Abdeckung umfasst 32 Sprachen und schließt schwierige Bilder bei schwachem Licht, Unschärfe oder Schräglage sowie die Interpretation der Dokumentstruktur ein. Fordern Sie bei einer gescannten Aufgabe zuerst eine Transkription und dann eine Lösung an; so werden falsch gelesene Zeichen oder Beschriftungen sichtbar, bevor diese Lesefehler den Denkprozess beeinflussen.
Drei Architekturaktualisierungen unterstützen diese visuelle und zeitliche Arbeit. Interleaved-MRoPE verteilt Positionsinformationen über Zeit, Breite und Höhe; DeepStack führt visuelle Merkmale mehrerer Ebenen in das Sprachmodell ein; explizite textuelle Zeitstempel repräsentieren die zeitliche Position von Videobildgruppen. Ihr praktischer Nutzen liegt im Erhalt räumlicher Details und in der Verknüpfung einer Ereignisbeschreibung mit einem Zeitpunkt in der Quelle. Sie garantieren jedoch nicht, dass kleine oder unlesbare Details in der Quelle erkannt werden.
Die genaue Modellkarte des Thinking-Modells nennt getrennte Generierungsempfehlungen für visuelle und Textaufgaben. Beide verwenden Sampling mit temperature 1.0, top-p 0.95 und top-k 20; das visuelle Beispiel verwendet presence penalty 0.0, das Textbeispiel dagegen 1.5. Die beispielhaften Einstellungen für die Ausgabelänge betragen 40,960 für visuelle Arbeit und 32,768 für Text; für ausgewählte anspruchsvolle Textevaluationen werden 81,920 empfohlen. Dies sind Abstimmungsempfehlungen, keine allgemeingültige Garantie für die maximale Ausgabe oder Parameter, die ein umgebender Dienst zwangsläufig zugänglich macht.
Stellen Sie für eine praktische Dokumentaufgabe geordnete Seitenbilder bereit und bitten Sie: „Extrahiere die Abschnittsüberschriften, erkläre den Zusammenhang zwischen dem Diagramm und dem benachbarten Text und füge jeder Erkenntnis einen Seitenverweis hinzu.“ Definieren Sie bei Video das gesuchte Ereignis und verlangen Sie seinen Zeitstempel sowie eine kurze visuelle Erklärung. Geben Sie für eine visuelle Schlussfolgerungsfrage das erforderliche fertige Arbeitsergebnis und die erlaubten Annahmen an. Die Ausgabe bleibt eine textliche Erklärung, extrahierter Inhalt, Code oder ein vorgeschlagener Werkzeugschritt; die visuelle Eingabe dieser Edition ist kein Ablauf zur Video- oder Spracherzeugung.
Praktische Aufgabe
Praktische Aufgabe
Technisches Beispiel auf Englisch
Reason about a written interface layout
Use this textual layout description: a dialog contains a title at the top, a long message in the middle and Cancel/Confirm buttons at the bottom. On a short screen, only the message area should scroll; both buttons must stay visible. Propose HTML and CSS structure and explain the height constraints. Do not assume an image was supplied.Erwartetes Ergebnis
An editable HTML/CSS proposal and a short explanation of which region scrolls.Ergebnis prüfen
Check the proposed structure limits message overflow while keeping both actions outside that scroll area.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions Qwen/Qwen3-VL-8B-Thinking
Qwen/Qwen3-VL-8B-ThinkingStart
Qwen3-VL-8B-Thinking ist Qwens auf Schlussfolgern ausgerichtete 8B-Vision-Language-Edition. Sie verbindet Text, Bilder und Video für visuelles Problemlösen, Dokumentinterpretation, räumliche Analyse und Codegenerierung aus visuellen Referenzen.
- Zulässige Eingaben
- Text
- Ergebnisse
- Text
In Ailoot verfügbar · Eingaben und Methoden
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Eingabetypen
text- Ausgabetypen
text- Ausgabeformat
- json oder SSE
| Feld | Typ | Anforderung | Werte und Limits | Standard |
|---|---|---|---|---|
Feldmodel | Typstring | AnforderungErforderlich | Werte und Limits Qwen/Qwen3-VL-8B-Thinking | Standard— |
Feldmessages | Typmessage[] | AnforderungErforderlich | Werte und Limits Mindestanzahl Elemente: 1 | Standard— |
Feldmessages[].role | Typstring | AnforderungErforderlich | Werte und Limits Beispiele: system, user, assistant, tool, function Bedingungen: Diese Rollen sind in den Kompatibilitätstypen des Quellcodes ausdrücklich dargestellt; der genaue Rollenumfang bleibt modellspezifisch. Modellabhängig | Standard— |
Feldmessages[].content | Typstring|content_part[]|null | AnforderungOptional | Werte und Limits | Standard— |
Feldmessages[].tool_calls | Typtool_call[] | AnforderungOptional | Werte und Limits | Standard— |
Feldmessages[].tool_call_id | Typstring | AnforderungOptional | Werte und Limits Gilt, wenn: role=tool; die tatsächlich zurückgegebene ID verwenden | Standard— |
Feldmessages[].name | Typstring | AnforderungOptional | Werte und Limits | Standard— |
Feldmessages[].reasoning_content | Typstring | AnforderungOptional | Werte und Limits Gilt, wenn: Tatsächlich zurückgegebene Reasoning-Daten erneut übermitteln, sofern dieses Modell sie verwendet | Standard— |
Feldmessages[].reasoning_details | Typobject|array | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldmax_tokens | Typinteger | AnforderungOptional | Werte und Limits Minimum: 1 Modellabhängig | Standard— |
Feldmax_completion_tokens | Typinteger | AnforderungOptional | Werte und Limits Minimum: 1 Modellabhängig | Standard— |
Feldstream | Typboolean | AnforderungOptional | Werte und Limits | Standardfalse |
Feldstream_options.include_usage | Typboolean | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldtemperature | Typnumber | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldtop_p | Typnumber | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldstop | Typstring|string[] | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldtools | Typfunction_tool[] | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldtools[].type | Typstring | AnforderungOptional | Werte und Limits function Modellabhängig | Standard— |
Feldtools[].function.name | Typstring | AnforderungErforderlich | Werte und Limits Gilt, wenn: Funktionswerkzeug bereitgestellt | Standard— |
Feldtools[].function.description | Typstring | AnforderungOptional | Werte und Limits | Standard— |
Feldtools[].function.parameters | TypJSON_schema | AnforderungOptional | Werte und Limits | Standard— |
Feldtool_choice | Typstring|object | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldparallel_tool_calls | Typboolean | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldresponse_format | Typobject | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldreasoning_effort | Typstring | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldreasoning | Typobject | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldservice_tier | Typstring | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldinstructions | Typstring | AnforderungOptional | Werte und Limits Kompatibilitätsfeld | Standard— |
Feldfunctions | Typfunction[] | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldfunction_call | Typstring|object | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldprompt_cache_options | Typobject | AnforderungOptional | Werte und Limits Modellabhängig | Standard— |
Feldmodalities | Typstring[] | AnforderungOptional | Werte und Limits text | Standard— |
Feldprovider | Typobject | AnforderungOptional | Werte und Limits Bedingungen: provider.options wird auf dieser Ultra-Textroute abgelehnt | Standard— |
Feldcache_control.ttl | Typstring | AnforderungOptional | Werte und Limits Bedingungen: 1h wird in den tatsächlichen Prompt-Cache-Feldern abgelehnt | Standard— |
Kombinationen von Eingabematerialien
Text · UTF8-Text
messages[].content
Methodenparameter und Lebenszyklus
| Parameter | Vertrag |
|---|---|
Parametercontent_type | Vertragapplication/json |
Parameterrequired | Vertragmodel, messages |
Parametermaterial_types | Vertragtext |
Parametermessages | VertragNachrichtenarray mit role/content-Struktur |
Parameterfile_material | VertragTatsächliches UTF-8-Dokument als wörtlicher Text eingefügt; keine Datei-ID abgeleitet |
Parameteroptional_controls | Vertragstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametercontrol_scope | VertragModellspezifisch; benutzerseitige Funktionswerkzeuge unterscheiden sich von gehosteten Werkzeugen |
Parameteroutput_modalities | Vertragtext |
Parameterhosted_operations | Vertragfalse |
Parametermultimodal_input_binding | Vertragnull |
Lebenszyklus: synchronous_or_streamed
Die genaue Modell-ID zusammen mit messages senden.
Die Kontextlänge ist keine Ausgabeobergrenze.
Eine Textdatei kann wörtlichen Text liefern; Bild-, Audio- und Dateiobjekteingaben benötigen eine exakte Zuordnung.
Tarife
Tarifangaben erweitern die Anfrageoptionen nicht. Unterstützte Parameter stehen bei der ausgewählten Methode.
- Schnellmodus
- Nicht angegeben Wenn der Schnellmodus ausgewählt ist
- Flex-Modus
- Nicht angegeben Wenn der Modus flex ausgewählt ist
- Maximaler Denkaufwand
- Nicht angegeben Wenn beim maximalen Denkaufwand die Standardanpassung (default) verwendet wird
Ailoot-Tarife
Preise nach Konfiguration
| Konfiguration | Tarifstaffel | Gebühr |
|---|---|---|
| KonfigurationBasistarife für Token | TarifstaffelGrundtarif | Gebühr Eingabe · Eingabetoken $0.000144 / 1K Token Ausgabe · Ausgabetoken $0.00143 / 1K Token Eingabe · Cache-Lesen $0 / 1K Token Eingabe · Cache-Schreiben $0 / 1K Token Eingabe · Cache-Schreiben, 1 Stunde — / 1K Token |
Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. So funktionieren Reservierung und Abrechnung →
Beispielanfragen
Ailoot Ultra · OpenAI Chat
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-8B-Thinking", "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
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-8B-Thinking',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"))
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-8B-Thinking',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")
Ergebnisse abrufen und speichern
Ailoot Ultra · OpenAI Chat
json oder SSE
Alle fertiggestellten Ergebnisse aufbewahren
Bewahren Sie jede vollständig zurückgegebene Antwort, Datei und jeden Inhaltsteil auf.
Alle Antwortvarianten mit ihren Inhalten, Werkzeugaufrufen und Reasoning-Daten beibehalten. In SSE die Deltas nach Varianten- und Werkzeugindex zusammensetzen; endgültigen Beendigungsgrund und Verbrauchsdaten beibehalten.
Wenn die ursprüngliche Antwort geprüft werden muss
Anfrage- und Antwort-IDs sowie Header beibehalten. Eine allgemeine URL zum Abrufen von Textaufträgen wird nicht angegeben.
Antwortfelder
| Feld | Typ |
|---|---|
Feldchoices[].index | Typinteger |
Feldchoices[].message.content | Typstring|null |
Feldchoices[].message.tool_calls | Typtool_call[] |
Feldchoices[].message.reasoning_content | Typstring |
Feldchoices[].message.reasoning_details | Typobject|array |
Feldchoices[].finish_reason | Typstring|null |
Feldusage | Typobject |
Fehler und nächste Schritte
| Antwort | Bedingung | Nächster Schritt |
|---|---|---|
Antwort400 · invalid_request_error | BedingungPflichtfelder, Darstellung des Eingabematerials oder Parameterwert ungültig | Nächster SchrittDie angegebenen Felder vor einer neuen Erstellungsanfrage korrigieren. |
Aliasnamen
Modellaliasnamen
Ailoot Ultra Qwen/Qwen3-VL-8B-Thinking
Aliasnamen für Methodenpfade
Verwenden Sie die oben angezeigten Methodenpfade.
Zugehörige Aufrufer-IDs
Ailoot Ultra · Anthropic Messages POST /v1/messages Qwen/Qwen3-VL-8B-Thinking
Qwen/Qwen3-VL-8B-ThinkingStart
Qwen3-VL-8B-Thinking ist Qwens auf Schlussfolgern ausgerichtete 8B-Vision-Language-Edition. Sie verbindet Text, Bilder und Video für visuelles Problemlösen, Dokumentinterpretation, räumliche Analyse und Codegenerierung aus visuellen Referenzen.
- Zulässige Eingaben
- Text
- Ergebnisse
- json · sse
In Ailoot verfügbar · Eingaben und Methoden
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Eingabetypen
text- Ausgabetypen
json,sse- Ausgabeformat
- JSON oder SSE
| Feld | Typ | Anforderung | Werte und Limits | Standard |
|---|---|---|---|---|
Feldmodel | Typstring | AnforderungErforderlich | Werte und Limits Qwen/Qwen3-VL-8B-Thinking | Standard— |
Feldmessages | Typmessage[] | AnforderungErforderlich | Werte und Limits | Standard— |
Feldmessages[].role | Typstring | AnforderungErforderlich | Werte und Limits user, assistant | Standard— |
Feldmessages[].content | Typstring | AnforderungErforderlich | Werte und Limits | Standard— |
Feldmax_tokens | Typinteger | AnforderungErforderlich | Werte und Limits | Standard— |
Feldstream | Typboolean | AnforderungOptional | Werte und Limits | Standardfalse |
Kombinationen von Eingabematerialien
Text · UTF-8-Text
Zeichenfolge messages[].content
Methodenparameter und Lebenszyklus
| Parameter | Vertrag |
|---|---|
Parametercontent_type | Vertragapplication/json |
Parameterrequired | Vertragmodel, messages, max_tokens |
Parameteroptional_controls | Vertragstream |
Parametermaterial_types | Vertragtext |
Parametertext_file_material | VertragDas tatsächliche UTF-8-Dokument lesen und seinen Text in die angegebene Zeichenfolge für Eingabe oder Nachrichteninhalt einfügen. |
Lebenszyklus: synchronous_or_streamed
Tarife
Tarifangaben erweitern die Anfrageoptionen nicht. Unterstützte Parameter stehen bei der ausgewählten Methode.
- Schnellmodus
- Nicht angegeben Wenn der Schnellmodus ausgewählt ist
- Flex-Modus
- Nicht angegeben Wenn der Modus flex ausgewählt ist
- Maximaler Denkaufwand
- Nicht angegeben Wenn beim maximalen Denkaufwand die Standardanpassung (default) verwendet wird
Ailoot-Tarife
Preise nach Konfiguration
| Konfiguration | Tarifstaffel | Gebühr |
|---|---|---|
| KonfigurationBasistarife für Token | TarifstaffelGrundtarif | Gebühr Eingabe · Eingabetoken $0.000144 / 1K Token Ausgabe · Ausgabetoken $0.00143 / 1K Token Eingabe · Cache-Lesen $0 / 1K Token Eingabe · Cache-Schreiben $0 / 1K Token Eingabe · Cache-Schreiben, 1 Stunde — / 1K Token |
Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. So funktionieren Reservierung und Abrechnung →
Beispielanfragen
Ailoot Ultra · Anthropic Messages
{
"model": "Qwen/Qwen3-VL-8B-Thinking",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}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-8B-Thinking', '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
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-8B-Thinking', '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))
Ergebnisse abrufen und speichern
Ailoot Ultra · Anthropic Messages
JSON oder SSE
Alle fertiggestellten Ergebnisse aufbewahren
Bewahren Sie jede vollständig zurückgegebene Antwort, Datei und jeden Inhaltsteil auf.
Alle Inhaltsblöcke, Thinking-Signaturen und tatsächlichen Werkzeugaufruf-IDs beibehalten. Alle SSE-Blockdeltas zusammensetzen; der erste Textblock ist nicht die vollständige Ausgabe.
Wenn die ursprüngliche Antwort geprüft werden muss
Anfrage- und Antwort-IDs sowie Header beibehalten. Eine allgemeine URL zum Abrufen von Textaufträgen wird nicht angegeben.
Antwortfelder
| Feld | Typ |
|---|---|
Feldid | Typstring |
Feldmodel | Typstring |
Feldcontent[] | Typtext|thinking|tool_use|other content block |
Feldstop_reason | Typstring|null |
Feldusage | Typobject |
Fehler und nächste Schritte
| Antwort | Bedingung | Nächster Schritt |
|---|---|---|
Antwort400 · invalid_request_error | BedingungPflichtfelder, Darstellung des Eingabematerials oder Parameterwert ungültig | Nächster SchrittDie angegebenen Felder vor einer neuen Erstellungsanfrage korrigieren. |
Aliasnamen
Modellaliasnamen
Ailoot Ultra Qwen/Qwen3-VL-8B-Thinking
Aliasnamen für Methodenpfade
Verwenden Sie die oben angezeigten Methodenpfade.
Zugehörige Aufrufer-IDs
FAQ · Qwen/Qwen3-VL-8B-Thinking
- Welche Eingaben und Ergebnisse sind verfügbar?
POST /v1/chat/completions·Qwen/Qwen3-VL-8B-Thinking:text→textPOST /v1/messages·Qwen/Qwen3-VL-8B-Thinking:text→json,sse- Welche Felder verwendet die Anfrage?
POST /v1/chat/completions·Qwen/Qwen3-VL-8B-Thinking:model,messages,stream,modalities,providerPOST /v1/messages·Qwen/Qwen3-VL-8B-Thinking:model,messages,max_tokens,stream- Welche Grenzen gelten?
POST /v1/chat/completions·Qwen/Qwen3-VL-8B-Thinking:messages.min_items:1