modely

Google: Gemini 3.8 Flash

Markdown · JSON

Google: Gemini 3.8 Flash

Gemini 3.8 Flash je multimodálny pracovný model Google pre dlhodobú softvérovú prácu, agentov a zložité znalostné úlohy. Prijíma text, obrázky, zvuk, video a PDF, vracia text a ponúka uvažovanie low, medium alebo high s nástrojmi a štruktúrovaným výstupom. Dokumentované vstupné/výstupné limity sú 1 048 576/65 536 tokenov.

O modeli

Tento opis pokrýva možnosti modelu. Dostupné vstupy, výstupy a voľby v Ailoot sú uvedené nižšie pre vybranú metódu.

Gemini 3.8 Flash je model Google s textovým výstupom pre dlhodobú softvérovú prácu, viackrokových agentov a zložité znalostné postupy. Nadväzuje na Gemini 3.7 Flash so zlepšeniami softvérového inžinierstva a agentnej práce so znalosťami. Prijíma text, obrázky, zvuk, video a PDF, takže úloha môže spájať písomný cieľ so skutočným materiálom potrebným na jeho vyriešenie. Užitočným výsledkom je zmena kódu, vysvetlená analýza, písomná odpoveď alebo štruktúrovaný záznam.

Pri programátorskom zadaní dodajte požiadavku, relevantné súbory, pozorované správanie a obmedzenia, ktoré treba zachovať. Snímka obrazovky môže určiť zamýšľané rozhranie, zatiaľ čo protokoly alebo reprodukujúci príklad ukážu zlyhanie. Pri ladení žiadajte, aby model sledoval nesúlad medzi viditeľným stavom formulára a jeho uloženou hodnotou, určil zodpovednú cestu v kóde a navrhol cielenú opravu. Zamýšľaný konečný artefakt zachovajte jasný, aby aj dlhšia postupnosť skúmania a použitia nástrojov mala konkrétnu podmienku dokončenia.

Pri dlhšie trvajúcej práci používajte menšie kroky uvažovania, iteratívne volania nástrojov a kontroly priebežných výsledkov. Úrovne premýšľania low, medium a high riadia množstvo uvažovania; dokumentovaná predvolená voľba je medium. Low vyhovuje rýchlemu návrhu alebo ohraničenej analýze, zatiaľ čo high je určené na náročnú matematiku, programovanie alebo viackrokové úlohy. Gemini 3.8 Flash nepodporuje úroveň premýšľania minimal. Dlhodobé ladenie a jednoduchá extrakcia polí preto potrebujú odlišné voľby uvažovania, nie rovnaké nastavenie pre každú požiadavku.

Dokumentované nástroje zahŕňajú volanie funkcií, vykonávanie kódu, vyhľadávanie súborov, podloženie vyhľadávaním, podloženie cez Google Maps a kontext URL; Computer Use je uvedené ako predbežná funkcia. Štruktúrované výstupy definujú strojovo čitateľný výsledok. Funkcie majú mať jasný účel a definíciu parametrov: model môže požiadať o funkciu, zatiaľ čo prepojená aplikácia operáciu vykoná a vráti jej výsledok. Naprieč konverzačnými výmenami zachovajte identity funkcií a skutočne vrátený materiál. Užitočná konečná odpoveď vysvetľuje, ktoré dôkazy podporujú navrhnutú opravu alebo získanú hodnotu.

Migračný sprievodca 3.8 používa ovládanie úrovne premýšľania namiesto staršej konfigurácie limitu uvažovania a odporúča odstrániť zastarané parametre vzorkovania a vopred vyplnené správy modelu. Vyžaduje aj zachovanie podpisov myšlienok v príslušnom bezstavovom postupe a priradenie odpovedí funkcií k ich volaniam podľa identity a názvu. Tieto podrobnosti sú dôležité pri pokračovaní viackrokovej úlohy: ďalšia správa potrebuje skutočný predchádzajúci kontext, nie prepísaný opis strácajúci výsledok nástroja alebo podpis. V novej používateľskej správe ponechajte otázku a požadovaný výstup explicitné.

Pri multimodálnej znalostnej práci určite relevantné strany dokumentu, graf, zvukový interval alebo udalosť vo videu a uveďte ich príspevok k odpovedi. Porovnanie dokumentov môže požadovať tabuľku rozdielov so zdrojovými pasážami; otázka ku grafu môže žiadať viditeľné hodnoty a záver, ktorý podporujú. Analýza videa môže žiadať opis udalostí odôvodňujúcich zistenie. Model z týchto vstupov vracia text. Generované obrázky, reč a živá zvuková interakcia patria samostatným profilom modelov.

