modely

Gemini Pro Agent

Markdown · JSON

Gemini Pro Agent

Multimodálny model spoločnosti Google na zložité programátorské úlohy, analýzu rozsiahlych materiálov a presnú prácu s nástrojmi vo viacerých krokoch.

O modeli

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

Gemini 3.1 Pro Preview je určený na prácu so zložitým materiálom a úlohami vyžadujúcimi viacero postupných rozhodnutí. Google zdôrazňuje softvérové inžinierstvo, používanie nástrojov a súlad faktických odpovedí. Model pomáha analyzovať veľké súbory údajov, celé softvérové repozitáre a úlohy, v ktorých je text spojený s vizuálnymi alebo zvukovými materiálmi.

Akým materiálom model rozumie

Charakteristiky Google uvádzajú text, obrázky, video, zvuk a PDF. V aktuálnom katalógu Ailoot API sú pri textových metódach deklarované text a obrázky na vstupe a text na výstupe. Video, zvuk a PDF nie sú súčasťou tohto súboru vstupov. Dlhý kontext pojme najviac 1 048 576 vstupných tokenov, textová odpoveď najviac 65 536 výstupných tokenov. Porozumenie obrázkom a zvuku neznamená ich generovanie: výstup tejto verzie zostáva textový.

Uvažovanie a práca po krokoch

Thinking umožňuje venovať dodatočné úsilie vnútornému uvažovaniu. V režime základného modelu opísanom spoločnosťou Google je štandardná úroveň high; dostupné sú low, medium, high. Tieto hodnoty opisujú základný model Google; režim a dostupnosť riadenia cez Ailoot API závisia od zvolenej metódy a variantu modelu. Hlavné scenáre zahŕňajú zložité programovanie, vývoj algoritmov, strategické plánovanie a postupné zlepšovanie riešenia. Je to zvlášť užitočné, keď treba zohľadniť viacero prepojených požiadaviek a vracať sa k priebežným výsledkom.

Schopnosti modelu zahŕňajú volania funkcií, vykonávanie kódu a štruktúrované odpovede. Podporované sú ukladanie kontextu do vyrovnávacej pamäte, podloženie vyhľadávaním, Google Maps a používanie obsahu webových adries; k dispozícii je dávkové spracovanie. Takýto súbor umožňuje vytvoriť postup, v ktorom model analyzuje údaje, vyberá ďalší nástroj a vytvára výsledok. Skutočná dostupnosť každého nástroja závisí od metódy práce s modelom.

Verzia a osobitosti

Karta sa vzťahuje na predbežnú verziu gemini-3.1-pro-preview. Je založená na Gemini 3 Pro. Výrobca samostatne uvádza variant gemini-3.1-pro-preview-customtools, zameraný na postupy s príkazovou konzolou a vlastnými nástrojmi. Jeho priority pri výbere nástrojov a osobitosti správania nie sú vlastnosťami bežnej verzie Preview.

Pre model zostávajú všeobecné obmedzenia základnej línie: odpovede môžu obsahovať vymyslené údaje a niektoré požiadavky sa môžu vykonávať pomaly alebo skončiť prekročením časového limitu. Uvažovanie vo viacerých krokoch, veľký kontext a prístup k údajom pomáhajú pracovať so zložitou úlohou, ale nerobia z každého vygenerovaného záveru overený fakt.

Praktická úloha

Praktická úloha

Technický príklad v angličtine

Design a dependency-aware work order

Plan execution for these tasks: A has no dependency; B depends on A; C depends on A; D depends on both B and C. At most two tasks may run together, and each takes one hour. Give the earliest valid schedule, a general scheduling algorithm and a test that catches starting D before C finishes.

Očakávaný výsledok

A time-slot schedule, algorithm pseudocode and a dependency-violation test case.

Overenie výsledku

Check that the proposed schedule respects both dependencies and the two-task concurrency limit.
Ailoot · Anthropic Messages POST /v1/messages gemini-pro-agent

gemini-pro-agent

Google /gemini-pro-agent

Úvod

Multimodálny model spoločnosti Google na zložité programátorské úlohy, analýzu rozsiahlych materiálov a presnú prácu s nástrojmi vo viacerých krokoch.

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

Dostupné v Ailoot · vstupy a metódy

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

Text · Text UTF8

messages[].content alebo blok type=text

Text + obrázok

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

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

Životný cyklus: exact retained published method

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

Cenník

Sadzby metód Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Vstup
0,002 USD / 1K
Výstup
0,012 USD / 1K
Čítanie cache
0,0002 USD / 1K

Ceny podľa dĺžky požiadavky · Anthropic Messages

