models

Qwen: Qwen3.7 Plus

Markdown · JSON

Qwen: Qwen3.7 Plus

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

A modellről

Ez a leírás a modell képességeit ismerteti. Az Ailootban elérhető bemenetek, kimenetek és lehetőségek alább, a kiválasztott metódusnál láthatók.

A Qwen3.7 Plus az Alibaba Qwen3.7 sorozatának modellje. Szöveget és képeket fogad, és szöveget ad vissza, a sorozat nyelvi képességeit vizuális bemenettel ötvözve. Közzétett profilja 1,000,000 tokenes kontextusablakot és legfeljebb 131,072 választokent sorol fel, következtetési, eszköz- és strukturáltkimenet-vezérlőkkel.

Kapcsolja össze a kérdést a bizonyítékaival

Dokumentummal kapcsolatos kérdésnél adja meg a releváns anyagot, és jelölje meg az összehasonlítandó részleteket vagy szakaszokat. Vizuális feladathoz adjon olvasható képet, és nevezze meg a vizsgálandó objektumot, szöveget vagy felületállapotot. Egy képernyőkép alátámaszthat egy hibával vagy elrendezéssel kapcsolatos kérdést, az eredmény pedig szöveges magyarázat vagy kinyert megállapítások halmaza.

Több forrást lásson el címkékkel, hogy a megfigyelések a megfelelő anyaghoz kapcsolódjanak. Összehasonlításnál szempontonként egy megállapítás kérhető, a forrásazonosítójával együtt. Egy adatkinyerési feladatleírás meghatározhatja a visszaadandó mezőket és a hiányzó információ megjelenítését. A bizonytalan válaszok ellenőrzésekor tartsa elérhetően az eredeti bizonyítékot.

Következtetés, eszközök és az eredmény szerkezete

A kiszolgáló metaadatai következtetési vezérlőket, függvényeszközöket és strukturált kimeneteket sorolnak fel. Határozza meg a feladathoz szükséges mélységet és a környező alkalmazás számára elérhető műveleteket. A modell eszközhívást javasolhat, a tényleges megfigyelést pedig az alkalmazás adja vissza. Ezt a megfigyelést használja bizonyítékként a következő lépéshez.

Szoftverbe kerülő eredménynél határozza meg az elvárt formát, majd ellenőrizze a mezőket és értékeiket is. Ember által olvasható válasznál kérje először a következtetést, majd az azt alátámasztó releváns bizonyítékokat. Ugyanazok a forráscímkék kapcsolják össze a tömör választ a hosszabb munkaanyaggal.

Használja célzottan a rendelkezésre álló kontextust

A hosszú anyagot rendezze az aktuális kérdés köré, helyet hagyva a válasznak. Őrizze meg a már meghozott döntéseket és a releváns forrásrészleteket, és távolítsa el a választ már nem befolyásoló ismétléseket. A hasznos végső munkatermék olyan szöveges eredmény, amely a megadott képekkel vagy szövegrészletekkel összevetve ellenőrizhető, és átvihető az alkalmazás következő lépésébe.

Gyakorlati feladat

Gyakorlati feladat

Technikai példa angolul

Extract milestones with source references

Extract a milestone table from these labeled notes. Design D: prototype review on 12 July, owner Eva. Engineering E: implementation starts after prototype approval; finish date not committed. Support S: help draft due 15 July, owner Leo. Return milestone, owner, date or dependency and source label. Use 'not stated' rather than filling missing ownership or dates.

Várt eredmény

A source-linked milestone table with explicit dates, dependencies and missing-value markers.

Az eredmény ellenőrzése

Engineering's uncommitted finish date and absent owner remain marked as not stated.
Ailoot · Anthropic Messages POST /v1/messages qwen3.7-plus

qwen3.7-plus

Alibaba /qwen3.7-plus
Modell ID-ja
  • qwen3.7-plus
  • qwen-plus

Kezdő lépések

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

Elfogadott bemenetek
Szöveg · Képek
Eredmények
Szöveg

Elérhető az Ailootban · bemenetek és metódusok

