QvQ-Max
QVQ-Max er Qwens modell for visuell resonnering med tekst, bilder og video, og returnerer tekst med en forklart løsning. Bruk den til matematiske diagrammer, visuell analyse, programmeringsrelaterte bilder og kreativ tolkning; spesifikasjonen angir en kontekst på 131 072 tokener og en utdatagrense på 8 192 tokener.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsqvq-max - Ailoot Ultra · Anthropic Messages
POST /v1/messagesqvq-max
Om modellen
Denne beskrivelsen dekker modellens funksjoner. Tilgjengelige inndata, utdata og alternativer i Ailoot er oppført nedenfor for den valgte metoden.
Oversikt: resonnering forankret i visuelle inndata
QVQ-Max er Qwens modell for visuell resonnering. Produsenten beskriver utdata med resonnementskjede og sterkere ferdigheter innen matematikk, programmering, visuell analyse, kreativt arbeid og generelle oppgaver. Den særskilte funksjonssiden oppgir tekst, bilder og video som inndata og tekst som utdata. Velg den til et spørsmål der det visuelle materialet inngår i resonneringsproblemet, som et diagram, et plott eller en sekvens av observerte hendelser.
Den nøyaktige modellutgaven
Produsenten beskriver for øyeblikket qvq-max som funksjonelt tilsvarende øyeblikksutgaven qvq-max-2025-03-25. Denne uttalelsen angir en relasjon mellom utgaver som produsenten har beskrevet; den endrer ikke de nøyaktige ID-ene en applikasjon bevarer. QVQ-Max bør ikke arve vektidentitet, parameterantall eller genereringsinnstillinger fra QVQ-72B-Preview, QVQ-Plus eller en nyere visuell Qwen-modell bare fordi de deler et resonneringstema. Et leverandørnavn med et latest-suffiks fastslår heller ikke i seg selv et fast kontrollpunkt.
Forbered et spørsmål for visuell resonnering
Gi det relevante bildet sammen med hele spørsmålet. For et matematisk diagram bevarer du etiketter, mål og den tilhørende oppgaveteksten og spør deretter hvilke relasjoner som følger av den synlige figuren, og hvilke som krever en ekstra antakelse. Be om et tydelig avgrenset sluttsvar med verdiene og relasjonene som ble brukt for å komme frem til det. En nyttig forklaring bør knytte hver viktig slutning til noe i materialet som er gitt.
For et diagram ber du modellen identifisere akser, enheter og dataserier før den tolker en trend. For et diagram over en algoritme eller et grensesnitt angir du ønsket atferd og spør hvordan den synlige strukturen henger sammen med den. For en kreativ brief skiller du en beskrivelse av det som faktisk finnes fra foreslåtte endringer eller tolkninger. Dette er utformede anvendelser av produsentens dokumenterte ferdigheter innen matematikk, programmering, analyse og skaping, ikke demonstrasjoner av vellykket behandling av et bestemt materiale.
Video og flere beviskilder
Video er uttrykkelig oppgitt som en inndatamodalitet. For analyse av en hendelse gir du det relevante segmentet og ber om en ordnet forklaring av hva som endrer seg, hvilken scene som støtter konklusjonen og hva som fortsatt er usikkert. Hvis tidsinformasjon finnes i inndataene, angir du hvordan resultatet skal vise til den. Den nøyaktige modellsiden fastsetter ikke en universell videovarighet, et antall bilder eller en tidsstempelpresisjon, så disse egenskapene bør ikke lånes fra en annen Qwen-familie.
Når spørsmålet bruker flere bilder eller tekstutdrag, merker du dem og forklarer relasjonen modellen skal undersøke. Be om et resultat organisert etter disse etikettene, slik at en gransker kan se hvilke bevis som støtter hvert punkt. Et resonneringssvar bør fortsatt kunne skilles fra sluttsvaret; en utførlig forklaring er bare nyttig når påstandene kan kontrolleres mot kilden.
Kontekst- og svargrenser
Spesifikasjonen angir et kontekstvindu på 131 072 tokener, en maksimal inndatalengde på 106 496 tokener og en maksimal utdatalengde på 8 192 tokener. Behold disse som separate verdier fremfor å utlede en udokumentert kvote for resonneringstokener fra forskjellen mellom dem. Tekst, representert visuelt materiale og generert innhold må holde seg innenfor de gjeldende sekvens- og utdatagrensene.
For en tettpakket side eller et diagram gjør du de relevante detaljene lesbare før innsending og beholder hele oppgaveteksten som slutningen krever. For en lang kilde velger du materialet knyttet til spørsmålet og reserverer nok svarplass til en konklusjon med støttende bevis. Tokenspesifikasjonen gir verken en ubegrenset kvote for visuelle inndata eller en garanti for at hver detalj huskes.
Verktøy, formatering og innholdsmessige grenser
Den nøyaktige funksjonsmatrisen markerer funksjonskall, innebygd nettsøk og håndhevede strukturerte utdata som ikke støttet. QVQ-Max sin visuelle resonnering bør derfor ikke presenteres som automatisk nettleserstyring, et verktøy for ekstern kodekjøring eller en kilde til sanntidsinformasjon. En ledetekst kan be om en tabell eller et tekstresultat formet som JSON, men forespørselen oppretter ikke en kontrakt om skjemahåndheving.
Den særskilte modellsiden publiserer verken en modellspesifikk bryter for hybrid tenkning eller et parameterantall. Behold den dokumenterte identiteten for visuell resonnering fremfor å hente inn innstillinger eller størrelsespåstander fra et annet kontrollpunkt. Kontroller små etiketter, uthentede tall, utledede relasjoner og kodeforslag mot kilden. Det praktiske resultatet er en forklart visuell konklusjon eller en foreløpig leveranse, forankret i materialet brukeren gir.
Praktisk oppgave
Praktisk oppgave
Teknisk eksempel på engelsk
Reason from a written geometric diagram
Use this textual description of a diagram: rectangle ABCD has adjacent sides AB=6 cm and BC=8 cm; diagonal AC is drawn. Find AC and the area of triangle ABC. Give the relationships and calculations supporting each result. Explain which stated geometric property makes the calculation valid; do not assume any extra marked lengths.Forventet resultat
A concise derivation, two clearly delimited results with units and the relevant rectangle property.Kontroller resultatet
Check the diagonal and triangle-area calculations use the stated right angle and correct units.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions qvq-max
qvq-maxStart
QVQ-Max er Qwens modell for visuell resonnering med tekst, bilder og video, og returnerer tekst med en forklart løsning. Bruk den til matematiske diagrammer, visuell analyse, programmeringsrelaterte bilder og kreativ tolkning; spesifikasjonen angir en kontekst på 131 072 tokener og en utdatagrense på 8 192 tokener.
- Godkjente inndata
- Tekst
- Resultater
- Tekst
Tilgjengelig i Ailoot · inndata & metoder
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Inndatatyper
text- Utdatatyper
text- Utdataformat
- json eller SSE
| Felt | Type | Krav | Verdier & grenser | Standard |
|---|---|---|---|---|
Feltmodel | Typestring | KravPåkrevd | Verdier & grenser qvq-max | Standard— |
Feltmessages | Typemessage[] | KravPåkrevd | Verdier & grenser Minste antall elementer: 1 | Standard— |
Feltmessages[].role | Typestring | KravPåkrevd | Verdier & grenser Eksempler: system, user, assistant, tool, function Vilkår: Disse rollene representeres eksplisitt av kompatibilitetstyper i kildekoden; det eksakte rollesettet for modellen er fortsatt modellspesifikt. Avhenger av modellen | Standard— |
Feltmessages[].content | Typestring|content_part[]|null | KravValgfritt | Verdier & grenser | Standard— |
Feltmessages[].tool_calls | Typetool_call[] | KravValgfritt | Verdier & grenser | Standard— |
Feltmessages[].tool_call_id | Typestring | KravValgfritt | Verdier & grenser Gjelder når: role=tool; bruk faktisk returnert ID | Standard— |
Feltmessages[].name | Typestring | KravValgfritt | Verdier & grenser | Standard— |
Feltmessages[].reasoning_content | Typestring | KravValgfritt | Verdier & grenser Gjelder når: Send den faktisk returnerte resonneringen tilbake der denne modellen bruker den | Standard— |
Feltmessages[].reasoning_details | Typeobject|array | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltmax_tokens | Typeinteger | KravValgfritt | Verdier & grenser Minimum: 1 Avhenger av modellen | Standard— |
Feltmax_completion_tokens | Typeinteger | KravValgfritt | Verdier & grenser Minimum: 1 Avhenger av modellen | Standard— |
Feltstream | Typeboolean | KravValgfritt | Verdier & grenser | Standardfalse |
Feltstream_options.include_usage | Typeboolean | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Felttemperature | Typenumber | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Felttop_p | Typenumber | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltstop | Typestring|string[] | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Felttools | Typefunction_tool[] | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Felttools[].type | Typestring | KravValgfritt | Verdier & grenser function Avhenger av modellen | Standard— |
Felttools[].function.name | Typestring | KravPåkrevd | Verdier & grenser Gjelder når: funksjonsverktøy oppgitt | Standard— |
Felttools[].function.description | Typestring | KravValgfritt | Verdier & grenser | Standard— |
Felttools[].function.parameters | TypeJSON_schema | KravValgfritt | Verdier & grenser | Standard— |
Felttool_choice | Typestring|object | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltparallel_tool_calls | Typeboolean | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltresponse_format | Typeobject | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltreasoning_effort | Typestring | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltreasoning | Typeobject | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltservice_tier | Typestring | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltinstructions | Typestring | KravValgfritt | Verdier & grenser Kompatibilitetsfelt | Standard— |
Feltfunctions | Typefunction[] | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltfunction_call | Typestring|object | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltprompt_cache_options | Typeobject | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
Feltmodalities | Typestring[] | KravValgfritt | Verdier & grenser text | Standard— |
Feltprovider | Typeobject | KravValgfritt | Verdier & grenser Vilkår: provider.options avvises på denne Ultra-tekstruten | Standard— |
Feltcache_control.ttl | Typestring | KravValgfritt | Verdier & grenser Vilkår: 1h avvises på faktiske steder for mellomlagring av ledetekster | Standard— |
Kombinasjoner av inngående materialer
Tekst · UTF8-tekst
messages[].content
Metodeparametere og livssyklus
| Parameter | Avtale |
|---|---|
Parametercontent_type | Avtaleapplication/json |
Parameterrequired | Avtalemodel, messages |
Parametermaterial_types | Avtaletext |
Parametermessages | Avtalemeldingstabell med role/content-struktur |
Parameterfile_material | Avtalefaktisk UTF-8-dokument satt inn som bokstavelig tekst; ingen fil-ID utledes |
Parameteroptional_controls | Avtalestream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametercontrol_scope | Avtalemodellspesifikt; brukerens funksjonsverktøy skiller seg fra driftede verktøy |
Parameteroutput_modalities | Avtaletext |
Parameterhosted_operations | Avtalefalse |
Parametermultimodal_input_binding | Avtalenull |
Livssyklus: synchronous_or_streamed
Send eksakt modell-ID sammen med messages.
Kontekstlengde er ikke en outputgrense.
En tekstfil kan levere bokstavelig tekst; bilde-, lyd- og filobjektinput trenger eksakt binding.
Priser
Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.
- Hurtigmodus
- Ikke angitt Når hurtigmodus er valgt
- Flex-modus
- Ikke angitt Når flex-modus er valgt
- Maksimal resonneringsinnsats
- Ikke angitt Når justeringen «default» brukes for maksimal resonneringsinnsats
Ailoot-satser
Priser etter konfigurasjon
| Konfigurasjon | Prisplan | Kostnad |
|---|---|---|
| KonfigurasjonGrunnpriser for tokener | PrisplanGrunnsats | Kostnad Inndata · Inngående tokener $0.0023 / 1K tokener Utdata · Utgående tokener $0.00916 / 1K tokener Inndata · Lesing fra hurtigbuffer $0 / 1K tokener Inndata · Skriving til hurtigbuffer $0 / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time — / 1K tokener |
Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. Slik fungerer reservasjon og oppgjør →
Eksempelforespørsler
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": "qvq-max", "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='qvq-max',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='qvq-max',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")
Motta og lagre resultater
Ailoot Ultra · OpenAI Chat
json eller SSE
Behold alle ferdige resultater
Behold alle fullstendige returnerte svar, filer og innholdsdeler.
Behold hvert svaralternativ med innhold, verktøykall og resonnering. Sett sammen endringer i SSE etter svaralternativets/verktøyets indeks, og behold endelig avslutningsgrunn og bruksdata.
Hvis det opprinnelige svaret må kontrolleres
Behold forespørsels-/svar-ID-er og headere. Ingen generell URL for henting av tekstjobber oppgis.
Svarfelter
| Felt | Type |
|---|---|
Feltchoices[].index | Typeinteger |
Feltchoices[].message.content | Typestring|null |
Feltchoices[].message.tool_calls | Typetool_call[] |
Feltchoices[].message.reasoning_content | Typestring |
Feltchoices[].message.reasoning_details | Typeobject|array |
Feltchoices[].finish_reason | Typestring|null |
Feltusage | Typeobject |
Feil og neste trinn
| Svar | Vilkår | Neste trinn |
|---|---|---|
Svar400 · invalid_request_error | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |
Aliaser
Modellaliaser
Ailoot Ultra qvq-max
Aliaser for metodestier
Bruk metodestiene som vises ovenfor.
Tilknyttede anroper-ID-er
Ailoot Ultra · Anthropic Messages POST /v1/messages qvq-max
qvq-maxStart
QVQ-Max er Qwens modell for visuell resonnering med tekst, bilder og video, og returnerer tekst med en forklart løsning. Bruk den til matematiske diagrammer, visuell analyse, programmeringsrelaterte bilder og kreativ tolkning; spesifikasjonen angir en kontekst på 131 072 tokener og en utdatagrense på 8 192 tokener.
- Godkjente inndata
- Tekst
- Resultater
- json · sse
Tilgjengelig i Ailoot · inndata & metoder
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Inndatatyper
text- Utdatatyper
json,sse- Utdataformat
- JSON eller SSE
| Felt | Type | Krav | Verdier & grenser | Standard |
|---|---|---|---|---|
Feltmodel | Typestring | KravPåkrevd | Verdier & grenser qvq-max | Standard— |
Feltmessages | Typemessage[] | KravPåkrevd | Verdier & grenser | Standard— |
Feltmessages[].role | Typestring | KravPåkrevd | Verdier & grenser user, assistant | Standard— |
Feltmessages[].content | Typestring | KravPåkrevd | Verdier & grenser | Standard— |
Feltmax_tokens | Typeinteger | KravPåkrevd | Verdier & grenser | Standard— |
Feltstream | Typeboolean | KravValgfritt | Verdier & grenser | Standardfalse |
Kombinasjoner av inngående materialer
Tekst · UTF-8-tekst
messages[].content-streng
Metodeparametere og livssyklus
| Parameter | Avtale |
|---|---|
Parametercontent_type | Avtaleapplication/json |
Parameterrequired | Avtalemodel, messages, max_tokens |
Parameteroptional_controls | Avtalestream |
Parametermaterial_types | Avtaletext |
Parametertext_file_material | AvtaleLes det faktiske UTF-8-dokumentet og legg teksten i den angitte input- eller meldingsinnholdsstrengen. |
Livssyklus: synchronous_or_streamed
Priser
Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.
- Hurtigmodus
- Ikke angitt Når hurtigmodus er valgt
- Flex-modus
- Ikke angitt Når flex-modus er valgt
- Maksimal resonneringsinnsats
- Ikke angitt Når justeringen «default» brukes for maksimal resonneringsinnsats
Ailoot-satser
Priser etter konfigurasjon
| Konfigurasjon | Prisplan | Kostnad |
|---|---|---|
| KonfigurasjonGrunnpriser for tokener | PrisplanGrunnsats | Kostnad Inndata · Inngående tokener $0.0023 / 1K tokener Utdata · Utgående tokener $0.00916 / 1K tokener Inndata · Lesing fra hurtigbuffer $0 / 1K tokener Inndata · Skriving til hurtigbuffer $0 / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time — / 1K tokener |
Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. Slik fungerer reservasjon og oppgjør →
Eksempelforespørsler
Ailoot Ultra · Anthropic Messages
{
"model": "qvq-max",
"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': 'qvq-max', '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': 'qvq-max', '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))
Motta og lagre resultater
Ailoot Ultra · Anthropic Messages
JSON eller SSE
Behold alle ferdige resultater
Behold alle fullstendige returnerte svar, filer og innholdsdeler.
Behold alle innholdsblokker, resonneringssignaturer og faktiske ID-er for verktøybruk. Sett sammen alle SSE-blokkendringer; den første tekstblokken er ikke hele resultatet.
Hvis det opprinnelige svaret må kontrolleres
Behold forespørsels-/svar-ID-er og headere. Ingen generell URL for henting av tekstjobber oppgis.
Svarfelter
| Felt | Type |
|---|---|
Feltid | Typestring |
Feltmodel | Typestring |
Feltcontent[] | Typetext|thinking|tool_use|other content block |
Feltstop_reason | Typestring|null |
Feltusage | Typeobject |
Feil og neste trinn
| Svar | Vilkår | Neste trinn |
|---|---|---|
Svar400 · invalid_request_error | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |
Aliaser
Modellaliaser
Ailoot Ultra qvq-max
Aliaser for metodestier
Bruk metodestiene som vises ovenfor.
Tilknyttede anroper-ID-er
FAQ · QvQ-Max
- Hvilke inndata og resultater er tilgjengelige?
POST /v1/chat/completions·qvq-max:text→textPOST /v1/messages·qvq-max:text→json,sse- Hvilke felt bruker forespørselen?
POST /v1/chat/completions·qvq-max:model,messages,stream,modalities,providerPOST /v1/messages·qvq-max:model,messages,max_tokens,stream- Hvilke grenser gjelder?
POST /v1/chat/completions·qvq-max:messages.min_items:1