Limity Gemini API sú 1 048 576 vstupných tokenov a 65 536 výstupných tokenov, čo zodpovedá kontextu natívneho modelu najviac 1M a textovému výstupu 64K. Pokyny, história konverzácie a dodané médiá spotrebúvajú vstupný kontext a uvažovanie alebo dlhý konečný artefakt sa musia zmestiť do dokumentovaného výstupného limitu. Google pre tento profil výrobcu uvádza aj vyrovnávaciu pamäť, dávkové spracovanie, Flex a Priority spracovanie. Pri nezávislých položkách zachovajte stabilný identifikátor položky a explicitný formát výstupu, aby každý výsledok zostal spojený so zdrojom.

Možné obmedzenia zahŕňajú halucinácie, občasnú pomalosť alebo vypršanie časového limitu a vyššiu spotrebu tokenov pri vyššom úsilí. Časová hranica znalostí je marec 2026, pričom niektoré oblasti sú stále obmedzené na január 2025. Keď úloha závisí od neskorších informácií, dodajte aktuálne podklady alebo použite dokumentované nástroje podloženia. Zdrojové citácie, výpočty a navrhnutý kód skontrolujte podľa skutočných vstupov a výsledkov vykonania. Užitočný konečný artefakt má odlíšiť podložené zistenie od nevyriešenej otázky bez predpokladu, že plynulá odpoveď dokazuje požadovaný výsledok.

Praktická úloha

Praktická úloha

Technický príklad v angličtine

Diagnose an unsaved form value

Review this form flow: the input displays draft.name; typing updates draft.name; Save sends original.name; after reload the old name reappears. Explain the mismatch and propose a minimal correction in framework-neutral pseudocode. Include a regression scenario that types a new name, saves, reloads, and checks the stored value. Do not claim any browser action occurred.

Očakávaný výsledok

A cause explanation, corrected Save pseudocode and an end-to-end regression scenario.

Overenie výsledku

The submitted value comes from the edited draft, and the reload check verifies persistence rather than just the visible input.
Ailoot · Anthropic Messages POST /v1/messages gemini-3.8-flash

gemini-3.8-flash

Google /gemini-3.8-flash

Úvod

Gemini 3.8 Flash je multimodálny pracovný model Google pre dlhodobú softvérovú prácu, agentov a zložité znalostné úlohy. Prijíma text, obrázky, zvuk, video a PDF, vracia text a ponúka uvažovanie low, medium alebo high s nástrojmi a štruktúrovaným výstupom. Dokumentované vstupné/výstupné limity sú 1 048 576/65 536 tokenov.