Veľkosť požiadavky v tokenochVstupVýstupČítanie cacheZápis do cacheCache 5 minCache 1 hod
Veľkosť požiadavky v tokenoch(0; 200 000]Vstup0,002 USDVýstup0,012 USDČítanie cache0,0002 USDZápis do cacheZákladná: —Cache 5 minZákladná: —Cache 1 hodZákladná: —
Veľkosť požiadavky v tokenoch(200 000; ∞)Vstup0,004 USDVýstup0,018 USDČítanie cache0,0004 USDZápis do cacheZákladná: —Cache 5 minZákladná: —Cache 1 hodZákladná: —

Sadzby v USD za 1K tokenov. Ak sadzba nie je nastavená, preberá sa základná sadzba tejto metódy; «—» znamená, že základná sadzba nie je nastavená.

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

Príklady požiadaviek

Ailoot · Anthropic Messages

Príklad textuVstup, obrázokPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gemini-pro-agent", "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-pro-agent", "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-pro-agent",
    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-pro-agent",
  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-pro-agent',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Prijať a uložiť výsledky

Ailoot · Anthropic Messages

json alebo SSE

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

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

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

Ak treba overiť pôvodnú odpoveď

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

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

Aliasy

Aliasy modelov

Ailoot gemini-pro-agent

Aliasy ciest metód

Použite cesty metód uvedené vyššie.

Súvisiace ID na volanie

gemini-pro-agent

Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent gemini-pro-agent

gemini-pro-agent

Google /gemini-pro-agent

Úvod

Multimodálny model spoločnosti Google na zložité programátorské úlohy, analýzu rozsiahlych materiálov a presnú prácu s nástrojmi vo viacerých krokoch.

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

Dostupné v Ailoot · vstupy a metódy

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

Text · Text UTF8

contents[].parts[].text

Text + obrázok

parts[].inlineData={mimeType,data}

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

Životný cyklus: exact retained published method

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

Cenník

Sadzby metód Ailoot

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

Ceny podľa dĺžky požiadavky · Gemini generateContent

Veľkosť požiadavky v tokenochVstupVýstupČítanie cacheZápis do cacheCache 5 minCache 1 hod
Veľkosť požiadavky v tokenoch(0; 200 000]Vstup0,002 USDVýstup0,012 USDČítanie cache0,0002 USDZápis do cacheZákladná: —Cache 5 minZákladná: —Cache 1 hodZákladná: —
Veľkosť požiadavky v tokenoch(200 000; ∞)Vstup0,004 USDVýstup0,018 USDČítanie cache0,0004 USDZápis do cacheZákladná: —Cache 5 minZákladná: —Cache 1 hodZákladná: —

Sadzby v USD za 1K tokenov. Ak sadzba nie je nastavená, preberá sa základná sadzba tejto metódy; «—» znamená, že základná sadzba nie je nastavená.

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

Príklady požiadaviek

Ailoot · Gemini generateContent

Príklad textuVstup, obrázokPython SDKNode.js SDKStreamovanie v jazyku Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"contents": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["contents"]=[{"role":"user","parts":[{"text":"Summarize this material and quote supporting source passages.\n\n"+text}]}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1beta/models/gemini-pro-agent: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-pro-agent: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-pro-agent", 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-pro-agent", 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-pro-agent',contents="Explain observations and hypotheses in three sentences."):
        payload=chunk.to_json_dict()
        log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
        save_result(payload,"stream-chunk-"+str(count))
        count+=1

Prijať a uložiť výsledky

Ailoot · Gemini generateContent

json alebo podporované streamovanie

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

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

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

Ak treba overiť pôvodnú odpoveď

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

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

Aliasy

Aliasy modelov

Ailoot gemini-pro-agent

Aliasy ciest metód

Použite cesty metód uvedené vyššie.

Súvisiace ID na volanie

gemini-pro-agent

FAQ · Gemini Pro Agent
Aké vstupy a výsledky sú dostupné?

POST /v1/messages · gemini-pro-agent: text, image → text

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

Aké polia používa požiadavka?

POST /v1/messages · gemini-pro-agent: model, messages, system, max_tokens, stream, metadata

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

Aké limity platia?

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

POST /v1beta/models/{model}:generateContent · gemini-pro-agent: ctx: 1048576; max_out: 65536; contents.min_items: 1

Viac podrobností

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

Spoločnosť a jej portfólio projektov

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

Nakupujte tokeny so zľavou.

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

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

Vybrať predplatné · Zobraziť ceny modelov

Pripojte API k produktu, ktorý predávate.

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

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

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