Google: Gemini 3.1 Pro Preview
A Gemini 3.1 Pro Preview a Google multimodális következtető modellje összetett szoftveres, algoritmikus és tudásfeladatokhoz. Szöveget, képeket, hangot, videót és PDF-et fogad, és szöveget vagy kódot ad vissza, eszközökkel és strukturált kimenettel. A Low, medium és high következtetési szintek vezérlik az erőfeszítést; a high a dokumentált alapérték.
- Ailoot · Anthropic Messages
POST /v1/messagesgemini-3.1-pro-preview - Ailoot · Gemini generateContent
POST /v1beta/models/{model}:generateContentgemini-3.1-pro-preview - Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsgemini-3.1-pro-preview - Ailoot Ultra · Anthropic Messages
POST /v1/messagesgemini-3.1-pro-preview - Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsgoogle/gemini-3.1-pro-preview - Ailoot Ultra · Anthropic Messages
POST /v1/messagesgoogle/gemini-3.1-pro-preview
A modellről
Ez a leírás a modell képességeit ismerteti. Az Ailootban elérhető bemenetek, kimenetek és lehetőségek alább, a kiválasztott metódusnál láthatók.
A Gemini 3.1 Pro Preview a Google gondolkodásközpontú szöveges modellje szoftvermérnöki munkát, algoritmusfejlesztést vagy multimodális bizonyítékok egyesítését igénylő összetett feladatokhoz. A Gemini 3 Pro modellre épül, a pontos eszközhasználatot, a hatékonyabb gondolkodást és a megbízható többlépéses végrehajtást hangsúlyozva. Szöveg, kép, hang, videó és PDF járulhat hozzá írott válaszhoz, kóderedményhez vagy strukturált eredményhez.
Igényes kódolási feladathoz adja meg a célt, a releváns repozitóriumanyagot, a megfigyelt működést és a megőrzendő korlátokat. Teljes kódrepozitóriumok is adhatnak kontextust a feladathoz. Kódszerződés ellenőrzésekor kérje a modelltől annak összehasonlítását, hogyan kezeli két modul a közös adatszerződést, az eltérés azonosítását és célzott javítás javaslatát alátámasztó kódhivatkozásokkal. A hasznos kimenet elkülöníti az elemzést, a javasolt módosítást és a bizonyítékokat a kapcsolódó alkalmazás által végzett validálástól.
A bevezető anyag kódalapú vizuális magyarázatokat és interaktív projekteket mutat be, köztük szöveges feladatleírásból létrehozott animált SVG-kimenetet. Ezek kóderedmények, nem raszteres képgenerálás. Egy egyértelmű feladatleírás meghatározhatja, mit kell elmagyarázni, hogyan működjön a vizuális megjelenítés és milyen adatot reprezentáljon. Ellenőrizze az elkészült kódot és megjelenítést e követelmények alapján. Adatok egyesítését célzó feladathoz adja meg a tényleges forrásokat, és kérjen olyan közös nézetet, amely megőrzi a bennük szereplő kapcsolatokat és megszorításokat.
A dokumentált gondolkodási szintek low, medium és high, a 3.1 Pro Preview esetében high alapértelmezéssel. Ebben a Pro profilban a gondolkodás nem kapcsolható ki teljesen. Körülhatárolt válaszhoz válasszon alacsonyabb ráfordítást, nehéz többlépéses munkához több gondolkodást, miközben elegendő kimeneti keretet hagy a végső anyagnak. Egy alacsony kimeneti korlát megszakíthatja a gondolkodást, mielőtt használható végső válasz születik. A gondolkodási útmutató külön kezeli a gondolatmenet összefoglalóját a teljes belső folyamattól, és elmagyarázza, miért fontos a beszélgetés gondolkodásialáírás-kontextusa.
A konkrét Preview-táblázat függvényhívást, kódvégrehajtást, keresésalapú forráshoz kötést, Maps-alapú forráshoz kötést, URL-kontextust és strukturált kimeneteket sorol fel. A File Search hatókörét az AI Studióra korlátozza. Adja meg a függvények célját és paramétermeghatározását, majd a valódi visszakapott eredményből folytassa. A külön Custom Tools Preview profil az egyéni eszközök és a bash előnyben részesítésére optimalizált; ez külön névvel jelölt fejlesztői végpont, ezért ezt a specializációt nem szabad észrevétlenül minden 3.1 Pro kérés tulajdonságának tekinteni. Válasszon strukturált eredménysémát, ha a feladat kötetlen próza helyett meghatározott rekordokat igényel.
Multimodális elemzéshez azonosítsa a releváns oldalt, vizuális anyagot, felvételi intervallumot vagy videóeseményt. Dokumentumelemzésnél hasonlítson össze egy diagramot az írott specifikációjával, és adjon vissza minden eltérést az azt alátámasztó szövegrésszel. Egy beszélt forrás szöveges átirattal vagy értelmezéssel járulhat hozzá. Őrizze meg a forráshivatkozásokat az ellenőrizendő következtetésekhez, és válassza el a látható vagy kimondott információt a következtetéstől. E profil kimenete továbbra is szöveg, beleértve a kódot; a natív kép- vagy beszédgenerálás nem része a konkrét képességtáblázatának.
A natív 3.1 Pro kártya legfeljebb 1M méretű kontextust és 64K szöveges kimenetet határoz meg, a konkrét Preview API-táblázat pedig 1 048 576 bemeneti és 65 536 kimeneti tokent ad meg. Az utasításokat, beszélgetési előzményeket és médiát számítsa bele a bemeneti keretbe. A gyorsítótárazás és kötegelt feldolgozás dokumentált, a fejlesztői profilnál Flex és Priority lehetőségek is szerepelnek. Több független elemhez határozza meg a szükséges kimenetet, és őrizzen meg minden forrásazonosítót ahelyett, hogy nem kapcsolódó bizonyítékokat egyetlen visszakövethetetlen válaszba vonna össze.
A névvel jelölt Preview-kiadás különbözik a Pro Custom Tools profiljától és a későbbi Flash vagy Pro kiadásoktól. Erősségei az összetett gondolkodáshoz, kódoláshoz és bizonyítékok egyesítéséhez kapcsolódnak; a végső eredményt továbbra is ellenőrizni kell a forrás és a tényleges eszközeredmények alapján. Őrizze meg a feloldatlan kétértelműséget, ha a megadott információ nem támaszt alá határozott következtetést. Hasznos eredmény a feladat által kért, alátámasztott válasz, kód vagy rekord, elegendő bizonyítékkal a gyakorlati korlátok értékeléséhez.
Gyakorlati feladat
Gyakorlati feladat
Technikai példa angolul
Review a cross-module date contract
Review this contract mismatch. Producer emits {due_date: "2026-11-03"}; consumer reads record.dueDate and displays "No date" when missing. Existing stored records use due_date. Propose the smallest compatible correction and tests for both present and absent dates. Preserve the producer field and do not add a second stored field.Várt eredmény
A short mismatch analysis, a focused consumer patch and tests covering the stored field and missing-value behavior.Az eredmény ellenőrzése
Check that the patch reads due_date without changing persisted records or treating an absent date as a valid one.Ailoot · Anthropic Messages POST /v1/messages gemini-3.1-pro-preview
gemini-3.1-pro-previewKezdő lépések
A Gemini 3.1 Pro Preview a Google multimodális következtető modellje összetett szoftveres, algoritmikus és tudásfeladatokhoz. Szöveget, képeket, hangot, videót és PDF-et fogad, és szöveget vagy kódot ad vissza, eszközökkel és strukturált kimenettel. A Low, medium és high következtetési szintek vezérlik az erőfeszítést; a high a dokumentált alapérték.
- Elfogadott bemenetek
- Szöveg · Képek
- Eredmények
- Szöveg
Elérhető az Ailootban · bemenetek és metódusok
Ailoot · Anthropic Messages POST /v1/messages
- Bemenet
text,image- Kimenet
text- Kontextus
- 1 048 576 tokens
- Maximális kimenet
- 65 536 tokens
- Kimeneti formátum
- json vagy SSE
| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
|---|---|---|---|---|
Mezőmodel | Típusstring | KövetelményKötelező | Értékek és korlátok gemini-3.1-pro-preview | Alapértelmezett— |
Mezőmessages | Típusmessage[] | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
Mezőmessages[].role | Típusstring | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
Mezőmessages[].content | Típusstring|content_block[] | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
Mezősystem | Típusstring|content_block[] | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
Mezőmax_tokens | Típusinteger | KövetelményKötelező | Értékek és korlátok Minimum: 1 A korlát erre vonatkozik: a kiválasztott modell/kártya pontos felső korlátja | Alapértelmezett— |
Mezőstream | Típusboolean | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
Mezőtemperature | Típusnumber | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőtop_p | Típusnumber | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőstop_sequences | Típusstring[] | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőtools | Típustool[] | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőtools[].name | Típusstring | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Eszköz megadva | Alapértelmezett— |
Mezőtools[].description | Típusstring | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
Mezőtools[].input_schema | TípusJSON_schema | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
Mezőtool_choice | Típusobject | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőthinking.type | Típusstring | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőthinking.budget_tokens | Típusinteger | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőoutput_config.effort | Típusstring | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőmetadata | Típusobject | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
Mezőcache_control | Típusobject | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Bemeneti anyagok kombinációi
Szöveg · UTF8 szöveg
messages[].content vagy type=text blokk
Szöveg + kép
{type:image,source:{type:base64,media_type,data}} vagy type=url típusú forrás
Metódus paraméterei és életciklusa
| Paraméter | Szerződés |
|---|---|
Paramétermaterial_types | Szerződéstext, image |
Paraméterrequired | Szerződésmodel, messages, max_tokens |
Paraméteroptional_controls | Szerződésnull |
Paramétercontent_type | Szerződésapplication/json |
Paramétertext_file_material | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |
Életciklus: exact retained published method
A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.
Díjcsomagok
Ailoot-metódusok díjai
POST /v1/messages- Bemenet
- 0,002 USD / 1K
- Kimenet
- 0,012 USD / 1K
- Gyorsítótár olvasása
- 0,0002 USD / 1K
A kérés hosszától függő árak · Anthropic Messages
| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
|---|---|---|---|---|---|---|
| A kérés mérete, tokenben(0; 200 000] | Bemenet0,002 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,0002 USD | Írás a gyorsítótárbaAlapdíjtétel: — | Gyorsítótár 5 percAlapdíjtétel: — | Gyorsítótár 1 óraAlapdíjtétel: — |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,018 USD | Gyorsítótár olvasása0,0004 USD | Írás a gyorsítótárbaAlapdíjtétel: — | Gyorsítótár 5 percAlapdíjtétel: — | Gyorsítótár 1 óraAlapdíjtétel: — |
Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.
Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →
A referencia-díjszabás részletei
A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.
Modell referenciatáblázatai
Árak beállításonként
Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.
| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
|---|---|---|---|---|
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token Kimenet · Kimeneti következtetési tokenek $0.024 / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.008 / 1K token Kimenet · Kimeneti tokenek $0.036 / 1K token Bemenet · Gyorsítótár olvasása $0.0008 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token Kimenet · Kimeneti következtetési tokenek $0.024 / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.008 / 1K token Kimenet · Kimeneti tokenek $0.036 / 1K token Bemenet · Gyorsítótár olvasása $0.0008 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
Példakérések
Ailoot · Anthropic Messages
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.1-pro-preview", "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.1-pro-preview", "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.1-pro-preview",
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.1-pro-preview",
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.1-pro-preview',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_message()
save_result(final.to_dict(mode="json"),"stream-result")
Eredmények fogadása és mentése
Ailoot · Anthropic Messages
json vagy SSE
Őrizzen meg minden elkészült eredményt
Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.
Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.
Ha az eredeti választ ellenőrizni kell
Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.
Válaszmezők
| Mező | Típus |
|---|---|
Mezőid | Típusstring |
Mezőmodel | Típusstring |
Mezőcontent[] | Típustext|thinking|tool_use|other content block |
Mezőstop_reason | Típusstring|null |
Mezőusage | Típusobject |
Hibák és következő lépések
| Válasz | Feltétel | Következő lépés |
|---|---|---|
Válasz400 · invalid_request_error | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
Álnevek
Modell álnevei
Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview~google/gemini-pro-latest
Metódusútvonalak álnevei
/chat/completions
Kapcsolódó modellazonosítók
google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview
Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent gemini-3.1-pro-preview
gemini-3.1-pro-previewKezdő lépések
A Gemini 3.1 Pro Preview a Google multimodális következtető modellje összetett szoftveres, algoritmikus és tudásfeladatokhoz. Szöveget, képeket, hangot, videót és PDF-et fogad, és szöveget vagy kódot ad vissza, eszközökkel és strukturált kimenettel. A Low, medium és high következtetési szintek vezérlik az erőfeszítést; a high a dokumentált alapérték.
- Elfogadott bemenetek
- Szöveg · Képek
- Eredmények
- Szöveg
Elérhető az Ailootban · bemenetek és metódusok
Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent
- Bemenet
text,image- Kimenet
text- Kontextus
- 1 048 576 tokens
- Maximális kimenet
- 65 536 tokens
- Kimeneti formátum
- json vagy támogatott folyamatos átvitel
| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
|---|---|---|---|---|
Mezőpath.model | Típusstring | KövetelményKötelező | Értékek és korlátok gemini-3.1-pro-preview | Alapértelmezett— |
Mezőcontents | Típuscontent[] | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
Mezőcontents[].role | Típusstring | KövetelményOpcionális | Értékek és korlátok user, model | Alapértelmezett— |
Mezőcontents[].parts | Típuspart[] | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
MezősystemInstruction | Típuscontent | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
MezőgenerationConfig.maxOutputTokens | Típusinteger | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
MezőgenerationConfig.temperature | Típusnumber | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
MezőgenerationConfig.topP | Típusnumber | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
MezőgenerationConfig.topK | Típusinteger | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
MezőgenerationConfig.stopSequences | Típusstring[] | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
MezőgenerationConfig.thinkingConfig.includeThoughts | Típusboolean | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
MezőgenerationConfig.thinkingConfig.thinkingBudget | Típusinteger | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőtools[].functionDeclarations | Típusfunction_declaration[] | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
MezőtoolConfig.functionCallingConfig.mode | Típusstring | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
MezősafetySettings | Típusobject[] | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
MezősessionId | Típusstring | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
Bemeneti anyagok kombinációi
Szöveg · UTF8 szöveg
contents[].parts[].text
Szöveg + kép
parts[].inlineData={mimeType,data}
Metódus paraméterei és életciklusa
| Paraméter | Szerződés |
|---|---|
Paramétermaterial_types | Szerződéstext, image |
Paraméterrequired | Szerződéscontents |
Paraméteroptional_controls | Szerződésnull |
Paramétercontent_type | Szerződésapplication/json |
Paramétertext_file_material | Szerződésa tényleges UTF-8 tartalom szövegként beillesztve; a fájlazonosítók/URLs külön, pontos támogatást igényelnek |
Életciklus: exact retained published method
A metódusok szerkezete és azonosítói pontosak; a beszállítói képesség különbözik a kérelmek befogadásától.
Díjcsomagok
Ailoot-metódusok díjai
POST /v1beta/models/{model}:generateContent- Bemenet
- 0,002 USD / 1K
- Kimenet
- 0,012 USD / 1K
- Gyorsítótár olvasása
- 0,0002 USD / 1K
A kérés hosszától függő árak · Gemini generateContent
| A kérés mérete, tokenben | Bemenet | Kimenet | Gyorsítótár olvasása | Írás a gyorsítótárba | Gyorsítótár 5 perc | Gyorsítótár 1 óra |
|---|---|---|---|---|---|---|
| A kérés mérete, tokenben(0; 200 000] | Bemenet0,002 USD | Kimenet0,012 USD | Gyorsítótár olvasása0,0002 USD | Írás a gyorsítótárbaAlapdíjtétel: — | Gyorsítótár 5 percAlapdíjtétel: — | Gyorsítótár 1 óraAlapdíjtétel: — |
| A kérés mérete, tokenben(200 000; ∞) | Bemenet0,004 USD | Kimenet0,018 USD | Gyorsítótár olvasása0,0004 USD | Írás a gyorsítótárbaAlapdíjtétel: — | Gyorsítótár 5 percAlapdíjtétel: — | Gyorsítótár 1 óraAlapdíjtétel: — |
Díjak USD / 1K token egységben. Ha nincs megadva díjtétel, a metódus alapdíja öröklődik; a «—» azt jelenti, hogy nincs megadva alapdíj.
Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →
A referencia-díjszabás részletei
A modellszintű referenciatáblázatok nem módosítják a metódusválasztást, az árajánlatokat vagy a díjakat. A tényleges díjak a kiválasztott Ailoot-metódus díjtételeit használják.
Modell referenciatáblázatai
Árak beállításonként
Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.
| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
|---|---|---|---|---|
| BeállításOpenAI Chat · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token Kimenet · Kimeneti következtetési tokenek $0.024 / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
| BeállításOpenAI Chat · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.008 / 1K token Kimenet · Kimeneti tokenek $0.036 / 1K token Bemenet · Gyorsítótár olvasása $0.0008 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
| BeállításAnthropic Messages · Alap tokendíjak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token Kimenet · Kimeneti következtetési tokenek $0.024 / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 1. díjsáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
| BeállításAnthropic Messages · Kéréshossz szerinti 2. díjsáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.008 / 1K token Kimenet · Kimeneti tokenek $0.036 / 1K token Bemenet · Gyorsítótár olvasása $0.0008 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
Példakérések
Ailoot · Gemini generateContent
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.1-pro-preview: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.1-pro-preview: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.1-pro-preview", 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.1-pro-preview", 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.1-pro-preview',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
Eredmények fogadása és mentése
Ailoot · Gemini generateContent
json vagy támogatott folyamatos átvitel
Őrizzen meg minden elkészült eredményt
Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.
Őrizze meg az összes válaszjelöltet és tartalomrészt, beleértve a függvényhívásokat, a gondolkodási tartalom aláírásait és a használati adatokat; a folyamatos átvitel darabjait sorrendben állítsa össze.
Ha az eredeti választ ellenőrizni kell
Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.
Válaszmezők
| Mező | Típus |
|---|---|
MezőresponseId | Típusstring |
MezőmodelVersion | Típusstring |
Mezőcandidates[].content.parts[] | Típustext|inlineData|functionCall|other part |
Mezőcandidates[].finishReason | Típusstring |
MezőusageMetadata | Típusobject |
Hibák és következő lépések
| Válasz | Feltétel | Következő lépés |
|---|---|---|
Válasz400 · invalid_request_error | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
Álnevek
Modell álnevei
Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview~google/gemini-pro-latest
Metódusútvonalak álnevei
/chat/completions
Kapcsolódó modellazonosítók
google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions gemini-3.1-pro-preview
gemini-3.1-pro-previewgemini-3.1-pro-previewgoogle/gemini-3.1-pro-preview
Kezdő lépések
A Gemini 3.1 Pro Preview a Google multimodális következtető modellje összetett szoftveres, algoritmikus és tudásfeladatokhoz. Szöveget, képeket, hangot, videót és PDF-et fogad, és szöveget vagy kódot ad vissza, eszközökkel és strukturált kimenettel. A Low, medium és high következtetési szintek vezérlik az erőfeszítést; a high a dokumentált alapérték.
- Elfogadott bemenetek
- Szöveg
- Eredmények
- Szöveg
Elérhető az Ailootban · bemenetek és metódusok
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Bemenet
text- Kimenet
text- Kimeneti formátum
- json vagy SSE
| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
|---|---|---|---|---|
Mezőmodel | Típusstring | KövetelményKötelező | Értékek és korlátok gemini-3.1-pro-preview | Alapértelmezett— |
Mezőmessages | Típusmessage[] | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
Mezőmessages[].role | Típusstring | KövetelményKötelező | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőmessages[].content | Típusstring | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Szöveges beszélgetés | Alapértelmezett— |
Mezőstream | Típusboolean | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
Bemeneti anyagok kombinációi
Szöveg · UTF8 szöveg
messages[].content
Metódus paraméterei és életciklusa
| Paraméter | Szerződés |
|---|---|
Paramétercontent_type | Szerződésapplication/json |
Paraméterrequired | Szerződésmodel, messages |
Paramétermaterial_types | Szerződéstext |
Paramétermessages | Szerződésüzenettömb role/content szerkezettel |
Paraméterfile_material | Szerződésa tényleges UTF-8 dokumentum szó szerinti szövegként beillesztve; nincs kikövetkeztetett fájlazonosító |
Paraméteroptional_controls | Szerződésstream |
Paramétercontrol_scope | SzerződésSzöveges beszélgetés; a stream logikai érték, alapértéke false. |
Paraméteroutput_modalities | Szerződéstext |
Paraméterhosted_operations | Szerződésfalse |
Paramétermultimodal_input_binding | Szerződésnull |
Metódus álnevei: /chat/completions
Életciklus: synchronous_or_streamed
Küldje el a pontos modellazonosítót a messages mellett.
A kontextushossz nem kimeneti felső korlát.
Egy szövegfájl szó szerinti szöveget adhat meg; a kép-/hang-/fájlobjektum-bemenetek pontos hozzárendelést igényelnek.
Díjcsomagok
A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.
- Gyors mód
- Normál díjszabás Ha a gyors mód van kiválasztva
- Flex mód
- Normál díjszabás Ha a flex mód van kiválasztva
- Maximális gondolkodási ráfordítás
- Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik
- Gondolkodási ráfordítás · high
- Normál díjszabás Ha a gondolkodási ráfordítás értéke high
- Gondolkodási ráfordítás · low
- Normál díjszabás Ha a gondolkodási ráfordítás értéke low
- Gondolkodási ráfordítás · medium
- Normál díjszabás Ha a gondolkodási ráfordítás értéke medium
- Explicit gyorsítótárazás díjai
- Nincs engedélyezve Ha explicit gyorsítótárazást kérnek
- Következtetési kimenet
- A következtetés az összesített kimeneten belül a feltüntetett részhalmaz díját használja; ezeket a tokeneket ne számolja hozzá kétszer. Ha a kimenet következtetési tokeneket is tartalmaz
Ailoot-díjak
Árak beállításonként
Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.
| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
|---|---|---|---|---|
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token Kimenet · Kimeneti következtetési tokenek $0.024 / 1K token |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
| BeállításA kéréshossz szerinti 2. ársáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.008 / 1K token Kimenet · Kimeneti tokenek $0.036 / 1K token Bemenet · Gyorsítótár olvasása $0.0008 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →
Példakérések
Ailoot Ultra · OpenAI Chat
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.1-pro-preview","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.1-pro-preview", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(result.to_dict(mode="json"))
Eredmények fogadása és mentése
Ailoot Ultra · OpenAI Chat
json vagy SSE
Őrizzen meg minden elkészült eredményt
Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.
Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.
Ha az eredeti választ ellenőrizni kell
Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.
Válaszmezők
| Mező | Típus |
|---|---|
Mezőchoices[].index | Típusinteger |
Mezőchoices[].message.content | Típusstring|null |
Mezőchoices[].message.tool_calls | Típustool_call[] |
Mezőchoices[].message.reasoning_content | Típusstring |
Mezőchoices[].message.reasoning_details | Típusobject|array |
Mezőchoices[].finish_reason | Típusstring|null |
Mezőusage | Típusobject |
Hibák és következő lépések
| Válasz | Feltétel | Következő lépés |
|---|---|---|
Válasz400 · invalid_request_error | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
Álnevek
Modell álnevei
Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview~google/gemini-pro-latest
Metódusútvonalak álnevei
/chat/completions
Kapcsolódó modellazonosítók
google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview
Ailoot Ultra · Anthropic Messages POST /v1/messages gemini-3.1-pro-preview
gemini-3.1-pro-previewgemini-3.1-pro-previewgoogle/gemini-3.1-pro-preview
Kezdő lépések
A Gemini 3.1 Pro Preview a Google multimodális következtető modellje összetett szoftveres, algoritmikus és tudásfeladatokhoz. Szöveget, képeket, hangot, videót és PDF-et fogad, és szöveget vagy kódot ad vissza, eszközökkel és strukturált kimenettel. A Low, medium és high következtetési szintek vezérlik az erőfeszítést; a high a dokumentált alapérték.
- Elfogadott bemenetek
- Szöveg
- Eredmények
- json · sse
Elérhető az Ailootban · bemenetek és metódusok
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Bemenet
text- Kimenet
json,sse- Kimeneti formátum
- JSON vagy SSE
| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
|---|---|---|---|---|
Mezőmodel | Típusstring | KövetelményKötelező | Értékek és korlátok gemini-3.1-pro-preview | Alapértelmezett— |
Mezőmessages | Típusmessage[] | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
Mezőmessages[].role | Típusstring | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
Mezőmessages[].content | Típusstring | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
Mezőmax_tokens | Típusinteger | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
Mezőstream | Típusboolean | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
Bemeneti anyagok kombinációi
Szöveg · UTF-8 szöveg
messages[].content karakterlánc
Metódus paraméterei és életciklusa
| Paraméter | Szerződés |
|---|---|
Paramétercontent_type | Szerződésapplication/json |
Paraméterrequired | Szerződésmodel, messages, max_tokens |
Paraméteroptional_controls | Szerződésstream |
Paramétermaterial_types | Szerződéstext |
Paramétertext_file_material | SzerződésOlvassa el a tényleges UTF-8 dokumentumot, és tegye a szövegét a jelzett bemeneti karakterláncba vagy az üzenettartalom karakterláncába. |
Életciklus: synchronous_or_streamed
Díjcsomagok
A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.
- Gyors mód
- Normál díjszabás Ha a gyors mód van kiválasztva
- Flex mód
- Normál díjszabás Ha a flex mód van kiválasztva
- Maximális gondolkodási ráfordítás
- Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik
- Gondolkodási ráfordítás · high
- Normál díjszabás Ha a gondolkodási ráfordítás értéke high
- Gondolkodási ráfordítás · low
- Normál díjszabás Ha a gondolkodási ráfordítás értéke low
- Gondolkodási ráfordítás · medium
- Normál díjszabás Ha a gondolkodási ráfordítás értéke medium
- Explicit gyorsítótárazás díjai
- Nincs engedélyezve Ha explicit gyorsítótárazást kérnek
- Következtetési kimenet
- A következtetés az összesített kimeneten belül a feltüntetett részhalmaz díját használja; ezeket a tokeneket ne számolja hozzá kétszer. Ha a kimenet következtetési tokeneket is tartalmaz
Ailoot-díjak
Árak beállításonként
Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.
| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
|---|---|---|---|---|
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token Kimenet · Kimeneti következtetési tokenek $0.024 / 1K token |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
| BeállításA kéréshossz szerinti 2. ársáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.008 / 1K token Kimenet · Kimeneti tokenek $0.036 / 1K token Bemenet · Gyorsítótár olvasása $0.0008 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →
Példakérések
Ailoot Ultra · Anthropic Messages
{
"model": "gemini-3.1-pro-preview",
"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.1-pro-preview', '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.1-pro-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
Eredmények fogadása és mentése
Ailoot Ultra · Anthropic Messages
JSON vagy SSE
Őrizzen meg minden elkészült eredményt
Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.
Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.
Ha az eredeti választ ellenőrizni kell
Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.
Válaszmezők
| Mező | Típus |
|---|---|
Mezőid | Típusstring |
Mezőmodel | Típusstring |
Mezőcontent[] | Típustext|thinking|tool_use|other content block |
Mezőstop_reason | Típusstring|null |
Mezőusage | Típusobject |
Hibák és következő lépések
| Válasz | Feltétel | Következő lépés |
|---|---|---|
Válasz400 · invalid_request_error | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
Álnevek
Modell álnevei
Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview~google/gemini-pro-latest
Metódusútvonalak álnevei
/chat/completions
Kapcsolódó modellazonosítók
google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-3.1-pro-preview
google/gemini-3.1-pro-previewgemini-3.1-pro-previewgoogle/gemini-3.1-pro-preview
Kezdő lépések
A Gemini 3.1 Pro Preview a Google multimodális következtető modellje összetett szoftveres, algoritmikus és tudásfeladatokhoz. Szöveget, képeket, hangot, videót és PDF-et fogad, és szöveget vagy kódot ad vissza, eszközökkel és strukturált kimenettel. A Low, medium és high következtetési szintek vezérlik az erőfeszítést; a high a dokumentált alapérték.
- Elfogadott bemenetek
- Szöveg
- Eredmények
- Szöveg
Elérhető az Ailootban · bemenetek és metódusok
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Bemenet
text- Kimenet
text- Kimeneti formátum
- json vagy SSE
| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
|---|---|---|---|---|
Mezőmodel | Típusstring | KövetelményKötelező | Értékek és korlátok google/gemini-3.1-pro-preview | Alapértelmezett— |
Mezőmessages | Típusmessage[] | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
Mezőmessages[].role | Típusstring | KövetelményKötelező | Értékek és korlátok Példák: system, user, assistant, tool, function Feltételek: Ezeket a szerepeket a forráskód kompatibilitási típusai kifejezetten reprezentálják; a pontos szerepkészlet továbbra is modellspecifikus. Modelltől függ | Alapértelmezett— |
Mezőmessages[].content | Típusstring|content_part[]|null | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
Mezőmessages[].tool_calls | Típustool_call[] | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
Mezőmessages[].tool_call_id | Típusstring | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: role=tool; használja a ténylegesen visszaadott ID-t | Alapértelmezett— |
Mezőmessages[].name | Típusstring | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
Mezőmessages[].reasoning_content | Típusstring | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Küldje vissza a ténylegesen visszaadott gondolkodási tartalmat, ha ez a modell használja | Alapértelmezett— |
Mezőmessages[].reasoning_details | Típusobject|array | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőmax_tokens | Típusinteger | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
Mezőmax_completion_tokens | Típusinteger | KövetelményOpcionális | Értékek és korlátok Minimum: 1 Modelltől függ | Alapértelmezett— |
Mezőstream | Típusboolean | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
Mezőstream_options.include_usage | Típusboolean | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőtemperature | Típusnumber | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőtop_p | Típusnumber | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőstop | Típusstring|string[] | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőtools | Típusfunction_tool[] | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőtools[].type | Típusstring | KövetelményOpcionális | Értékek és korlátok function Modelltől függ | Alapértelmezett— |
Mezőtools[].function.name | Típusstring | KövetelményKötelező | Értékek és korlátok Akkor alkalmazandó, ha: Függvényeszköz megadva | Alapértelmezett— |
Mezőtools[].function.description | Típusstring | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
Mezőtools[].function.parameters | TípusJSON_schema | KövetelményOpcionális | Értékek és korlátok | Alapértelmezett— |
Mezőtool_choice | Típusstring|object | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőparallel_tool_calls | Típusboolean | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőresponse_format | Típusobject | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőreasoning_effort | Típusstring | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőreasoning | Típusobject | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőservice_tier | Típusstring | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőinstructions | Típusstring | KövetelményOpcionális | Értékek és korlátok Kompatibilitási mező | Alapértelmezett— |
Mezőfunctions | Típusfunction[] | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőfunction_call | Típusstring|object | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőprompt_cache_options | Típusobject | KövetelményOpcionális | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőmodalities | Típusstring[] | KövetelményOpcionális | Értékek és korlátok text | Alapértelmezett— |
Mezőprovider | Típusobject | KövetelményOpcionális | Értékek és korlátok Feltételek: A provider.options elutasításra kerül ezen az Ultra szöveges útvonalon | Alapértelmezett— |
Mezőcache_control.ttl | Típusstring | KövetelményOpcionális | Értékek és korlátok Feltételek: Az 1h elutasításra kerül a tényleges prompt-gyorsítótárazási helyeken | Alapértelmezett— |
Bemeneti anyagok kombinációi
Szöveg · UTF8 szöveg
messages[].content
Metódus paraméterei és életciklusa
| Paraméter | Szerződés |
|---|---|
Paramétercontent_type | Szerződésapplication/json |
Paraméterrequired | Szerződésmodel, messages |
Paramétermaterial_types | Szerződéstext |
Paramétermessages | Szerződésüzenettömb role/content szerkezettel |
Paraméterfile_material | Szerződésa tényleges UTF-8 dokumentum szó szerinti szövegként beillesztve; nincs kikövetkeztetett fájlazonosító |
Paraméteroptional_controls | Szerződésstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Paramétercontrol_scope | Szerződésmodellspecifikus; a felhasználói függvényeszközök eltérnek a hosztolt eszközöktől |
Paraméteroutput_modalities | Szerződéstext |
Paraméterhosted_operations | Szerződésfalse |
Paramétermultimodal_input_binding | Szerződésnull |
Életciklus: synchronous_or_streamed
Küldje el a pontos modellazonosítót a messages mellett.
A kontextushossz nem kimeneti felső korlát.
Egy szövegfájl szó szerinti szöveget adhat meg; a kép-/hang-/fájlobjektum-bemenetek pontos hozzárendelést igényelnek.
Díjcsomagok
A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.
- Gyors mód
- Normál díjszabás Ha a gyors mód van kiválasztva
- Flex mód
- Normál díjszabás Ha a flex mód van kiválasztva
- Maximális gondolkodási ráfordítás
- Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik
- Gondolkodási ráfordítás · high
- Normál díjszabás Ha a gondolkodási ráfordítás értéke high
- Gondolkodási ráfordítás · low
- Normál díjszabás Ha a gondolkodási ráfordítás értéke low
- Gondolkodási ráfordítás · medium
- Normál díjszabás Ha a gondolkodási ráfordítás értéke medium
- Explicit gyorsítótárazás díjai
- Nincs engedélyezve Ha explicit gyorsítótárazást kérnek
- Következtetési kimenet
- A következtetés az összesített kimeneten belül a feltüntetett részhalmaz díját használja; ezeket a tokeneket ne számolja hozzá kétszer. Ha a kimenet következtetési tokeneket is tartalmaz
Ailoot-díjak
Árak beállításonként
Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.
| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
|---|---|---|---|---|
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token Kimenet · Kimeneti következtetési tokenek $0.024 / 1K token |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
| BeállításA kéréshossz szerinti 2. ársáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.008 / 1K token Kimenet · Kimeneti tokenek $0.036 / 1K token Bemenet · Gyorsítótár olvasása $0.0008 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →
Példakérések
Ailoot Ultra · OpenAI Chat
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.1-pro-preview", "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.1-pro-preview',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.1-pro-preview',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_completion()
save_result(final.to_dict(mode="json"),"stream-result")
Eredmények fogadása és mentése
Ailoot Ultra · OpenAI Chat
json vagy SSE
Őrizzen meg minden elkészült eredményt
Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.
Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.
Ha az eredeti választ ellenőrizni kell
Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.
Válaszmezők
| Mező | Típus |
|---|---|
Mezőchoices[].index | Típusinteger |
Mezőchoices[].message.content | Típusstring|null |
Mezőchoices[].message.tool_calls | Típustool_call[] |
Mezőchoices[].message.reasoning_content | Típusstring |
Mezőchoices[].message.reasoning_details | Típusobject|array |
Mezőchoices[].finish_reason | Típusstring|null |
Mezőusage | Típusobject |
Hibák és következő lépések
| Válasz | Feltétel | Következő lépés |
|---|---|---|
Válasz400 · invalid_request_error | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
Álnevek
Modell álnevei
Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview~google/gemini-pro-latest
Metódusútvonalak álnevei
/chat/completions
Kapcsolódó modellazonosítók
google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview
Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-3.1-pro-preview
google/gemini-3.1-pro-previewgemini-3.1-pro-previewgoogle/gemini-3.1-pro-preview
Kezdő lépések
A Gemini 3.1 Pro Preview a Google multimodális következtető modellje összetett szoftveres, algoritmikus és tudásfeladatokhoz. Szöveget, képeket, hangot, videót és PDF-et fogad, és szöveget vagy kódot ad vissza, eszközökkel és strukturált kimenettel. A Low, medium és high következtetési szintek vezérlik az erőfeszítést; a high a dokumentált alapérték.
- Elfogadott bemenetek
- Szöveg
- Eredmények
- json · sse
Elérhető az Ailootban · bemenetek és metódusok
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Bemenet
text- Kimenet
json,sse- Kimeneti formátum
- JSON vagy SSE
| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
|---|---|---|---|---|
Mezőmodel | Típusstring | KövetelményKötelező | Értékek és korlátok google/gemini-3.1-pro-preview | Alapértelmezett— |
Mezőmessages | Típusmessage[] | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
Mezőmessages[].role | Típusstring | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
Mezőmessages[].content | Típusstring | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
Mezőmax_tokens | Típusinteger | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
Mezőstream | Típusboolean | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
Bemeneti anyagok kombinációi
Szöveg · UTF-8 szöveg
messages[].content karakterlánc
Metódus paraméterei és életciklusa
| Paraméter | Szerződés |
|---|---|
Paramétercontent_type | Szerződésapplication/json |
Paraméterrequired | Szerződésmodel, messages, max_tokens |
Paraméteroptional_controls | Szerződésstream |
Paramétermaterial_types | Szerződéstext |
Paramétertext_file_material | SzerződésOlvassa el a tényleges UTF-8 dokumentumot, és tegye a szövegét a jelzett bemeneti karakterláncba vagy az üzenettartalom karakterláncába. |
Életciklus: synchronous_or_streamed
Díjcsomagok
A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.
- Gyors mód
- Normál díjszabás Ha a gyors mód van kiválasztva
- Flex mód
- Normál díjszabás Ha a flex mód van kiválasztva
- Maximális gondolkodási ráfordítás
- Normál díjszabás Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik
- Gondolkodási ráfordítás · high
- Normál díjszabás Ha a gondolkodási ráfordítás értéke high
- Gondolkodási ráfordítás · low
- Normál díjszabás Ha a gondolkodási ráfordítás értéke low
- Gondolkodási ráfordítás · medium
- Normál díjszabás Ha a gondolkodási ráfordítás értéke medium
- Explicit gyorsítótárazás díjai
- Nincs engedélyezve Ha explicit gyorsítótárazást kérnek
- Következtetési kimenet
- A következtetés az összesített kimeneten belül a feltüntetett részhalmaz díját használja; ezeket a tokeneket ne számolja hozzá kétszer. Ha a kimenet következtetési tokeneket is tartalmaz
Ailoot-díjak
Árak beállításonként
Minden díjat a megjelenített feltételekhez rendeljen. Az alternatív beállítások minden csoportjához egy díjtételt használjon.
| Beállítás | Díjtáblázat | Kontextustokenek, több mint | Kontextustokenek, legfeljebb | Díj |
|---|---|---|---|---|
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Kontextustokenek, több mint— | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token Kimenet · Kimeneti következtetési tokenek $0.024 / 1K token |
| BeállításA kéréshossz szerinti 1. ársáv | Díjtáblázat— | Kontextustokenek, több mint0 | Kontextustokenek, legfeljebb200 000 | Díj Bemenet · Bemeneti tokenek $0.004 / 1K token Kimenet · Kimeneti tokenek $0.024 / 1K token Bemenet · Gyorsítótár olvasása $0.0004 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
| BeállításA kéréshossz szerinti 2. ársáv | Díjtáblázat— | Kontextustokenek, több mint200 000 | Kontextustokenek, legfeljebbNincs felső korlát | Díj Bemenet · Bemeneti tokenek $0.008 / 1K token Kimenet · Kimeneti tokenek $0.036 / 1K token Bemenet · Gyorsítótár olvasása $0.0008 / 1K token Bemenet · Írás a gyorsítótárba $0.00075 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →
Példakérések
Ailoot Ultra · Anthropic Messages
{
"model": "google/gemini-3.1-pro-preview",
"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.1-pro-preview', '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.1-pro-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
Eredmények fogadása és mentése
Ailoot Ultra · Anthropic Messages
JSON vagy SSE
Őrizzen meg minden elkészült eredményt
Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.
Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.
Ha az eredeti választ ellenőrizni kell
Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.
Válaszmezők
| Mező | Típus |
|---|---|
Mezőid | Típusstring |
Mezőmodel | Típusstring |
Mezőcontent[] | Típustext|thinking|tool_use|other content block |
Mezőstop_reason | Típusstring|null |
Mezőusage | Típusobject |
Hibák és következő lépések
| Válasz | Feltétel | Következő lépés |
|---|---|---|
Válasz400 · invalid_request_error | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
Álnevek
Modell álnevei
Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview~google/gemini-pro-latest
Metódusútvonalak álnevei
/chat/completions
Kapcsolódó modellazonosítók
google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview
FAQ · Google: Gemini 3.1 Pro Preview
- Milyen bemenetek és eredmények érhetők el?
POST /v1/messages·gemini-3.1-pro-preview:text,image→textPOST /v1beta/models/{model}:generateContent·gemini-3.1-pro-preview:text,image→textPOST /v1/chat/completions·gemini-3.1-pro-preview:text→textPOST /v1/messages·gemini-3.1-pro-preview:text→json,ssePOST /v1/chat/completions·google/gemini-3.1-pro-preview:text→textPOST /v1/messages·google/gemini-3.1-pro-preview:text→json,sse- Mely mezőket használja a kérés?
POST /v1/messages·gemini-3.1-pro-preview:model,messages,system,max_tokens,stream,metadataPOST /v1beta/models/{model}:generateContent·gemini-3.1-pro-preview:contents,systemInstruction,sessionIdPOST /v1/chat/completions·gemini-3.1-pro-preview:model,messages,streamPOST /v1/messages·gemini-3.1-pro-preview:model,messages,max_tokens,streamPOST /v1/chat/completions·google/gemini-3.1-pro-preview:model,messages,stream,modalities,providerPOST /v1/messages·google/gemini-3.1-pro-preview:model,messages,max_tokens,stream- Milyen korlátok érvényesek?
POST /v1/messages·gemini-3.1-pro-preview:ctx:1048576;max_out:65536;messages.min_items:1;max_tokens.minimum:1POST /v1beta/models/{model}:generateContent·gemini-3.1-pro-preview:ctx:1048576;max_out:65536;contents.min_items:1POST /v1/chat/completions·gemini-3.1-pro-preview:messages.min_items:1POST /v1/chat/completions·google/gemini-3.1-pro-preview:messages.min_items:1