Povolené vstupy
Text · Obrázky
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · Anthropic Messages POST /v1/messages
Vstup
text, image
Výstup
text
Kontext
1 048 576 tokens
Maximálny výstup
65 536 tokens
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
gemini-3.8-flash
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstring|content_block[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PolesystemTypstring|content_block[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limity
Minimum: 1
Limit sa vzťahuje na: presná horná hranica zvoleného modelu/karty
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Polestop_sequencesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PoletoolsTyptool[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poletools[].nameTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: poskytnutý nástroj
Predvolené—
Poletools[].descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].input_schemaTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypobjectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Polethinking.typeTypstringPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Polethinking.budget_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poleoutput_config.effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolemetadataTypobjectPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polecache_controlTypobjectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content alebo blok type=text

Text + obrázok

{type:image,source:{type:base64,media_type,data}} alebo zdroj s type=url

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext, image
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Vstup
0,00075 USD / 1K
Výstup
0,00375 USD / 1K
Čítanie cache
0,000075 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPoplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0.003 / 1K tokenov
Výstup · Výstupné tokeny $0.015 / 1K tokenov
Vstup · Čítanie cache $0.0003 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0.003 / 1K tokenov
Výstup · Výstupné tokeny $0.015 / 1K tokenov
Vstup · Čítanie cache $0.0003 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · Anthropic Messages

Príklad textuVstup, obrázokPython SDKNode.js SDKStreamovanie v jazyku Python
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": "gemini-3.8-flash", "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": "gemini-3.8-flash", "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="gemini-3.8-flash",
    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: "gemini-3.8-flash",
  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='gemini-3.8-flash',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")

Prijať a uložiť výsledky

Ailoot · Anthropic Messages

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot gemini-3.8-flash
Ailoot Ultra gemini-3.8-flash, google/gemini-3.8-flash, ~google/gemini-flash-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

google/gemini-3.8-flash, ~google/gemini-flash-latest, gemini-3.8-flash, gemini-3.8-flash

Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent gemini-3.8-flash

gemini-3.8-flash

Google /gemini-3.8-flash

Úvod

Gemini 3.8 Flash je multimodálny pracovný model Google pre dlhodobú softvérovú prácu, agentov a zložité znalostné úlohy. Prijíma text, obrázky, zvuk, video a PDF, vracia text a ponúka uvažovanie low, medium alebo high s nástrojmi a štruktúrovaným výstupom. Dokumentované vstupné/výstupné limity sú 1 048 576/65 536 tokenov.

Povolené vstupy
Text · Obrázky
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent
Vstup
text, image
Výstup
text
Výstupný formát
json alebo podporované streamovanie
PoleTypPožiadavkaHodnoty a limityPredvolené
Polepath.modelTypstringPožiadavkaPovinnéHodnoty a limity
gemini-3.8-flash
Predvolené—
PolecontentsTypcontent[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polecontents[].roleTypstringPožiadavkaVoliteľnéHodnoty a limity
user, model
Predvolené—
Polecontents[].partsTyppart[]PožiadavkaPovinnéHodnoty a limityPredvolené—
PolesystemInstructionTypcontentPožiadavkaVoliteľnéHodnoty a limityPredvolené—
PolegenerationConfig.maxOutputTokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Model-specific
Predvolené—
PolegenerationConfig.temperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolegenerationConfig.topPTypnumberPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolegenerationConfig.topKTypintegerPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolegenerationConfig.stopSequencesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolegenerationConfig.thinkingConfig.includeThoughtsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolegenerationConfig.thinkingConfig.thinkingBudgetTypintegerPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poletools[].functionDeclarationsTypfunction_declaration[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PoletoolConfig.functionCallingConfig.modeTypstringPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolesafetySettingsTypobject[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolesessionIdTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

contents[].parts[].text

Text + obrázok

parts[].inlineData={mimeType,data}

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametermaterial_typesŠpecifikáciatext, image
ParameterrequiredŠpecifikáciacontents
Parameteroptional_controlsŠpecifikácianull
Parametercontent_typeŠpecifikáciaapplication/json
Parametertext_file_materialŠpecifikáciaskutočný obsah UTF-8 vložený ako text; ID súborov a URLs potrebujú samostatnú presne určenú podporu

Životný cyklus: exact retained published method

Štruktúry metód a ID sú presné; možnosti dodávateľa sa posudzujú oddelene od prijatia požiadavky.

Cenník

Sadzby metód Ailoot

Ailoot Gemini generateContentPOST /v1beta/models/{model}:generateContent
Vstup
0,00075 USD / 1K
Výstup
0,00375 USD / 1K
Čítanie cache
0,000075 USD / 1K

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Podrobnosti referenčnej tarify

Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.

Referenčné sadzobníky modelu

Ceny podľa konfigurácie

Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.

KonfiguráciaSadzobníkPoplatok
KonfiguráciaOpenAI Chat · Základné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0.003 / 1K tokenov
Výstup · Výstupné tokeny $0.015 / 1K tokenov
Vstup · Čítanie cache $0.0003 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov
KonfiguráciaAnthropic Messages · Základné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0.003 / 1K tokenov
Výstup · Výstupné tokeny $0.015 / 1K tokenov
Vstup · Čítanie cache $0.0003 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Príklady požiadaviek

Ailoot · Gemini generateContent

Príklad textuVstup, obrázokPython SDKNode.js SDKStreamovanie v jazyku Python
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('{"contents": []}')
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["contents"]=[{"role":"user","parts":[{"text":"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/v1beta/models/gemini-3.8-flash:generateContent \
  -H "x-goog-api-key: $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('{"contents": [{"role": "user", "parts": [{"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["contents"][0]["parts"].append({"inlineData":{"mimeType":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/v1beta/models/gemini-3.8-flash:generateContent \
  -H "x-goog-api-key: $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 google import genai
from google.genai import types
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = genai.Client(
    api_key=os.environ["AILOOT_API_KEY"],
    http_options=types.HttpOptions(base_url="https://api.ailoot.ai"),
)
resp = client.models.generate_content(model="gemini-3.8-flash", contents="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_json_dict())
import { GoogleGenAI } from "@google/genai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const ai = new GoogleGenAI({ apiKey: process.env.AILOOT_API_KEY, httpOptions: { baseUrl: "https://api.ailoot.ai" } });
const resp = await ai.models.generateContent({ model: "gemini-3.8-flash", contents: "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 google import genai
from google.genai import types
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=genai.Client(api_key=os.environ["AILOOT_API_KEY"],http_options=types.HttpOptions(base_url="https://api.ailoot.ai"))
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))

count=0
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
    for chunk in client.models.generate_content_stream(model='gemini-3.8-flash',contents="Explain observations and hypotheses in three sentences."):
        payload=chunk.to_json_dict()
        log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
        save_result(payload,"stream-chunk-"+str(count))
        count+=1

Prijať a uložiť výsledky

Ailoot · Gemini generateContent

json alebo podporované streamovanie

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetkých kandidátov a časti vrátane volaní funkcií, podpisov uvažovania a údajov o spotrebe; časti prúdu zostavujte v správnom poradí.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleresponseIdTypstring
PolemodelVersionTypstring
Polecandidates[].content.parts[]Typtext|inlineData|functionCall|other part
Polecandidates[].finishReasonTypstring
PoleusageMetadataTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot gemini-3.8-flash
Ailoot Ultra gemini-3.8-flash, google/gemini-3.8-flash, ~google/gemini-flash-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

google/gemini-3.8-flash, ~google/gemini-flash-latest, gemini-3.8-flash, gemini-3.8-flash

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions gemini-3.8-flash

gemini-3.8-flash

Google /gemini-3.8-flash
ID modelu
  • gemini-3.8-flash
  • google/gemini-3.8-flash
  • ~google/gemini-flash-latest

Úvod

Gemini 3.8 Flash je multimodálny pracovný model Google pre dlhodobú softvérovú prácu, agentov a zložité znalostné úlohy. Prijíma text, obrázky, zvuk, video a PDF, vracia text a ponúka uvažovanie low, medium alebo high s nástrojmi a štruktúrovaným výstupom. Dokumentované vstupné/výstupné limity sú 1 048 576/65 536 tokenov.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
gemini-3.8-flash
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Model-specific
Predvolené—
Polemessages[].contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Textová konverzácia
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages
Parametermaterial_typesŠpecifikáciatext
ParametermessagesŠpecifikáciapole správ so štruktúrou role/content
Parameterfile_materialŠpecifikáciaskutočný dokument UTF-8 vložený ako doslovný text; ID súboru sa neodvodzuje
Parameteroptional_controlsŠpecifikáciastream
Parametercontrol_scopeŠpecifikáciaTextová konverzácia; stream je logická hodnota a predvolene má hodnotu false.
Parameteroutput_modalitiesŠpecifikáciatext
Parameterhosted_operationsŠpecifikáciafalse
Parametermultimodal_input_bindingŠpecifikácianull

Aliasy metódy: /chat/completions

Životný cyklus: synchronous_or_streamed

Pošlite presné ID modelu spolu s messages.

Dĺžka kontextu nie je horná hranica výstupu.

Textový súbor môže poskytnúť doslovný text; obrazové a zvukové vstupy a vstupy so súborovými objektmi potrebujú presné naviazanie.

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Neuvedené Keď je zvolený rýchly režim
Režim Flex
Neuvedené Keď je zvolený režim flex
Maximálna úroveň uvažovania
Neuvedené Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Ceny explicitnej cache
Nie je zapnuté Keď sa požaduje explicitná cache

Sadzby Ailoot

Ceny podľa konfigurácie

KonfiguráciaSadzobníkPoplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0.003 / 1K tokenov
Výstup · Výstupné tokeny $0.015 / 1K tokenov
Vstup · Čítanie cache $0.0003 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

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":"gemini-3.8-flash","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="gemini-3.8-flash", 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"))

Prijať a uložiť výsledky

Ailoot Ultra · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot gemini-3.8-flash
Ailoot Ultra gemini-3.8-flash, google/gemini-3.8-flash, ~google/gemini-flash-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

google/gemini-3.8-flash, ~google/gemini-flash-latest, gemini-3.8-flash, gemini-3.8-flash

Ailoot Ultra · Anthropic Messages POST /v1/messages gemini-3.8-flash

gemini-3.8-flash

Google /gemini-3.8-flash
ID modelu
  • gemini-3.8-flash
  • google/gemini-3.8-flash
  • ~google/gemini-flash-latest

Úvod

Gemini 3.8 Flash je multimodálny pracovný model Google pre dlhodobú softvérovú prácu, agentov a zložité znalostné úlohy. Prijíma text, obrázky, zvuk, video a PDF, vracia text a ponúka uvažovanie low, medium alebo high s nástrojmi a štruktúrovaným výstupom. Dokumentované vstupné/výstupné limity sú 1 048 576/65 536 tokenov.

Povolené vstupy
Text
Výsledky
json · sse

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
json, sse
Výstupný formát
JSON alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
gemini-3.8-flash
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limityPredvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstringPožiadavkaPovinnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limityPredvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Kombinácie vstupných podkladov

Text · Text UTF-8

reťazec messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikáciastream
Parametermaterial_typesŠpecifikáciatext
Parametertext_file_materialŠpecifikáciaPrečítajte skutočný dokument UTF-8 a vložte jeho text do uvedeného vstupného reťazca alebo reťazca obsahu správy.

Životný cyklus: synchronous_or_streamed

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Neuvedené Keď je zvolený rýchly režim
Režim Flex
Neuvedené Keď je zvolený režim flex
Maximálna úroveň uvažovania
Neuvedené Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Ceny explicitnej cache
Nie je zapnuté Keď sa požaduje explicitná cache

Sadzby Ailoot

Ceny podľa konfigurácie

KonfiguráciaSadzobníkPoplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0.003 / 1K tokenov
Výstup · Výstupné tokeny $0.015 / 1K tokenov
Vstup · Čítanie cache $0.0003 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · Anthropic Messages

Úplné minimálne telo požiadavky vo formáte JSONcurl · použite svoj dokument UTF-8Python · uložte úplný výsledok
{
  "model": "gemini-3.8-flash",
  "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': 'gemini-3.8-flash', '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': 'gemini-3.8-flash', '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))

Prijať a uložiť výsledky

Ailoot Ultra · Anthropic Messages

JSON alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot gemini-3.8-flash
Ailoot Ultra gemini-3.8-flash, google/gemini-3.8-flash, ~google/gemini-flash-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

google/gemini-3.8-flash, ~google/gemini-flash-latest, gemini-3.8-flash, gemini-3.8-flash

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-3.8-flash

google/gemini-3.8-flash

Google /google/gemini-3.8-flash
ID modelu
  • gemini-3.8-flash
  • google/gemini-3.8-flash
  • ~google/gemini-flash-latest

Úvod

Gemini 3.8 Flash je multimodálny pracovný model Google pre dlhodobú softvérovú prácu, agentov a zložité znalostné úlohy. Prijíma text, obrázky, zvuk, video a PDF, vracia text a ponúka uvažovanie low, medium alebo high s nástrojmi a štruktúrovaným výstupom. Dokumentované vstupné/výstupné limity sú 1 048 576/65 536 tokenov.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Výstupný formát
json alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
google/gemini-3.8-flash
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Príklady: system, user, assistant, tool, function
Podmienky: Tieto roly sú výslovne zastúpené typmi kompatibility v zdrojovom kóde; presný súbor rolí zostáva závislý od modelu.
Model-specific
Predvolené—
Polemessages[].contentTypstring|content_part[]|nullPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_callsTyptool_call[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: role=tool; použite skutočne vrátené ID
Predvolené—
Polemessages[].nameTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].reasoning_contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Posielajte späť skutočne vrátené uvažovanie, ak ho tento model používa
Predvolené—
Polemessages[].reasoning_detailsTypobject|arrayPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Polemax_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Model-specific
Predvolené—
Polemax_completion_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Model-specific
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Polestream_options.include_usageTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolestopTypstring|string[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PoletoolsTypfunction_tool[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poletools[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
function
Model-specific
Predvolené—
Poletools[].function.nameTypstringPožiadavkaPovinnéHodnoty a limity
Platí, keď: poskytnutý nástroj typu funkcia
Predvolené—
Poletools[].function.descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].function.parametersTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poleresponse_formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Polereasoning_effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolereasoningTypobjectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limity
Pole kompatibility
Predvolené—
PolefunctionsTypfunction[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Polefunction_callTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolemodalitiesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
text
Predvolené—
PoleproviderTypobjectPožiadavkaVoliteľnéHodnoty a limity
Podmienky: provider.options sa na tejto textovej trase Ultra odmieta
Predvolené—
Polecache_control.ttlTypstringPožiadavkaVoliteľnéHodnoty a limity
Podmienky: Hodnota 1h sa v skutočne používaných poliach cache promptov odmieta
Predvolené—
Kombinácie vstupných podkladov

Text · Text UTF8

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages
Parametermaterial_typesŠpecifikáciatext
ParametermessagesŠpecifikáciapole správ so štruktúrou role/content
Parameterfile_materialŠpecifikáciaskutočný dokument UTF-8 vložený ako doslovný text; ID súboru sa neodvodzuje
Parameteroptional_controlsŠpecifikáciastream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeŠpecifikáciazávisí od modelu; používateľské nástroje typu funkcia sa líšia od nástrojov prevádzkovaných službou
Parameteroutput_modalitiesŠpecifikáciatext
Parameterhosted_operationsŠpecifikáciafalse
Parametermultimodal_input_bindingŠpecifikácianull

Životný cyklus: synchronous_or_streamed

Pošlite presné ID modelu spolu s messages.

Dĺžka kontextu nie je horná hranica výstupu.

Textový súbor môže poskytnúť doslovný text; obrazové a zvukové vstupy a vstupy so súborovými objektmi potrebujú presné naviazanie.

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Neuvedené Keď je zvolený rýchly režim
Režim Flex
Neuvedené Keď je zvolený režim flex
Maximálna úroveň uvažovania
Neuvedené Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Ceny explicitnej cache
Nie je zapnuté Keď sa požaduje explicitná cache

Sadzby Ailoot

Ceny podľa konfigurácie

KonfiguráciaSadzobníkPoplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0.003 / 1K tokenov
Výstup · Výstupné tokeny $0.015 / 1K tokenov
Vstup · Čítanie cache $0.0003 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · OpenAI Chat

curlPython SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-3.8-flash", "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='google/gemini-3.8-flash',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='google/gemini-3.8-flash',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")

Prijať a uložiť výsledky

Ailoot Ultra · OpenAI Chat

json alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte každý variant odpovede a jeho obsah, volania nástrojov a uvažovanie. V SSE zostavujte čiastkové zmeny podľa indexu variantu/nástroja a zachovajte konečný dôvod ukončenia aj údaje o spotrebe.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot gemini-3.8-flash
Ailoot Ultra gemini-3.8-flash, google/gemini-3.8-flash, ~google/gemini-flash-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

google/gemini-3.8-flash, ~google/gemini-flash-latest, gemini-3.8-flash, gemini-3.8-flash

Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-3.8-flash

google/gemini-3.8-flash

Google /google/gemini-3.8-flash
ID modelu
  • gemini-3.8-flash
  • google/gemini-3.8-flash
  • ~google/gemini-flash-latest

Úvod

Gemini 3.8 Flash je multimodálny pracovný model Google pre dlhodobú softvérovú prácu, agentov a zložité znalostné úlohy. Prijíma text, obrázky, zvuk, video a PDF, vracia text a ponúka uvažovanie low, medium alebo high s nástrojmi a štruktúrovaným výstupom. Dokumentované vstupné/výstupné limity sú 1 048 576/65 536 tokenov.

Povolené vstupy
Text
Výsledky
json · sse

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
json, sse
Výstupný formát
JSON alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
google/gemini-3.8-flash
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limityPredvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstringPožiadavkaPovinnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limityPredvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Kombinácie vstupných podkladov

Text · Text UTF-8

reťazec messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikáciastream
Parametermaterial_typesŠpecifikáciatext
Parametertext_file_materialŠpecifikáciaPrečítajte skutočný dokument UTF-8 a vložte jeho text do uvedeného vstupného reťazca alebo reťazca obsahu správy.

Životný cyklus: synchronous_or_streamed

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Neuvedené Keď je zvolený rýchly režim
Režim Flex
Neuvedené Keď je zvolený režim flex
Maximálna úroveň uvažovania
Neuvedené Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Ceny explicitnej cache
Nie je zapnuté Keď sa požaduje explicitná cache

Sadzby Ailoot

Ceny podľa konfigurácie

KonfiguráciaSadzobníkPoplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0.003 / 1K tokenov
Výstup · Výstupné tokeny $0.015 / 1K tokenov
Vstup · Čítanie cache $0.0003 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · Anthropic Messages

Úplné minimálne telo požiadavky vo formáte JSONcurl · použite svoj dokument UTF-8Python · uložte úplný výsledok
{
  "model": "google/gemini-3.8-flash",
  "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': 'google/gemini-3.8-flash', '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': 'google/gemini-3.8-flash', '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))

Prijať a uložiť výsledky

Ailoot Ultra · Anthropic Messages

JSON alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot gemini-3.8-flash
Ailoot Ultra gemini-3.8-flash, google/gemini-3.8-flash, ~google/gemini-flash-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

google/gemini-3.8-flash, ~google/gemini-flash-latest, gemini-3.8-flash, gemini-3.8-flash

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions ~google/gemini-flash-latest

~google/gemini-flash-latest

Google /~google/gemini-flash-latest
ID modelu
  • gemini-3.8-flash
  • google/gemini-3.8-flash
  • ~google/gemini-flash-latest

Úvod

Gemini 3.8 Flash je multimodálny pracovný model Google pre dlhodobú softvérovú prácu, agentov a zložité znalostné úlohy. Prijíma text, obrázky, zvuk, video a PDF, vracia text a ponúka uvažovanie low, medium alebo high s nástrojmi a štruktúrovaným výstupom. Dokumentované vstupné/výstupné limity sú 1 048 576/65 536 tokenov.

Povolené vstupy
Text
Výsledky
Text

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Vstup
text
Výstup
text
Výstupný formát
json or SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
~google/gemini-flash-latest
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limity
Minimálny počet položiek: 1
Predvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
Príklady: system, user, assistant, tool, function
Podmienky: These roles are explicitly represented by Source compatibility types; the exact model role set remains model-specific.
Model-specific
Predvolené—
Polemessages[].contentTypstring|content_part[]|nullPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_callsTyptool_call[]PožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].tool_call_idTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: role=tool; use actual returned ID
Predvolené—
Polemessages[].nameTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Polemessages[].reasoning_contentTypstringPožiadavkaVoliteľnéHodnoty a limity
Platí, keď: Round-trip actual returned reasoning where this model uses it
Predvolené—
Polemessages[].reasoning_detailsTypobject|arrayPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Polemax_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Model-specific
Predvolené—
Polemax_completion_tokensTypintegerPožiadavkaVoliteľnéHodnoty a limity
Minimum: 1
Model-specific
Predvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Polestream_options.include_usageTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PoletemperatureTypnumberPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poletop_pTypnumberPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolestopTypstring|string[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PoletoolsTypfunction_tool[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poletools[].typeTypstringPožiadavkaVoliteľnéHodnoty a limity
function
Model-specific
Predvolené—
Poletools[].function.nameTypstringPožiadavkaPovinnéHodnoty a limity
Platí, keď: function tool supplied
Predvolené—
Poletools[].function.descriptionTypstringPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletools[].function.parametersTypJSON_schemaPožiadavkaVoliteľnéHodnoty a limityPredvolené—
Poletool_choiceTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poleparallel_tool_callsTypbooleanPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poleresponse_formatTypobjectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Polereasoning_effortTypstringPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolereasoningTypobjectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poleservice_tierTypstringPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PoleinstructionsTypstringPožiadavkaVoliteľnéHodnoty a limity
Pole kompatibility
Predvolené—
PolefunctionsTypfunction[]PožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Polefunction_callTypstring|objectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
Poleprompt_cache_optionsTypobjectPožiadavkaVoliteľnéHodnoty a limity
Model-specific
Predvolené—
PolemodalitiesTypstring[]PožiadavkaVoliteľnéHodnoty a limity
text
Predvolené—
PoleproviderTypobjectPožiadavkaVoliteľnéHodnoty a limity
Podmienky: provider.options is rejected on this Ultra text route
Predvolené—
Polecache_control.ttlTypstringPožiadavkaVoliteľnéHodnoty a limity
Podmienky: 1h is rejected in actual prompt-cache locations
Predvolené—
Kombinácie vstupných podkladov

Text · UTF8 text

messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages
Parametermaterial_typesŠpecifikáciatext
ParametermessagesŠpecifikáciamessage array with role/content shape
Parameterfile_materialŠpecifikáciaactual UTF-8 document inserted as literal text; no file ID inferred
Parameteroptional_controlsŠpecifikáciastream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeŠpecifikáciamodel-specific; user function tools differ from hosted tools
Parameteroutput_modalitiesŠpecifikáciatext
Parameterhosted_operationsŠpecifikáciafalse
Parametermultimodal_input_bindingŠpecifikácianull

Životný cyklus: synchronous_or_streamed

Send exact model ID with messages.

Context length is not an output cap.

A text file may supply literal text; image/audio/file-object inputs need exact binding.

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Neuvedené Keď je zvolený rýchly režim
Režim Flex
Neuvedené Keď je zvolený režim flex
Maximálna úroveň uvažovania
Neuvedené Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Ceny explicitnej cache
Nie je zapnuté Keď sa požaduje explicitná cache

Sadzby Ailoot

Ceny podľa konfigurácie

KonfiguráciaSadzobníkPoplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0.003 / 1K tokenov
Výstup · Výstupné tokeny $0.015 / 1K tokenov
Vstup · Čítanie cache $0.0003 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · OpenAI Chat

curlPython SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "~google/gemini-flash-latest", "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='~google/gemini-flash-latest',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='~google/gemini-flash-latest',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")

Prijať a uložiť výsledky

Ailoot Ultra · OpenAI Chat

json or SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Keep every choice and its content/tool calls/reasoning. In SSE assemble deltas by choice/tool index, retain the final finish reason and usage.

Ak treba overiť pôvodnú odpoveď

Keep request/response IDs and headers. No generic text job retrieval URL is supplied.

Polia odpovede
PoleTyp
Polechoices[].indexTypinteger
Polechoices[].message.contentTypstring|null
Polechoices[].message.tool_callsTyptool_call[]
Polechoices[].message.reasoning_contentTypstring
Polechoices[].message.reasoning_detailsTypobject|array
Polechoices[].finish_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaInvalid required fields, material representation or parameter valueĎalší krokCorrect the indicated fields before a new creation request.

Aliasy

Aliasy modelov

Ailoot gemini-3.8-flash
Ailoot Ultra gemini-3.8-flash, google/gemini-3.8-flash, ~google/gemini-flash-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

google/gemini-3.8-flash, ~google/gemini-flash-latest, gemini-3.8-flash, gemini-3.8-flash

Ailoot Ultra · Anthropic Messages POST /v1/messages ~google/gemini-flash-latest

~google/gemini-flash-latest

Google /~google/gemini-flash-latest
ID modelu
  • gemini-3.8-flash
  • google/gemini-3.8-flash
  • ~google/gemini-flash-latest

Úvod

Gemini 3.8 Flash je multimodálny pracovný model Google pre dlhodobú softvérovú prácu, agentov a zložité znalostné úlohy. Prijíma text, obrázky, zvuk, video a PDF, vracia text a ponúka uvažovanie low, medium alebo high s nástrojmi a štruktúrovaným výstupom. Dokumentované vstupné/výstupné limity sú 1 048 576/65 536 tokenov.

Povolené vstupy
Text
Výsledky
json · sse

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
json, sse
Výstupný formát
JSON or SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
~google/gemini-flash-latest
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limityPredvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstringPožiadavkaPovinnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limityPredvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Kombinácie vstupných podkladov

Text · UTF-8 text

messages[].content string

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikáciastream
Parametermaterial_typesŠpecifikáciatext
Parametertext_file_materialŠpecifikáciaRead the actual UTF-8 document and put its text in the indicated input or message content string.

Životný cyklus: synchronous_or_streamed

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Neuvedené Keď je zvolený rýchly režim
Režim Flex
Neuvedené Keď je zvolený režim flex
Maximálna úroveň uvažovania
Neuvedené Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Ceny explicitnej cache
Nie je zapnuté Keď sa požaduje explicitná cache

Sadzby Ailoot

Ceny podľa konfigurácie

KonfiguráciaSadzobníkPoplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0.003 / 1K tokenov
Výstup · Výstupné tokeny $0.015 / 1K tokenov
Vstup · Čítanie cache $0.0003 / 1K tokenov
Vstup · Zápis do cache — / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · Anthropic Messages

Úplné minimálne telo požiadavky vo formáte JSONcurl · použite svoj dokument UTF-8Python · uložte úplný výsledok
{
  "model": "~google/gemini-flash-latest",
  "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': '~google/gemini-flash-latest', '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': '~google/gemini-flash-latest', '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))

Prijať a uložiť výsledky

Ailoot Ultra · Anthropic Messages

JSON or SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Keep all content blocks, thinking signatures and actual tool-use IDs. Assemble all SSE block deltas; a first text block is not the complete output.

Ak treba overiť pôvodnú odpoveď

Keep request/response IDs and headers. No generic text job retrieval URL is supplied.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaInvalid required fields, material representation or parameter valueĎalší krokCorrect the indicated fields before a new creation request.

Aliasy

Aliasy modelov

Ailoot gemini-3.8-flash
Ailoot Ultra gemini-3.8-flash, google/gemini-3.8-flash, ~google/gemini-flash-latest

Aliasy ciest metód

/chat/completions

Súvisiace ID na volanie

google/gemini-3.8-flash, ~google/gemini-flash-latest, gemini-3.8-flash, gemini-3.8-flash

FAQ · Google: Gemini 3.8 Flash
Aké vstupy a výsledky sú dostupné?

POST /v1/messages · gemini-3.8-flash: text, image → text

POST /v1beta/models/{model}:generateContent · gemini-3.8-flash: text, image → text

POST /v1/chat/completions · gemini-3.8-flash: text → text

POST /v1/messages · gemini-3.8-flash: text → json, sse

POST /v1/chat/completions · google/gemini-3.8-flash: text → text

POST /v1/messages · google/gemini-3.8-flash: text → json, sse

POST /v1/chat/completions · ~google/gemini-flash-latest: text → text

POST /v1/messages · ~google/gemini-flash-latest: text → json, sse

Aké polia používa požiadavka?

POST /v1/messages · gemini-3.8-flash: model, messages, system, max_tokens, stream, metadata

POST /v1beta/models/{model}:generateContent · gemini-3.8-flash: contents, systemInstruction, sessionId

POST /v1/chat/completions · gemini-3.8-flash: model, messages, stream

POST /v1/messages · gemini-3.8-flash: model, messages, max_tokens, stream

POST /v1/chat/completions · google/gemini-3.8-flash: model, messages, stream, modalities, provider

POST /v1/messages · google/gemini-3.8-flash: model, messages, max_tokens, stream

POST /v1/chat/completions · ~google/gemini-flash-latest: model, messages, stream, modalities, provider

POST /v1/messages · ~google/gemini-flash-latest: model, messages, max_tokens, stream

Aké limity platia?

POST /v1/messages · gemini-3.8-flash: ctx: 1048576; max_out: 65536; messages.min_items: 1; max_tokens.minimum: 1

POST /v1beta/models/{model}:generateContent · gemini-3.8-flash: contents.min_items: 1

POST /v1/chat/completions · gemini-3.8-flash: messages.min_items: 1

POST /v1/chat/completions · google/gemini-3.8-flash: messages.min_items: 1

POST /v1/chat/completions · ~google/gemini-flash-latest: messages.min_items: 1

Viac podrobností

Pripojte Ailoot k Claude Code, OpenCode, Hermes alebo vlastnej aplikácii.

Spoločnosť a jej portfólio projektov

Spoločnosť a jej portfólio projektov: milióny zákazníkov; mesačné tržby v miliardách.

Nakupujte tokeny so zľavou.

Zľava predplatného na pravidelnú prácu. Promo kódy až 50% na nákup tokenov.

Predplatné
Na pravidelné požiadavky vyberte tarifu so zľavou.
Promo kód až 50%
Pri nákupe zadajte kód. Cena sa prepočíta podľa prebiehajúcej akcie.
Výdavky v histórii
Pri každej požiadavke sa uloží model, tokeny a suma.

Vybrať predplatné · Zobraziť ceny modelov

Pripojte API k produktu, ktorý predávate.

SaaS, aplikácie a boti podľa ponuky a licenčnej zmluvy Ailoot. Na ďalší predaj požiadajte o licenciu predajcu.

Komerčná aplikácia
Začleňte generovanie textu, obrázkov, videa a zvuku do platených funkcií svojej služby.
Licencia pre predajcu
Pošlite popis projektu a spôsob poskytovania prístupu. Vyžiadajte písomné podmienky použitia a ďalšieho predaja.
Dokumenty na webe
Ponuka, licenčná zmluva a zásady spracovania dát sú dostupné pred pripojením.

Požiadať o licenciu predajcu · Ponuka a licenčná zmluva