Ailoot · Anthropic Messages POST /v1/messages
Bemenet
text, image
Kimenet
text
Kontextus
991 808 tokens
Maximális kimenet
131 072 tokens
Kimeneti formátum
json vagy SSE
MezőTípusKövetelményÉrtékek és korlátokAlapértelmezett
MezőmodelTípusstringKövetelményKötelezőÉrtékek és korlátok
qwen3.7-plus
Alapértelmezett—
MezőmessagesTípusmessage[]KövetelményKötelezőÉrtékek és korlátok
Minimális elemszám: 1
Alapértelmezett—
Mezőmessages[].roleTípusstringKövetelményKötelezőÉrtékek és korlátok
user, assistant
Alapértelmezett—
Mezőmessages[].contentTípusstring|content_block[]KövetelményKötelezőÉrtékek és korlátokAlapértelmezett—
MezősystemTípusstring|content_block[]KövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmax_tokensTípusintegerKövetelményKötelezőÉrtékek és korlátok
Minimum: 1
A korlát erre vonatkozik: a kiválasztott modell/kártya pontos felső korlátja
Alapértelmezett—
MezőstreamTípusbooleanKövetelményOpcionálisÉrtékek és korlátokAlapértelmezettfalse
MezőtemperatureTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtop_pTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőstop_sequencesTípusstring[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőtoolsTípustool[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtools[].nameTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: Eszköz megadva
Alapértelmezett—
Mezőtools[].descriptionTípusstringKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőtools[].input_schemaTípusJSON_schemaKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőtool_choiceTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőthinking.typeTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőthinking.budget_tokensTípusintegerKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőoutput_config.effortTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőmetadataTípusobjectKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőcache_controlTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Bemeneti anyagok kombinációi

Szöveg · UTF8 szöveg

messages[].content vagy type=text blokk

Szöveg + kép

{type:image,source:{type:base64,media_type,data}} vagy type=url típusú forrás

Metódus paraméterei és életciklusa
ParaméterSzerződés
Paramétermaterial_typesSzerződéstext, image
ParaméterrequiredSzerződésmodel, messages, max_tokens
Paraméteroptional_controlsSzerződésnull
Paramétercontent_typeSzerződésapplication/json
Paramétertext_file_materialSzerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek

Életciklus: exact retained published method

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

Díjcsomagok

Ailoot-metódusok díjai

Ailoot Anthropic MessagesPOST /v1/messages
Bemenet
0,0004 USD / 1K
Kimenet
0,0016 USD / 1K
Gyorsítótár olvasása
0,00004 USD / 1K
Írás a gyorsítótárba
0,0005 USD / 1K
Írás a gyorsítótárba, 5 perc
0,0005 USD / 1K tokens

A kérés hosszától függő árak · Anthropic Messages

A kérés mérete, tokenbenBemenetKimenetGyorsítótár olvasásaÍrás a gyorsítótárbaGyorsítótár 5 percGyorsítótár 1 óra
A kérés mérete, tokenben(0; 256 000]Bemenet0,0004 USDKimenet0,0016 USDGyorsítótár olvasása0,00004 USDÍrás a gyorsítótárba0,0005 USDGyorsítótár 5 perc0,0005 USDGyorsítótár 1 óraAlapdíjtétel: —
A kérés mérete, tokenben(256 000; ∞)Bemenet0,0012 USDKimenet0,0048 USDGyorsítótár olvasása≈0,00012 USDÍrás a gyorsítótárba0,0015 USDGyorsítótár 5 perc0,0015 USDGyorsítótár 1 óraAlapdíjtétel: —

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →

A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

BeállításDíjtáblázatKontextustokenek, több mintKontextustokenek, legfeljebbDíj
BeállításOpenAI Chat · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token

Példakérések

Ailoot · Anthropic Messages

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.7-plus", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
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/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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.7-plus", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
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/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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="qwen3.7-plus",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis 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(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "qwen3.7-plus",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,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=anthropic.Anthropic(base_url="https://api.ailoot.ai",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.messages.stream(model='qwen3.7-plus',max_tokens=1024,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_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Eredmények fogadása és mentése

Ailoot · Anthropic Messages

json vagy SSE

Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők
MezőTípus
MezőidTípusstring
MezőmodelTípusstring
Mezőcontent[]Típustext|thinking|tool_use|other content block
Mezőstop_reasonTípusstring|null
MezőusageTípusobject
Hibák és következő lépések
VálaszFeltételKövetkező lépés
Válasz400 · invalid_request_errorFeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterértékKövetkező lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt.

Álnevek

Modell álnevei

Ailoot qwen3.7-plus, qwen-plus
Ailoot Ultra qwen3.7-plus, qwen/qwen3.7-plus

Metódusútvonalak álnevei

/chat/completions

Kapcsolódó modellazonosítók

qwen/qwen3.7-plus, qwen-plus, qwen3.7-plus, qwen3.7-plus

Ailoot · OpenAI Responses POST /v1/responses qwen3.7-plus

qwen3.7-plus

Alibaba /qwen3.7-plus
Modell ID-ja
  • qwen3.7-plus
  • qwen-plus

Kezdő lépések

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

Elfogadott bemenetek
Szöveg · Képek
Eredmények
Szöveg

Elérhető az Ailootban · bemenetek és metódusok

Ailoot · OpenAI Responses POST /v1/responses
Bemenet
text, image
Kimenet
text
Kontextus
991 808 tokens
Maximális kimenet
131 072 tokens
Kimeneti formátum
json vagy SSE
MezőTípusKövetelményÉrtékek és korlátokAlapértelmezett
MezőmodelTípusstringKövetelményKötelezőÉrtékek és korlátok
qwen3.7-plus
Alapértelmezett—
MezőinputTípusstring|input_item[]KövetelményKötelezőÉrtékek és korlátokAlapértelmezett—
MezőinstructionsTípusstringKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőinput[].typeTípusstringKövetelményOpcionálisÉrtékek és korlátok
message, reasoning, function_call, function_call_output
Alapértelmezett—
Mezőinput[].contentTípusstring|content_part[]KövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőinput[].call_idTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: function_call_output; őrizze meg a ténylegesen visszaadott call_id értéket
Alapértelmezett—
Mezőinput[].outputTípusstring|content_part[]KövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: function_call_output
Alapértelmezett—
Mezőmax_output_tokensTípusintegerKövetelményOpcionálisÉrtékek és korlátok
Minimum: 1
Modelltől függ
Alapértelmezett—
MezőstreamTípusbooleanKövetelményOpcionálisÉrtékek és korlátokAlapértelmezettfalse
MezőtemperatureTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtop_pTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőtoolsTípustool[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtool_choiceTípusstring|objectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőparallel_tool_callsTípusbooleanKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőreasoning.effortTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőreasoning.summaryTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtext.formatTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtext.verbosityTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőincludeTípusstring[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőstoreTípusbooleanKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőprevious_response_idTípusstringKövetelményOpcionálisÉrtékek és korlátok
ID-követelmény: Csak támogatott folytatásból származó tényleges válaszazonosító
Modelltől függ
Alapértelmezett—
Mezőservice_tierTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőprompt_cache_keyTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőprompt_cache_optionsTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Bemeneti anyagok kombinációi

Szöveg · UTF8 szöveg

bemeneti szöveg vagy input_text rész

Szöveg + kép

{type:input_image,image_url}

Metódus paraméterei és életciklusa
ParaméterSzerződés
Paramétermaterial_typesSzerződéstext, image
ParaméterrequiredSzerződésmodel, input
Paraméteroptional_controlsSzerződésnull
Paramétercontent_typeSzerződésapplication/json
Paramétertext_file_materialSzerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek

Életciklus: exact retained published method

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

Díjcsomagok

Ailoot-metódusok díjai

Ailoot OpenAI ResponsesPOST /v1/responses
Bemenet
0,0004 USD / 1K
Kimenet
0,0016 USD / 1K
Gyorsítótár olvasása
0,00008 USD / 1K
Írás a gyorsítótárba
0,0004 USD / 1K
Írás a gyorsítótárba, 5 perc
0,0004 USD / 1K tokens
code_interpreter_call
0,00 USD hívásonként
image_search_call
0,008 USD hívásonként
web_extractor_call
0,00 USD hívásonként
web_search_call
0,01 USD hívásonként
web_search_image_call
0,008 USD hívásonként
Max. hívásszám: code_interpreter_call
8
Max. hívásszám: image_search_call
8
Max. hívásszám: web_extractor_call
8
Max. hívásszám: web_search_call
8
Max. hívásszám: web_search_image_call
8

A kérés hosszától függő árak · OpenAI Responses

A kérés mérete, tokenbenBemenetKimenetGyorsítótár olvasásaÍrás a gyorsítótárbaGyorsítótár 5 percGyorsítótár 1 óra
A kérés mérete, tokenben(0; 256 000]Bemenet0,0004 USDKimenet0,0016 USDGyorsítótár olvasása0,00008 USDÍrás a gyorsítótárba0,0004 USDGyorsítótár 5 perc0,0004 USDGyorsítótár 1 óraAlapdíjtétel: —
A kérés mérete, tokenben(256 000; ∞)Bemenet0,0012 USDKimenet0,0048 USDGyorsítótár olvasása≈0,00024 USDÍrás a gyorsítótárba0,0012 USDGyorsítótár 5 perc0,0012 USDGyorsítótár 1 óraAlapdíjtétel: —

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →

A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

BeállításDíjtáblázatKontextustokenek, több mintKontextustokenek, legfeljebbDíj
BeállításOpenAI Chat · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token

Példakérések

Ailoot · OpenAI Responses

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.7-plus", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
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/responses \
  -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 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(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.7-plus", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
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/responses \
  -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 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(json.loads(Path("result.json").read_text(encoding="utf-8")))
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)
resp = client.responses.create(model="qwen3.7-plus", input="Explain the difference between an observation and a hypothesis 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(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "qwen3.7-plus", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
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))

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)
with client.responses.stream(model="qwen3.7-plus", input="Explain the difference between an observation and a hypothesis 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_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Eredmények fogadása és mentése

Ailoot · OpenAI Responses

json vagy SSE

Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizzen meg minden kimeneti elemet és tartalomrészt, a tényleges függvényhívási call_id értéket, a titkosított gondolkodási tartalmat és a használati adatokat. Folyamatos átvitelkor őrizze meg az események és elemek összes azonosítóadatát.

Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők
MezőTípus
MezőidTípusstring
MezőstatusTípusstring
Mezőoutput[]Típusmessage|reasoning|function_call|other item
Mezőoutput[].content[]Típuscontent part
MezőusageTípusobject
Hibák és következő lépések
VálaszFeltételKövetkező lépés
Válasz400 · invalid_request_errorFeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterértékKövetkező lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt.

Álnevek

Modell álnevei

Ailoot qwen3.7-plus, qwen-plus
Ailoot Ultra qwen3.7-plus, qwen/qwen3.7-plus

Metódusútvonalak álnevei

/chat/completions

Kapcsolódó modellazonosítók

qwen/qwen3.7-plus, qwen-plus, qwen3.7-plus, qwen3.7-plus

Ailoot · OpenAI Chat POST /v1/chat/completions qwen3.7-plus

qwen3.7-plus

Alibaba /qwen3.7-plus
Modell ID-ja
  • qwen3.7-plus
  • qwen-plus

Kezdő lépések

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

Elfogadott bemenetek
Szöveg · Képek
Eredmények
Szöveg

Elérhető az Ailootban · bemenetek és metódusok

Ailoot · OpenAI Chat POST /v1/chat/completions
Bemenet
text, image
Kimenet
text
Kontextus
991 808 tokens
Maximális kimenet
131 072 tokens
Kimeneti formátum
json vagy SSE
MezőTípusKövetelményÉrtékek és korlátokAlapértelmezett
MezőmodelTípusstringKövetelményKötelezőÉrtékek és korlátok
qwen3.7-plus
Alapértelmezett—
MezőmessagesTípusmessage[]KövetelményKötelezőÉrtékek és korlátok
Minimális elemszám: 1
Alapértelmezett—
Mezőmessages[].roleTípusstringKövetelményKötelezőÉrtékek és korlátok
Példák: system, user, assistant, tool, function
Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus.
Modelltől függ
Alapértelmezett—
Mezőmessages[].contentTípusstring|content_part[]|nullKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].tool_callsTípustool_call[]KövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].tool_call_idTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t
Alapértelmezett—
Mezőmessages[].nameTípusstringKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].reasoning_contentTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja
Alapértelmezett—
Mezőmessages[].reasoning_detailsTípusobject|arrayKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőmax_tokensTípusintegerKövetelményOpcionálisÉrtékek és korlátok
Minimum: 1
Modelltől függ
Alapértelmezett—
Mezőmax_completion_tokensTípusintegerKövetelményOpcionálisÉrtékek és korlátok
Minimum: 1
Modelltől függ
Alapértelmezett—
MezőstreamTípusbooleanKövetelményOpcionálisÉrtékek és korlátokAlapértelmezettfalse
Mezőstream_options.include_usageTípusbooleanKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőtemperatureTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtop_pTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőstopTípusstring|string[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőtoolsTípusfunction_tool[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtools[].typeTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtools[].function.nameTípusstringKövetelményKötelezőÉrtékek és korlátok
Akkor alkalmazandó, ha: Függvényeszköz megadva
Alapértelmezett—
Mezőtools[].function.descriptionTípusstringKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőtools[].function.parametersTípusJSON_schemaKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőtool_choiceTípusstring|objectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőparallel_tool_callsTípusbooleanKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőresponse_formatTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőreasoning_effortTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőreasoningTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőservice_tierTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőinstructionsTípusstringKövetelményOpcionálisÉrtékek és korlátok
Kompatibilitási mező
Alapértelmezett—
MezőfunctionsTípusfunction[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőfunction_callTípusstring|objectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőprompt_cache_optionsTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Bemeneti anyagok kombinációi

Szöveg · UTF8 szöveg

messages[].content

Szöveg + kép

{type:image_url,image_url:{url,detail}}

Metódus paraméterei és életciklusa
ParaméterSzerződés
Paramétermaterial_typesSzerződéstext, image
ParaméterrequiredSzerződésmodel, messages
Paraméteroptional_controlsSzerződésnull
Paramétercontent_typeSzerződésapplication/json
Paramétertext_file_materialSzerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek

Életciklus: exact retained published method

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

Díjcsomagok

Ailoot-metódusok díjai

Ailoot OpenAI ChatPOST /v1/chat/completions
Bemenet
0,0004 USD / 1K
Kimenet
0,0016 USD / 1K
Gyorsítótár olvasása
0,00008 USD / 1K
Írás a gyorsítótárba
0,0004 USD / 1K
Írás a gyorsítótárba, 5 perc
0,0004 USD / 1K tokens

A kérés hosszától függő árak · OpenAI Chat

A kérés mérete, tokenbenBemenetKimenetGyorsítótár olvasásaÍrás a gyorsítótárbaGyorsítótár 5 percGyorsítótár 1 óra
A kérés mérete, tokenben(0; 256 000]Bemenet0,0004 USDKimenet0,0016 USDGyorsítótár olvasása0,00008 USDÍrás a gyorsítótárba0,0004 USDGyorsítótár 5 perc0,0004 USDGyorsítótár 1 óraAlapdíjtétel: —
A kérés mérete, tokenben(256 000; ∞)Bemenet0,0012 USDKimenet0,0048 USDGyorsítótár olvasása≈0,00024 USDÍrás a gyorsítótárba0,0012 USDGyorsítótár 5 perc0,0012 USDGyorsítótár 1 óraAlapdíjtétel: —

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →

A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

BeállításDíjtáblázatKontextustokenek, több mintKontextustokenek, legfeljebbDíj
BeállításOpenAI Chat · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token

Példakérések

Ailoot · OpenAI Chat

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.7-plus", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen3.7-plus", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
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)
resp = client.chat.completions.create(
    model="qwen3.7-plus",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis 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(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "qwen3.7-plus",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
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='qwen3.7-plus',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")

Eredmények fogadása és mentése

Ailoot · OpenAI Chat

json vagy SSE

Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők
MezőTípus
Mezőchoices[].indexTípusinteger
Mezőchoices[].message.contentTípusstring|null
Mezőchoices[].message.tool_callsTípustool_call[]
Mezőchoices[].message.reasoning_contentTípusstring
Mezőchoices[].message.reasoning_detailsTípusobject|array
Mezőchoices[].finish_reasonTípusstring|null
MezőusageTípusobject
Hibák és következő lépések
VálaszFeltételKövetkező lépés
Válasz400 · invalid_request_errorFeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterértékKövetkező lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt.

Álnevek

Modell álnevei

Ailoot qwen3.7-plus, qwen-plus
Ailoot Ultra qwen3.7-plus, qwen/qwen3.7-plus

Metódusútvonalak álnevei

/chat/completions

Kapcsolódó modellazonosítók

qwen/qwen3.7-plus, qwen-plus, qwen3.7-plus, qwen3.7-plus

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions qwen3.7-plus

qwen3.7-plus

Alibaba /qwen3.7-plus
Modell ID-ja
  • qwen3.7-plus
  • qwen/qwen3.7-plus

Kezdő lépések

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

Elfogadott bemenetek
Szöveg
Eredmények
Szöveg

Elérhető az Ailootban · bemenetek és metódusok

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Bemenet
text
Kimenet
text
Kimeneti formátum
json vagy SSE
MezőTípusKövetelményÉrtékek és korlátokAlapértelmezett
MezőmodelTípusstringKövetelményKötelezőÉrtékek és korlátok
qwen3.7-plus
Alapértelmezett—
MezőmessagesTípusmessage[]KövetelményKötelezőÉrtékek és korlátok
Minimális elemszám: 1
Alapértelmezett—
Mezőmessages[].roleTípusstringKövetelményKötelezőÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőmessages[].contentTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: Szöveges beszélgetés
Alapértelmezett—
MezőstreamTípusbooleanKövetelményOpcionálisÉrtékek és korlátokAlapértelmezettfalse
Bemeneti anyagok kombinációi

Szöveg · UTF8 szöveg

messages[].content

Metódus paraméterei és életciklusa
ParaméterSzerződés
Paramétercontent_typeSzerződésapplication/json
ParaméterrequiredSzerződésmodel, messages
Paramétermaterial_typesSzerződéstext
ParamétermessagesSzerződésüzenettömb role/content szerkezettel
Paraméterfile_materialSzerződésa tényleges UTF-8 dokumentum szó szerinti szövegként beillesztve; nincs kikövetkeztetett fájlazonosító
Paraméteroptional_controlsSzerződésstream
Paramétercontrol_scopeSzerződésSzöveges beszélgetés; a stream logikai érték, alapértéke false.
Paraméteroutput_modalitiesSzerződéstext
Paraméterhosted_operationsSzerződésfalse
Paramétermultimodal_input_bindingSzerződésnull

Metódus álnevei: /chat/completions

Életciklus: synchronous_or_streamed

Küldje el a pontos modellazonosítót a messages mellett.

A kontextushossz nem kimeneti felső korlát.

Egy szövegfájl szó szerinti szöveget adhat meg; a kép-/hang-/fájlobjektum-bemenetek pontos hozzárendelést igényelnek.

Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód
Normál díjszabás Ha a gyors mód van kiválasztva
Flex mód
Normál díjszabás Ha a flex mód van kiválasztva
Maximális gondolkodási ráfordítás
Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Ailoot-díjak

Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

BeállításDíjtáblázatKontextustokenek, több mintKontextustokenek, legfeljebbDíj
BeállításTokenenkénti alapárakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításA kéréshossz szerinti 1. ársávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításA kéréshossz szerinti 2. ársávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →

Példakérések

Ailoot Ultra · OpenAI Chat

curlPython SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"qwen3.7-plus","messages":[{"role":"user","content":"hello"}],"stream":false}')

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="qwen3.7-plus", messages=[{"role":"user","content":"hello"}], stream=False)
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"))

Eredmények fogadása és mentése

Ailoot Ultra · OpenAI Chat

json vagy SSE

Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők
MezőTípus
Mezőchoices[].indexTípusinteger
Mezőchoices[].message.contentTípusstring|null
Mezőchoices[].message.tool_callsTípustool_call[]
Mezőchoices[].message.reasoning_contentTípusstring
Mezőchoices[].message.reasoning_detailsTípusobject|array
Mezőchoices[].finish_reasonTípusstring|null
MezőusageTípusobject
Hibák és következő lépések
VálaszFeltételKövetkező lépés
Válasz400 · invalid_request_errorFeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterértékKövetkező lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt.

Álnevek

Modell álnevei

Ailoot qwen3.7-plus, qwen-plus
Ailoot Ultra qwen3.7-plus, qwen/qwen3.7-plus

Metódusútvonalak álnevei

/chat/completions

Kapcsolódó modellazonosítók

qwen/qwen3.7-plus, qwen-plus, qwen3.7-plus, qwen3.7-plus

Ailoot Ultra · Anthropic Messages POST /v1/messages qwen3.7-plus

qwen3.7-plus

Alibaba /qwen3.7-plus
Modell ID-ja
  • qwen3.7-plus
  • qwen/qwen3.7-plus

Kezdő lépések

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

Elfogadott bemenetek
Szöveg
Eredmények
json · sse

Elérhető az Ailootban · bemenetek és metódusok

Ailoot Ultra · Anthropic Messages POST /v1/messages
Bemenet
text
Kimenet
json, sse
Kimeneti formátum
JSON vagy SSE
MezőTípusKövetelményÉrtékek és korlátokAlapértelmezett
MezőmodelTípusstringKövetelményKötelezőÉrtékek és korlátok
qwen3.7-plus
Alapértelmezett—
MezőmessagesTípusmessage[]KövetelményKötelezőÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].roleTípusstringKövetelményKötelezőÉrtékek és korlátok
user, assistant
Alapértelmezett—
Mezőmessages[].contentTípusstringKövetelményKötelezőÉrtékek és korlátokAlapértelmezett—
Mezőmax_tokensTípusintegerKövetelményKötelezőÉrtékek és korlátokAlapértelmezett—
MezőstreamTípusbooleanKövetelményOpcionálisÉrtékek és korlátokAlapértelmezettfalse
Bemeneti anyagok kombinációi

Szöveg · UTF-8 szöveg

messages[].content karakterlánc

Metódus paraméterei és életciklusa
ParaméterSzerződés
Paramétercontent_typeSzerződésapplication/json
ParaméterrequiredSzerződésmodel, messages, max_tokens
Paraméteroptional_controlsSzerződésstream
Paramétermaterial_typesSzerződéstext
Paramétertext_file_materialSzerződésOlvassa el a tényleges UTF-8 dokumentumot, és tegye a szövegét a jelzett bemeneti karakterláncba vagy az üzenettartalom karakterláncába.

Életciklus: synchronous_or_streamed

Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód
Normál díjszabás Ha a gyors mód van kiválasztva
Flex mód
Normál díjszabás Ha a flex mód van kiválasztva
Maximális gondolkodási ráfordítás
Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Ailoot-díjak

Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

BeállításDíjtáblázatKontextustokenek, több mintKontextustokenek, legfeljebbDíj
BeállításTokenenkénti alapárakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításA kéréshossz szerinti 1. ársávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításA kéréshossz szerinti 2. ársávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →

Példakérések

Ailoot Ultra · Anthropic Messages

Teljes, minimális JSON-törzscurl · használd a saját UTF-8-dokumentumodatPython · mentsd el a teljes eredményt
{
  "model": "qwen3.7-plus",
  "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': 'qwen3.7-plus', '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': 'qwen3.7-plus', '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))

Eredmények fogadása és mentése

Ailoot Ultra · Anthropic Messages

JSON vagy SSE

Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők
MezőTípus
MezőidTípusstring
MezőmodelTípusstring
Mezőcontent[]Típustext|thinking|tool_use|other content block
Mezőstop_reasonTípusstring|null
MezőusageTípusobject
Hibák és következő lépések
VálaszFeltételKövetkező lépés
Válasz400 · invalid_request_errorFeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterértékKövetkező lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt.

Álnevek

Modell álnevei

Ailoot qwen3.7-plus, qwen-plus
Ailoot Ultra qwen3.7-plus, qwen/qwen3.7-plus

Metódusútvonalak álnevei

/chat/completions

Kapcsolódó modellazonosítók

qwen/qwen3.7-plus, qwen-plus, qwen3.7-plus, qwen3.7-plus

Ailoot · Anthropic Messages POST /v1/messages qwen-plus

qwen-plus

Alibaba /qwen-plus
Modell ID-ja
  • qwen3.7-plus
  • qwen-plus

Kezdő lépések

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

Elfogadott bemenetek
Szöveg · Képek
Eredmények
Szöveg

Elérhető az Ailootban · bemenetek és metódusok

Ailoot · Anthropic Messages POST /v1/messages
Bemenet
text, image
Kimenet
text
Kontextus
991 808 tokens
Maximális kimenet
131 072 tokens
Kimeneti formátum
json vagy SSE
MezőTípusKövetelményÉrtékek és korlátokAlapértelmezett
MezőmodelTípusstringKövetelményKötelezőÉrtékek és korlátok
qwen-plus
Alapértelmezett—
MezőmessagesTípusmessage[]KövetelményKötelezőÉrtékek és korlátok
Minimális elemszám: 1
Alapértelmezett—
Mezőmessages[].roleTípusstringKövetelményKötelezőÉrtékek és korlátok
user, assistant
Alapértelmezett—
Mezőmessages[].contentTípusstring|content_block[]KövetelményKötelezőÉrtékek és korlátokAlapértelmezett—
MezősystemTípusstring|content_block[]KövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmax_tokensTípusintegerKövetelményKötelezőÉrtékek és korlátok
Minimum: 1
A korlát erre vonatkozik: a kiválasztott modell/kártya pontos felső korlátja
Alapértelmezett—
MezőstreamTípusbooleanKövetelményOpcionálisÉrtékek és korlátokAlapértelmezettfalse
MezőtemperatureTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtop_pTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőstop_sequencesTípusstring[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőtoolsTípustool[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtools[].nameTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: Eszköz megadva
Alapértelmezett—
Mezőtools[].descriptionTípusstringKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőtools[].input_schemaTípusJSON_schemaKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőtool_choiceTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőthinking.typeTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőthinking.budget_tokensTípusintegerKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőoutput_config.effortTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőmetadataTípusobjectKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőcache_controlTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Bemeneti anyagok kombinációi

Szöveg · UTF8 szöveg

messages[].content vagy type=text blokk

Szöveg + kép

{type:image,source:{type:base64,media_type,data}} vagy type=url típusú forrás

Metódus paraméterei és életciklusa
ParaméterSzerződés
Paramétermaterial_typesSzerződéstext, image
ParaméterrequiredSzerződésmodel, messages, max_tokens
Paraméteroptional_controlsSzerződésnull
Paramétercontent_typeSzerződésapplication/json
Paramétertext_file_materialSzerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek

Életciklus: exact retained published method

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

Díjcsomagok

Ailoot-metódusok díjai

Ailoot Anthropic MessagesPOST /v1/messages
Bemenet
0,0004 USD / 1K
Kimenet
0,0016 USD / 1K
Gyorsítótár olvasása
0,00004 USD / 1K
Írás a gyorsítótárba
0,0005 USD / 1K
Írás a gyorsítótárba, 5 perc
0,0005 USD / 1K tokens

A kérés hosszától függő árak · Anthropic Messages

A kérés mérete, tokenbenBemenetKimenetGyorsítótár olvasásaÍrás a gyorsítótárbaGyorsítótár 5 percGyorsítótár 1 óra
A kérés mérete, tokenben(0; 256 000]Bemenet0,0004 USDKimenet0,0016 USDGyorsítótár olvasása0,00004 USDÍrás a gyorsítótárba0,0005 USDGyorsítótár 5 perc0,0005 USDGyorsítótár 1 óraAlapdíjtétel: —
A kérés mérete, tokenben(256 000; ∞)Bemenet0,0012 USDKimenet0,0048 USDGyorsítótár olvasása≈0,00012 USDÍrás a gyorsítótárba0,0015 USDGyorsítótár 5 perc0,0015 USDGyorsítótár 1 óraAlapdíjtétel: —

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →

A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

BeállításDíjtáblázatKontextustokenek, több mintKontextustokenek, legfeljebbDíj
BeállításOpenAI Chat · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token

Példakérések

Ailoot · Anthropic Messages

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen-plus", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
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/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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen-plus", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
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/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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="qwen-plus",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis 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(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "qwen-plus",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,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=anthropic.Anthropic(base_url="https://api.ailoot.ai",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.messages.stream(model='qwen-plus',max_tokens=1024,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_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Eredmények fogadása és mentése

Ailoot · Anthropic Messages

json vagy SSE

Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők
MezőTípus
MezőidTípusstring
MezőmodelTípusstring
Mezőcontent[]Típustext|thinking|tool_use|other content block
Mezőstop_reasonTípusstring|null
MezőusageTípusobject
Hibák és következő lépések
VálaszFeltételKövetkező lépés
Válasz400 · invalid_request_errorFeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterértékKövetkező lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt.

Álnevek

Modell álnevei

Ailoot qwen3.7-plus, qwen-plus
Ailoot Ultra qwen3.7-plus, qwen/qwen3.7-plus

Metódusútvonalak álnevei

/chat/completions

Kapcsolódó modellazonosítók

qwen/qwen3.7-plus, qwen-plus, qwen3.7-plus, qwen3.7-plus

Ailoot · OpenAI Responses POST /v1/responses qwen-plus

qwen-plus

Alibaba /qwen-plus
Modell ID-ja
  • qwen3.7-plus
  • qwen-plus

Kezdő lépések

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

Elfogadott bemenetek
Szöveg · Képek
Eredmények
Szöveg

Elérhető az Ailootban · bemenetek és metódusok

Ailoot · OpenAI Responses POST /v1/responses
Bemenet
text, image
Kimenet
text
Kontextus
991 808 tokens
Maximális kimenet
131 072 tokens
Kimeneti formátum
json vagy SSE
MezőTípusKövetelményÉrtékek és korlátokAlapértelmezett
MezőmodelTípusstringKövetelményKötelezőÉrtékek és korlátok
qwen-plus
Alapértelmezett—
MezőinputTípusstring|input_item[]KövetelményKötelezőÉrtékek és korlátokAlapértelmezett—
MezőinstructionsTípusstringKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőinput[].typeTípusstringKövetelményOpcionálisÉrtékek és korlátok
message, reasoning, function_call, function_call_output
Alapértelmezett—
Mezőinput[].contentTípusstring|content_part[]KövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőinput[].call_idTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: function_call_output; őrizze meg a ténylegesen visszaadott call_id értéket
Alapértelmezett—
Mezőinput[].outputTípusstring|content_part[]KövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: function_call_output
Alapértelmezett—
Mezőmax_output_tokensTípusintegerKövetelményOpcionálisÉrtékek és korlátok
Minimum: 1
Modelltől függ
Alapértelmezett—
MezőstreamTípusbooleanKövetelményOpcionálisÉrtékek és korlátokAlapértelmezettfalse
MezőtemperatureTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtop_pTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőtoolsTípustool[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtool_choiceTípusstring|objectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőparallel_tool_callsTípusbooleanKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőreasoning.effortTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőreasoning.summaryTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtext.formatTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtext.verbosityTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőincludeTípusstring[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőstoreTípusbooleanKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőprevious_response_idTípusstringKövetelményOpcionálisÉrtékek és korlátok
ID-követelmény: Csak támogatott folytatásból származó tényleges válaszazonosító
Modelltől függ
Alapértelmezett—
Mezőservice_tierTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőprompt_cache_keyTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőprompt_cache_optionsTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Bemeneti anyagok kombinációi

Szöveg · UTF8 szöveg

bemeneti szöveg vagy input_text rész

Szöveg + kép

{type:input_image,image_url}

Metódus paraméterei és életciklusa
ParaméterSzerződés
Paramétermaterial_typesSzerződéstext, image
ParaméterrequiredSzerződésmodel, input
Paraméteroptional_controlsSzerződésnull
Paramétercontent_typeSzerződésapplication/json
Paramétertext_file_materialSzerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek

Életciklus: exact retained published method

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

Díjcsomagok

Ailoot-metódusok díjai

Ailoot OpenAI ResponsesPOST /v1/responses
Bemenet
0,0004 USD / 1K
Kimenet
0,0016 USD / 1K
Gyorsítótár olvasása
0,00008 USD / 1K
Írás a gyorsítótárba
0,0004 USD / 1K
Írás a gyorsítótárba, 5 perc
0,0004 USD / 1K tokens
code_interpreter_call
0,00 USD hívásonként
image_search_call
0,008 USD hívásonként
web_extractor_call
0,00 USD hívásonként
web_search_call
0,01 USD hívásonként
web_search_image_call
0,008 USD hívásonként
Max. hívásszám: code_interpreter_call
8
Max. hívásszám: image_search_call
8
Max. hívásszám: web_extractor_call
8
Max. hívásszám: web_search_call
8
Max. hívásszám: web_search_image_call
8

A kérés hosszától függő árak · OpenAI Responses

A kérés mérete, tokenbenBemenetKimenetGyorsítótár olvasásaÍrás a gyorsítótárbaGyorsítótár 5 percGyorsítótár 1 óra
A kérés mérete, tokenben(0; 256 000]Bemenet0,0004 USDKimenet0,0016 USDGyorsítótár olvasása0,00008 USDÍrás a gyorsítótárba0,0004 USDGyorsítótár 5 perc0,0004 USDGyorsítótár 1 óraAlapdíjtétel: —
A kérés mérete, tokenben(256 000; ∞)Bemenet0,0012 USDKimenet0,0048 USDGyorsítótár olvasása≈0,00024 USDÍrás a gyorsítótárba0,0012 USDGyorsítótár 5 perc0,0012 USDGyorsítótár 1 óraAlapdíjtétel: —

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →

A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

BeállításDíjtáblázatKontextustokenek, több mintKontextustokenek, legfeljebbDíj
BeállításOpenAI Chat · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token

Példakérések

Ailoot · OpenAI Responses

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen-plus", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+text
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/responses \
  -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 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(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen-plus", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
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/responses \
  -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 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(json.loads(Path("result.json").read_text(encoding="utf-8")))
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)
resp = client.responses.create(model="qwen-plus", input="Explain the difference between an observation and a hypothesis 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(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "qwen-plus", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
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))

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)
with client.responses.stream(model="qwen-plus", input="Explain the difference between an observation and a hypothesis 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_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Eredmények fogadása és mentése

Ailoot · OpenAI Responses

json vagy SSE

Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizzen meg minden kimeneti elemet és tartalomrészt, a tényleges függvényhívási call_id értéket, a titkosított gondolkodási tartalmat és a használati adatokat. Folyamatos átvitelkor őrizze meg az események és elemek összes azonosítóadatát.

Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők
MezőTípus
MezőidTípusstring
MezőstatusTípusstring
Mezőoutput[]Típusmessage|reasoning|function_call|other item
Mezőoutput[].content[]Típuscontent part
MezőusageTípusobject
Hibák és következő lépések
VálaszFeltételKövetkező lépés
Válasz400 · invalid_request_errorFeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterértékKövetkező lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt.

Álnevek

Modell álnevei

Ailoot qwen3.7-plus, qwen-plus
Ailoot Ultra qwen3.7-plus, qwen/qwen3.7-plus

Metódusútvonalak álnevei

/chat/completions

Kapcsolódó modellazonosítók

qwen/qwen3.7-plus, qwen-plus, qwen3.7-plus, qwen3.7-plus

Ailoot · OpenAI Chat POST /v1/chat/completions qwen-plus

qwen-plus

Alibaba /qwen-plus
Modell ID-ja
  • qwen3.7-plus
  • qwen-plus

Kezdő lépések

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

Elfogadott bemenetek
Szöveg · Képek
Eredmények
Szöveg

Elérhető az Ailootban · bemenetek és metódusok

Ailoot · OpenAI Chat POST /v1/chat/completions
Bemenet
text, image
Kimenet
text
Kontextus
991 808 tokens
Maximális kimenet
131 072 tokens
Kimeneti formátum
json vagy SSE
MezőTípusKövetelményÉrtékek és korlátokAlapértelmezett
MezőmodelTípusstringKövetelményKötelezőÉrtékek és korlátok
qwen-plus
Alapértelmezett—
MezőmessagesTípusmessage[]KövetelményKötelezőÉrtékek és korlátok
Minimális elemszám: 1
Alapértelmezett—
Mezőmessages[].roleTípusstringKövetelményKötelezőÉrtékek és korlátok
Példák: system, user, assistant, tool, function
Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus.
Modelltől függ
Alapértelmezett—
Mezőmessages[].contentTípusstring|content_part[]|nullKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].tool_callsTípustool_call[]KövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].tool_call_idTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t
Alapértelmezett—
Mezőmessages[].nameTípusstringKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].reasoning_contentTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja
Alapértelmezett—
Mezőmessages[].reasoning_detailsTípusobject|arrayKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőmax_tokensTípusintegerKövetelményOpcionálisÉrtékek és korlátok
Minimum: 1
Modelltől függ
Alapértelmezett—
Mezőmax_completion_tokensTípusintegerKövetelményOpcionálisÉrtékek és korlátok
Minimum: 1
Modelltől függ
Alapértelmezett—
MezőstreamTípusbooleanKövetelményOpcionálisÉrtékek és korlátokAlapértelmezettfalse
Mezőstream_options.include_usageTípusbooleanKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőtemperatureTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtop_pTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőstopTípusstring|string[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőtoolsTípusfunction_tool[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtools[].typeTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtools[].function.nameTípusstringKövetelményKötelezőÉrtékek és korlátok
Akkor alkalmazandó, ha: Függvényeszköz megadva
Alapértelmezett—
Mezőtools[].function.descriptionTípusstringKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőtools[].function.parametersTípusJSON_schemaKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőtool_choiceTípusstring|objectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőparallel_tool_callsTípusbooleanKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőresponse_formatTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőreasoning_effortTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőreasoningTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőservice_tierTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőinstructionsTípusstringKövetelményOpcionálisÉrtékek és korlátok
Kompatibilitási mező
Alapértelmezett—
MezőfunctionsTípusfunction[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőfunction_callTípusstring|objectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőprompt_cache_optionsTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Bemeneti anyagok kombinációi

Szöveg · UTF8 szöveg

messages[].content

Szöveg + kép

{type:image_url,image_url:{url,detail}}

Metódus paraméterei és életciklusa
ParaméterSzerződés
Paramétermaterial_typesSzerződéstext, image
ParaméterrequiredSzerződésmodel, messages
Paraméteroptional_controlsSzerződésnull
Paramétercontent_typeSzerződésapplication/json
Paramétertext_file_materialSzerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek

Életciklus: exact retained published method

A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.

Díjcsomagok

Ailoot-metódusok díjai

Ailoot OpenAI ChatPOST /v1/chat/completions
Bemenet
0,0004 USD / 1K
Kimenet
0,0016 USD / 1K
Gyorsítótár olvasása
0,00008 USD / 1K
Írás a gyorsítótárba
0,0004 USD / 1K
Írás a gyorsítótárba, 5 perc
0,0004 USD / 1K tokens

A kérés hosszától függő árak · OpenAI Chat

A kérés mérete, tokenbenBemenetKimenetGyorsítótár olvasásaÍrás a gyorsítótárbaGyorsítótár 5 percGyorsítótár 1 óra
A kérés mérete, tokenben(0; 256 000]Bemenet0,0004 USDKimenet0,0016 USDGyorsítótár olvasása0,00008 USDÍrás a gyorsítótárba0,0004 USDGyorsítótár 5 perc0,0004 USDGyorsítótár 1 óraAlapdíjtétel: —
A kérés mérete, tokenben(256 000; ∞)Bemenet0,0012 USDKimenet0,0048 USDGyorsítótár olvasása≈0,00024 USDÍrás a gyorsítótárba0,0012 USDGyorsítótár 5 perc0,0012 USDGyorsítótár 1 óraAlapdíjtétel: —

Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →

A referencia-díjszabás részletei

A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.

Modell referenciatáblázatai

Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

BeállításDíjtáblázatKontextustokenek, több mintKontextustokenek, legfeljebbDíj
BeállításOpenAI Chat · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Alap tokendíjakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token

Példakérések

Ailoot · OpenAI Chat

Szöveges példaBemenet, képPython SDKNode.js SDKPython-adatfolyam
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen-plus", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen-plus", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
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)
resp = client.chat.completions.create(
    model="qwen-plus",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis 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(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "qwen-plus",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
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-plus',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")

Eredmények fogadása és mentése

Ailoot · OpenAI Chat

json vagy SSE

Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők
MezőTípus
Mezőchoices[].indexTípusinteger
Mezőchoices[].message.contentTípusstring|null
Mezőchoices[].message.tool_callsTípustool_call[]
Mezőchoices[].message.reasoning_contentTípusstring
Mezőchoices[].message.reasoning_detailsTípusobject|array
Mezőchoices[].finish_reasonTípusstring|null
MezőusageTípusobject
Hibák és következő lépések
VálaszFeltételKövetkező lépés
Válasz400 · invalid_request_errorFeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterértékKövetkező lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt.

Álnevek

Modell álnevei

Ailoot qwen3.7-plus, qwen-plus
Ailoot Ultra qwen3.7-plus, qwen/qwen3.7-plus

Metódusútvonalak álnevei

/chat/completions

Kapcsolódó modellazonosítók

qwen/qwen3.7-plus, qwen-plus, qwen3.7-plus, qwen3.7-plus

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions qwen/qwen3.7-plus

qwen/qwen3.7-plus

Alibaba /qwen/qwen3.7-plus
Modell ID-ja
  • qwen3.7-plus
  • qwen/qwen3.7-plus

Kezdő lépések

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

Elfogadott bemenetek
Szöveg
Eredmények
Szöveg

Elérhető az Ailootban · bemenetek és metódusok

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Bemenet
text
Kimenet
text
Kimeneti formátum
json vagy SSE
MezőTípusKövetelményÉrtékek és korlátokAlapértelmezett
MezőmodelTípusstringKövetelményKötelezőÉrtékek és korlátok
qwen/qwen3.7-plus
Alapértelmezett—
MezőmessagesTípusmessage[]KövetelményKötelezőÉrtékek és korlátok
Minimális elemszám: 1
Alapértelmezett—
Mezőmessages[].roleTípusstringKövetelményKötelezőÉrtékek és korlátok
Példák: system, user, assistant, tool, function
Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus.
Modelltől függ
Alapértelmezett—
Mezőmessages[].contentTípusstring|content_part[]|nullKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].tool_callsTípustool_call[]KövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].tool_call_idTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t
Alapértelmezett—
Mezőmessages[].nameTípusstringKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].reasoning_contentTípusstringKövetelményOpcionálisÉrtékek és korlátok
Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja
Alapértelmezett—
Mezőmessages[].reasoning_detailsTípusobject|arrayKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőmax_tokensTípusintegerKövetelményOpcionálisÉrtékek és korlátok
Minimum: 1
Modelltől függ
Alapértelmezett—
Mezőmax_completion_tokensTípusintegerKövetelményOpcionálisÉrtékek és korlátok
Minimum: 1
Modelltől függ
Alapértelmezett—
MezőstreamTípusbooleanKövetelményOpcionálisÉrtékek és korlátokAlapértelmezettfalse
Mezőstream_options.include_usageTípusbooleanKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőtemperatureTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtop_pTípusnumberKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőstopTípusstring|string[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőtoolsTípusfunction_tool[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőtools[].typeTípusstringKövetelményOpcionálisÉrtékek és korlátok
function
Modelltől függ
Alapértelmezett—
Mezőtools[].function.nameTípusstringKövetelményKötelezőÉrtékek és korlátok
Akkor alkalmazandó, ha: Függvényeszköz megadva
Alapértelmezett—
Mezőtools[].function.descriptionTípusstringKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőtools[].function.parametersTípusJSON_schemaKövetelményOpcionálisÉrtékek és korlátokAlapértelmezett—
Mezőtool_choiceTípusstring|objectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőparallel_tool_callsTípusbooleanKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőresponse_formatTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőreasoning_effortTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőreasoningTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőservice_tierTípusstringKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőinstructionsTípusstringKövetelményOpcionálisÉrtékek és korlátok
Kompatibilitási mező
Alapértelmezett—
MezőfunctionsTípusfunction[]KövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőfunction_callTípusstring|objectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
Mezőprompt_cache_optionsTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Modelltől függ
Alapértelmezett—
MezőmodalitiesTípusstring[]KövetelményOpcionálisÉrtékek és korlátok
text
Alapértelmezett—
MezőproviderTípusobjectKövetelményOpcionálisÉrtékek és korlátok
Feltételek: A provider.options elutasításra kerül ezen az Ultra szöveges útvonalon
Alapértelmezett—
Mezőcache_control.ttlTípusstringKövetelményOpcionálisÉrtékek és korlátok
Feltételek: Az 1h elutasításra kerül a tényleges prompt-gyorsítótárazási helyeken
Alapértelmezett—
Bemeneti anyagok kombinációi

Szöveg · UTF8 szöveg

messages[].content

Metódus paraméterei és életciklusa
ParaméterSzerződés
Paramétercontent_typeSzerződésapplication/json
ParaméterrequiredSzerződésmodel, messages
Paramétermaterial_typesSzerződéstext
ParamétermessagesSzerződésüzenettömb role/content szerkezettel
Paraméterfile_materialSzerződésa tényleges UTF-8 dokumentum szó szerinti szövegként beillesztve; nincs kikövetkeztetett fájlazonosító
Paraméteroptional_controlsSzerződésstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Paramétercontrol_scopeSzerződésmodellspecifikus; a felhasználói függvényeszközök eltérnek a hosztolt eszközöktől
Paraméteroutput_modalitiesSzerződéstext
Paraméterhosted_operationsSzerződésfalse
Paramétermultimodal_input_bindingSzerződésnull

Életciklus: synchronous_or_streamed

Küldje el a pontos modellazonosítót a messages mellett.

A kontextushossz nem kimeneti felső korlát.

Egy szövegfájl szó szerinti szöveget adhat meg; a kép-/hang-/fájlobjektum-bemenetek pontos hozzárendelést igényelnek.

Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód
Normál díjszabás Ha a gyors mód van kiválasztva
Flex mód
Normál díjszabás Ha a flex mód van kiválasztva
Maximális gondolkodási ráfordítás
Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Ailoot-díjak

Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

BeállításDíjtáblázatKontextustokenek, több mintKontextustokenek, legfeljebbDíj
BeállításTokenenkénti alapárakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításA kéréshossz szerinti 1. ársávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításA kéréshossz szerinti 2. ársávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →

Példakérések

Ailoot Ultra · OpenAI Chat

curlPython SDKPython-adatfolyam
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.7-plus", "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.7-plus',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.7-plus',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")

Eredmények fogadása és mentése

Ailoot Ultra · OpenAI Chat

json vagy SSE

Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.

Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők
MezőTípus
Mezőchoices[].indexTípusinteger
Mezőchoices[].message.contentTípusstring|null
Mezőchoices[].message.tool_callsTípustool_call[]
Mezőchoices[].message.reasoning_contentTípusstring
Mezőchoices[].message.reasoning_detailsTípusobject|array
Mezőchoices[].finish_reasonTípusstring|null
MezőusageTípusobject
Hibák és következő lépések
VálaszFeltételKövetkező lépés
Válasz400 · invalid_request_errorFeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterértékKövetkező lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt.

Álnevek

Modell álnevei

Ailoot qwen3.7-plus, qwen-plus
Ailoot Ultra qwen3.7-plus, qwen/qwen3.7-plus

Metódusútvonalak álnevei

/chat/completions

Kapcsolódó modellazonosítók

qwen/qwen3.7-plus, qwen-plus, qwen3.7-plus, qwen3.7-plus

Ailoot Ultra · Anthropic Messages POST /v1/messages qwen/qwen3.7-plus

qwen/qwen3.7-plus

Alibaba /qwen/qwen3.7-plus
Modell ID-ja
  • qwen3.7-plus
  • qwen/qwen3.7-plus

Kezdő lépések

A Qwen3.7 Plus az Alibaba Qwen modellje szöveges és képi feladatokhoz, szöveges válaszokkal. Közzétett profilja egymillió tokenes kontextust, következtetést, függvényeszközöket és strukturált kimeneti vezérlőket ötvöz asszisztensekhez, valamint dokumentumok vagy vizuális anyagok elemzéséhez.

Elfogadott bemenetek
Szöveg
Eredmények
json · sse

Elérhető az Ailootban · bemenetek és metódusok

Ailoot Ultra · Anthropic Messages POST /v1/messages
Bemenet
text
Kimenet
json, sse
Kimeneti formátum
JSON vagy SSE
MezőTípusKövetelményÉrtékek és korlátokAlapértelmezett
MezőmodelTípusstringKövetelményKötelezőÉrtékek és korlátok
qwen/qwen3.7-plus
Alapértelmezett—
MezőmessagesTípusmessage[]KövetelményKötelezőÉrtékek és korlátokAlapértelmezett—
Mezőmessages[].roleTípusstringKövetelményKötelezőÉrtékek és korlátok
user, assistant
Alapértelmezett—
Mezőmessages[].contentTípusstringKövetelményKötelezőÉrtékek és korlátokAlapértelmezett—
Mezőmax_tokensTípusintegerKövetelményKötelezőÉrtékek és korlátokAlapértelmezett—
MezőstreamTípusbooleanKövetelményOpcionálisÉrtékek és korlátokAlapértelmezettfalse
Bemeneti anyagok kombinációi

Szöveg · UTF-8 szöveg

messages[].content karakterlánc

Metódus paraméterei és életciklusa
ParaméterSzerződés
Paramétercontent_typeSzerződésapplication/json
ParaméterrequiredSzerződésmodel, messages, max_tokens
Paraméteroptional_controlsSzerződésstream
Paramétermaterial_typesSzerződéstext
Paramétertext_file_materialSzerződésOlvassa el a tényleges UTF-8 dokumentumot, és tegye a szövegét a jelzett bemeneti karakterláncba vagy az üzenettartalom karakterláncába.

Életciklus: synchronous_or_streamed

Díjcsomagok

A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.

Gyors mód
Normál díjszabás Ha a gyors mód van kiválasztva
Flex mód
Normál díjszabás Ha a flex mód van kiválasztva
Maximális gondolkodási ráfordítás
Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik

Ailoot-díjak

Árak beállításonként

Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.

BeállításDíjtáblázatKontextustokenek, több mintKontextustokenek, legfeljebbDíj
BeállításTokenenkénti alapárakDíjtáblázatAlapdíjKontextustokenek, több mint—Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításA kéréshossz szerinti 1. ársávDíjtáblázat—Kontextustokenek, több mint0Kontextustokenek, legfeljebb256 000Díj
Bemenet · Bemeneti tokenek $0.00064 / 1K token
Kimenet · Kimeneti tokenek $0.00256 / 1K token
Bemenet · Gyorsítótár olvasása $0.000128 / 1K token
Bemenet · Írás a gyorsítótárba $0.0008 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token
BeállításA kéréshossz szerinti 2. ársávDíjtáblázat—Kontextustokenek, több mint256 000Kontextustokenek, legfeljebbNincs felső korlátDíj
Bemenet · Bemeneti tokenek $0.00192 / 1K token
Kimenet · Kimeneti tokenek $0.00768 / 1K token
Bemenet · Gyorsítótár olvasása $0.000384 / 1K token
Bemenet · Írás a gyorsítótárba $0.0024 / 1K token
Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token

Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →

Példakérések

Ailoot Ultra · Anthropic Messages

Teljes, minimális JSON-törzscurl · használd a saját UTF-8-dokumentumodatPython · mentsd el a teljes eredményt
{
  "model": "qwen/qwen3.7-plus",
  "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.7-plus', '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.7-plus', '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))

Eredmények fogadása és mentése

Ailoot Ultra · Anthropic Messages

JSON vagy SSE

Őrizzen meg minden elkészült eredményt

Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.

Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.

Ha az eredeti választ ellenőrizni kell

Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.

Válaszmezők
MezőTípus
MezőidTípusstring
MezőmodelTípusstring
Mezőcontent[]Típustext|thinking|tool_use|other content block
Mezőstop_reasonTípusstring|null
MezőusageTípusobject
Hibák és következő lépések
VálaszFeltételKövetkező lépés
Válasz400 · invalid_request_errorFeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterértékKövetkező lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt.

Álnevek

Modell álnevei

Ailoot qwen3.7-plus, qwen-plus
Ailoot Ultra qwen3.7-plus, qwen/qwen3.7-plus

Metódusútvonalak álnevei

/chat/completions

Kapcsolódó modellazonosítók

qwen/qwen3.7-plus, qwen-plus, qwen3.7-plus, qwen3.7-plus

FAQ · Qwen: Qwen3.7 Plus
Milyen bemenetek és eredmények érhetők el?

POST /v1/messages · qwen3.7-plus: text, image → text

POST /v1/responses · qwen3.7-plus: text, image → text

POST /v1/chat/completions · qwen3.7-plus: text, image → text

POST /v1/chat/completions · qwen3.7-plus: text → text

POST /v1/messages · qwen3.7-plus: text → json, sse

POST /v1/messages · qwen-plus: text, image → text

POST /v1/responses · qwen-plus: text, image → text

POST /v1/chat/completions · qwen-plus: text, image → text

POST /v1/chat/completions · qwen/qwen3.7-plus: text → text

POST /v1/messages · qwen/qwen3.7-plus: text → json, sse

Mely mezőket használja a kérés?

POST /v1/messages · qwen3.7-plus: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · qwen3.7-plus: model, input, instructions, stream

POST /v1/chat/completions · qwen3.7-plus: model, messages, stream

POST /v1/chat/completions · qwen3.7-plus: model, messages, stream

POST /v1/messages · qwen3.7-plus: model, messages, max_tokens, stream

POST /v1/messages · qwen-plus: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · qwen-plus: model, input, instructions, stream

POST /v1/chat/completions · qwen-plus: model, messages, stream

POST /v1/chat/completions · qwen/qwen3.7-plus: model, messages, stream, modalities, provider

POST /v1/messages · qwen/qwen3.7-plus: model, messages, max_tokens, stream

Milyen korlátok érvényesek?

POST /v1/messages · qwen3.7-plus: ctx: 991808; max_out: 131072; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · qwen3.7-plus: ctx: 991808; max_out: 131072

POST /v1/chat/completions · qwen3.7-plus: ctx: 991808; max_out: 131072; messages.min_items: 1

POST /v1/chat/completions · qwen3.7-plus: messages.min_items: 1

POST /v1/messages · qwen-plus: ctx: 991808; max_out: 131072; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · qwen-plus: ctx: 991808; max_out: 131072

POST /v1/chat/completions · qwen-plus: ctx: 991808; max_out: 131072; messages.min_items: 1

POST /v1/chat/completions · qwen/qwen3.7-plus: messages.min_items: 1

További részletek

Csatlakoztassa az Ailootot a Claude Code-hoz, OpenCode-hoz, Hermeshez vagy saját alkalmazásához.

A vállalat és projektportfóliója

A vállalat és projektportfóliója: ügyfelek milliói; havi értékesítés milliárdos nagyságrendben.

Vásároljon tokeneket kedvezménnyel.

Előfizetési kedvezmény rendszeres munkához. Promókódok — akár 50% tokenvásárlási kedvezmény.

Előfizetés
Válasszon kedvezményes tarifát a rendszeres kéréseihez.
Promókód akár 50%-ig
Vásárláskor adja meg a kódot. Az ár az érvényes akció szerint újraszámolódik.
Költségek az előzményekben
Minden kéréshez megmarad a modell, a tokenek és az összeg.

Előfizetés kiválasztása · Modellárak megtekintése

Csatlakoztassa az API-t az értékesített termékéhez.

SaaS, alkalmazások és botok — az Ailoot ajánlati feltételei és licencszerződése alapján. Viszonteladáshoz kérjen viszonteladói licencet.

Kereskedelmi alkalmazás
Építsen szöveg-, kép-, videó- és hanggenerálást szolgáltatása fizetős funkcióiba.
Viszonteladói licenc
Küldje el a projekt leírását és a hozzáférés módját. Kérjen írásos használati és viszonteladási feltételeket.
Dokumentumok a weboldalon
Az ajánlati feltételek, licencszerződés és adatkezelési szabályzat már a csatlakoztatás előtt elérhető.

Viszonteladói licenc kérése · Ajánlati feltételek és licencszerződés