modeller

Google: Gemini 2.5 Pro

Markdown · JSON

Google: Gemini 2.5 Pro

Gemini 2.5 Pro er Googles stabile tænkemodel til kompleks kode, matematik, STEM og analyse med lang kontekst. Den accepterer tekst, billeder, lyd, video og PDF og returnerer tekst med værktøjer og struktureret output. Det dynamiske ræsonnementsbudget understøtter 128–32.768 tokens og kan ikke slås helt fra.

Om modellen

Denne beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.

Gemini 2.5 Pro er Googles stabile tænkeprofil til avanceret programmering, matematik, STEM og analyse med lang kontekst. Den kan forstå tekst, lyd, billeder, video og hele koderepositories, og dens Gemini API-profil accepterer også PDF-input. Outputtet er tekst, herunder kode, skriftlig analyse eller en struktureret post. En nyttig opgave leverer dokumentationen og beder om et resultat, der kan kontrolleres, eksempelvis en forklaret løsning, et fund i en kodebase eller en sammenligning af flere dokumenter.

Ved programmering skal du levere de relevante filer, den observerede adfærd og den ændring eller det spørgsmål, der er vigtigt. Lang kontekst kan hjælpe modellen med at forbinde moduler frem for at ræsonnere ud fra ét isoleret uddrag. Ved undersøgelse af en kodevej kan du bede den følge en identifikator fra en inputformular gennem behandling og lagring, finde det sted, hvor en kontrakt ændres, og foreslå en målrettet rettelse. Bevar begrænsningerne, og bed om underbyggende henvisninger. Et ændringsforslag skal sammenholdes med den faktiske kode og eventuel validering udført via de tilsluttede værktøjer.

Ved matematik eller videnskabelig analyse skal du angive problemet, antagelserne, enhederne og den påkrævede svarform. Lever de data eller figurer, som beregningen afhænger af. Bed om det underbyggede resultat og de kontroller, der gør det muligt at vurdere det, eksempelvis grænsetilfælde eller en sammenligning med de oprindelige værdier. Modellens ræsonnementsevne fjerner ikke tvetydighed i problemformuleringen. Lad en ukendt størrelse eller en udokumenteret antagelse forblive synlig frem for at erstatte den med en bekvem værdi.

Dynamisk tænkning er den dokumenterede standard. Gemini 2.5 GenerateContent-vejledningen understøtter et eksplicit ræsonnementsbudget fra 128 til 32.768 tokens for Pro eller -1 for adaptiv tænkning. Denne udgave kan ikke slå tænkning helt fra. Disse indstillinger adskiller sig fra Flashs mulighed for et nulbudget og fra Gemini 3-indstillingerne for tænkeniveau. Tænkebudgettet styrer ræsonnementet frem for at garantere et præcist antal interne tokens, og en svargrænse skal også levne plads til det færdige resultat.

Ved multimodalt dokumentarbejde skal du angive de sider, den graf, det billedområde eller den hændelse i en optagelse, der skal understøtte svaret. En praktisk synteseopgave kan bede om konkurrerende påstande fra flere kildedokumenter, deres underbyggende passager og de forskelle, der har betydning for én beslutning. Bed modellen skelne mellem en udtrykkelig oplysning og en slutning. Ved video eller lyd skal du definere, om resultatet skal være en beskrivelse, et transkript, en sammenfatning eller en sammenligning. Billede og lyd er i denne profil dokumentation for et tekstresultat.

Den modelspecifikke API-side dokumenterer function calling, kodeudførelse, filsøgning, search grounding, Maps grounding, URL-kontekst og strukturerede output. Definer funktionernes formål og parameterfelter, og bevar de faktiske resultater i senere samtaleture. Ved en post med skemakrav skal du angive påkrævede felter, og hvordan manglende oplysninger skal repræsenteres. Den native arkitektur er en multimodal sparse mixture-of-experts-transformer; dette modeldesign leverer ikke i sig selv ekstern værktøjsudførelse eller en færdig applikation ud over den returnerede tekst eller kode.

Det native kort angiver 1M inputkontekst og 64K tekstoutput; API-tabellen specificerer 1.048.576 inputtokens og 65.536 outputtokens. Instruktioner, kildeindhold og bevaret historik indgår i forberedelsen af input. En maksimal svarramme omfatter ræsonnementstokens, så en for lille grænse kan afbryde det endelige svar. Caching og batchbehandling er dokumenteret sammen med mulighederne Flex og Priority. Bevar hver kildeidentifikator og den ønskede slutform, når du forbereder uafhængige opgaver med lang kontekst.

Den stabile identifikator er adskilt fra udgaverne Experimental og Preview, som omtales særskilt i det fælles Pro-modelkort. Overfør ikke deres versionsspecifikke resultater til denne profil, blot fordi de deler Pro-navnet. Kortet beskriver mulige hallucinationer og begrænsninger i årsagsforståelse, kompleks deduktion og kontrafaktisk ræsonnement samt en vidensgrænse i januar 2025. Lever aktuelle kilder, når det er relevant, og gennemgå kildehenvisninger, beregninger og foreslåede ændringer. Det nyttige output er det underbyggede tekst- eller koderesultat, som opgaven bad om.

Praktisk opgave

Praktisk opgave

Teknisk eksempel på engelsk

Trace an identifier through storage

Trace this identifier through three excerpts: form sends {customer_id:'0017'}; service computes id=Number(body.customer_id); repository stores String(id). Requirement: preserve leading zeros. Identify where the contract changes, propose a minimal consistent correction and give tests for '0017', '17' and a missing ID. Do not claim the tests were executed.

Forventet resultat

A source-path explanation, a proposed patch and a three-case regression-test plan.

Kontrollér resultatet

Check that the proposed path preserves distinct strings 0017 and 17 while specifying missing-ID behavior.
Ailoot · Anthropic Messages POST /v1/messages gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro

Start

Gemini 2.5 Pro er Googles stabile tænkemodel til kompleks kode, matematik, STEM og analyse med lang kontekst. Den accepterer tekst, billeder, lyd, video og PDF og returnerer tekst med værktøjer og struktureret output. Det dynamiske ræsonnementsbudget understøtter 128–32.768 tokens og kan ikke slås helt fra.

Accepterede input
Tekst · Billeder
Resultater
Tekst

Tilgængelig i Ailoot · input og metoder

Ailoot · Anthropic Messages POST /v1/messages
Inputtyper
text, image
Outputtyper
text
Kontekst
1.048.576 tokens
Maksimalt output
65.536 tokens
Outputformat
json eller SSE
FeltTypeKravVærdier og grænserStandard
FeltmodelTypestringKravPåkrævetVærdier og grænser
gemini-2.5-pro
Standard—
FeltmessagesTypemessage[]KravPåkrævetVærdier og grænser
Minimumsantal elementer: 1
Standard—
Feltmessages[].roleTypestringKravPåkrævetVærdier og grænser
user, assistant
Standard—
Feltmessages[].contentTypestring|content_block[]KravPåkrævetVærdier og grænserStandard—
FeltsystemTypestring|content_block[]KravValgfritVærdier og grænserStandard—
Feltmax_tokensTypeintegerKravPåkrævetVærdier og grænser
Minimum: 1
Grænsen gælder for: den præcise øvre grænse for valgt model/modelkort
Standard—
FeltstreamTypebooleanKravValgfritVærdier og grænserStandardfalse
FelttemperatureTypenumberKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Felttop_pTypenumberKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltstop_sequencesTypestring[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FelttoolsTypetool[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Felttools[].nameTypestringKravValgfritVærdier og grænser
Gælder når: værktøj angivet
Standard—
Felttools[].descriptionTypestringKravValgfritVærdier og grænserStandard—
Felttools[].input_schemaTypeJSON_schemaKravValgfritVærdier og grænserStandard—
Felttool_choiceTypeobjectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltthinking.typeTypestringKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltthinking.budget_tokensTypeintegerKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltoutput_config.effortTypestringKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltmetadataTypeobjectKravValgfritVærdier og grænserStandard—
Feltcache_controlTypeobjectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Kombinationer af inputmaterialer

Tekst · UTF8-tekst

messages[].content eller en blok med type=text

Tekst + billede

{type:image,source:{type:base64,media_type,data}} eller kilde med type=url

Metodeparametre og livscyklus
ParameterKontrakt
Parametermaterial_typesKontrakttext, image
ParameterrequiredKontraktmodel, messages, max_tokens
Parameteroptional_controlsKontraktnull
Parametercontent_typeKontraktapplication/json
Parametertext_file_materialKontraktfaktisk UTF-8-indhold indsat som tekst; fil-ID’er/URLs kræver særskilt præcis understøttelse

Livscyklus: exact retained published method

Metodernes strukturer og ID’er er præcise; leverandørens muligheder er adskilt fra adgangstilladelse.

Priser

Ailoot-metodetakster

Ailoot Anthropic MessagesPOST /v1/messages
Input
0,00125 US$ / 1K
Output
0,01 US$ / 1K
Cachelæsning
0,000125 US$ / 1K

Priser efter anmodningens længde · Anthropic Messages

Anmodningens størrelse, tokensInputOutputCachelæsningCacheskrivningCache 5 min.Cache 1 time
Anmodningens størrelse, tokens(0; 200.000]Input0,00125 US$Output0,01 US$Cachelæsning0,000125 US$CacheskrivningGrundsats: —Cache 5 min.Grundsats: —Cache 1 timeGrundsats: —
Anmodningens størrelse, tokens(200.000; ∞)Input0,0025 US$Output0,015 US$Cachelæsning0,00025 US$CacheskrivningGrundsats: —Cache 5 min.Grundsats: —Cache 1 timeGrundsats: —

Takster i USD pr. 1K tokens. Hvis ingen takst er angivet, overtages grundtaksten for denne metode; «—» betyder, at ingen grundtakst er angivet.

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →

Detaljer om referencetariffen

Referenceplaner på modelniveau ændrer ikke metodevalg, prisoverslag eller opkrævninger. Ved den aktive afregning anvendes taksterne for den valgte Ailoot-metode.

Modellens referenceplaner

Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

KonfigurationTakstplanKonteksttokens, mere endKonteksttokens, op til og medBeløb
KonfigurationOpenAI Chat · Grundtakster pr. tokenTakstplanGrundtakstKonteksttokens, mere end—Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
Output · Outputtokens fra ræsonnering $0.02 / 1K tokens
KonfigurationOpenAI Chat · Trin 1 efter anmodningens længdeTakstplan—Konteksttokens, mere end0Konteksttokens, op til og med200.000Beløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
KonfigurationOpenAI Chat · Trin 2 efter anmodningens længdeTakstplan—Konteksttokens, mere end200.000Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.005 / 1K tokens
Output · Outputtokens $0.03 / 1K tokens
Input · Cachelæsning $0.0005 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
KonfigurationAnthropic Messages · Grundtakster pr. tokenTakstplanGrundtakstKonteksttokens, mere end—Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
Output · Outputtokens fra ræsonnering $0.02 / 1K tokens
KonfigurationAnthropic Messages · Trin 1 efter anmodningens længdeTakstplan—Konteksttokens, mere end0Konteksttokens, op til og med200.000Beløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
KonfigurationAnthropic Messages · Trin 2 efter anmodningens længdeTakstplan—Konteksttokens, mere end200.000Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.005 / 1K tokens
Output · Outputtokens $0.03 / 1K tokens
Input · Cachelæsning $0.0005 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens

Eksempelanmodninger

Ailoot · Anthropic Messages

TeksteksempelInput, billedePython SDKNode.js SDKPython-stream
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-2.5-pro", "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-2.5-pro", "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-2.5-pro",
    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-2.5-pro",
  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-2.5-pro',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")

Hent og gem resultater

Ailoot · Anthropic Messages

json eller SSE

Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar alle indholdsblokke, ræsonnementssignaturer og faktiske værktøjsbrugs-ID’er. Saml alle SSE-blokdeltaer; den første tekstblok er ikke hele outputtet.

Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter
FeltType
FeltidTypestring
FeltmodelTypestring
Feltcontent[]Typetext|thinking|tool_use|other content block
Feltstop_reasonTypestring|null
FeltusageTypeobject
Fejl og næste trin
SvarBetingelseNæste trin
Svar400 · invalid_request_errorBetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdiNæste trinRet de angivne felter før en ny oprettelsesanmodning.

Aliaser

Modelaliaser

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliaser for metodestier

/chat/completions

Relaterede kalder-ID’er

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

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

gemini-2.5-pro

Google /gemini-2.5-pro

Start

Gemini 2.5 Pro er Googles stabile tænkemodel til kompleks kode, matematik, STEM og analyse med lang kontekst. Den accepterer tekst, billeder, lyd, video og PDF og returnerer tekst med værktøjer og struktureret output. Det dynamiske ræsonnementsbudget understøtter 128–32.768 tokens og kan ikke slås helt fra.

Accepterede input
Tekst · Billeder
Resultater
Tekst

Tilgængelig i Ailoot · input og metoder

Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent
Inputtyper
text, image
Outputtyper
text
Kontekst
1.048.576 tokens
Maksimalt output
65.536 tokens
Outputformat
json eller understøttet streaming
FeltTypeKravVærdier og grænserStandard
Feltpath.modelTypestringKravPåkrævetVærdier og grænser
gemini-2.5-pro
Standard—
FeltcontentsTypecontent[]KravPåkrævetVærdier og grænser
Minimumsantal elementer: 1
Standard—
Feltcontents[].roleTypestringKravValgfritVærdier og grænser
user, model
Standard—
Feltcontents[].partsTypepart[]KravPåkrævetVærdier og grænserStandard—
FeltsystemInstructionTypecontentKravValgfritVærdier og grænserStandard—
FeltgenerationConfig.maxOutputTokensTypeintegerKravValgfritVærdier og grænser
Minimum: 1
Afhænger af modellen
Standard—
FeltgenerationConfig.temperatureTypenumberKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltgenerationConfig.topPTypenumberKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltgenerationConfig.topKTypeintegerKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltgenerationConfig.stopSequencesTypestring[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltgenerationConfig.thinkingConfig.includeThoughtsTypebooleanKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltgenerationConfig.thinkingConfig.thinkingBudgetTypeintegerKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Felttools[].functionDeclarationsTypefunction_declaration[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FelttoolConfig.functionCallingConfig.modeTypestringKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltsafetySettingsTypeobject[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltsessionIdTypestringKravValgfritVærdier og grænserStandard—
Kombinationer af inputmaterialer

Tekst · UTF8-tekst

contents[].parts[].text

Tekst + billede

parts[].inlineData={mimeType,data}

Metodeparametre og livscyklus
ParameterKontrakt
Parametermaterial_typesKontrakttext, image
ParameterrequiredKontraktcontents
Parameteroptional_controlsKontraktnull
Parametercontent_typeKontraktapplication/json
Parametertext_file_materialKontraktfaktisk UTF-8-indhold indsat som tekst; fil-ID’er/URLs kræver særskilt præcis understøttelse

Livscyklus: exact retained published method

Metodernes strukturer og ID’er er præcise; leverandørens muligheder er adskilt fra adgangstilladelse.

Priser

Ailoot-metodetakster

Ailoot Gemini generateContentPOST /v1beta/models/{model}:generateContent
Input
0,00125 US$ / 1K
Output
0,01 US$ / 1K
Cachelæsning
0,000125 US$ / 1K

Priser efter anmodningens længde · Gemini generateContent

Anmodningens størrelse, tokensInputOutputCachelæsningCacheskrivningCache 5 min.Cache 1 time
Anmodningens størrelse, tokens(0; 200.000]Input0,00125 US$Output0,01 US$Cachelæsning0,000125 US$CacheskrivningGrundsats: —Cache 5 min.Grundsats: —Cache 1 timeGrundsats: —
Anmodningens størrelse, tokens(200.000; ∞)Input0,0025 US$Output0,015 US$Cachelæsning0,00025 US$CacheskrivningGrundsats: —Cache 5 min.Grundsats: —Cache 1 timeGrundsats: —

Takster i USD pr. 1K tokens. Hvis ingen takst er angivet, overtages grundtaksten for denne metode; «—» betyder, at ingen grundtakst er angivet.

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →

Detaljer om referencetariffen

Referenceplaner på modelniveau ændrer ikke metodevalg, prisoverslag eller opkrævninger. Ved den aktive afregning anvendes taksterne for den valgte Ailoot-metode.

Modellens referenceplaner

Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

KonfigurationTakstplanKonteksttokens, mere endKonteksttokens, op til og medBeløb
KonfigurationOpenAI Chat · Grundtakster pr. tokenTakstplanGrundtakstKonteksttokens, mere end—Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
Output · Outputtokens fra ræsonnering $0.02 / 1K tokens
KonfigurationOpenAI Chat · Trin 1 efter anmodningens længdeTakstplan—Konteksttokens, mere end0Konteksttokens, op til og med200.000Beløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
KonfigurationOpenAI Chat · Trin 2 efter anmodningens længdeTakstplan—Konteksttokens, mere end200.000Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.005 / 1K tokens
Output · Outputtokens $0.03 / 1K tokens
Input · Cachelæsning $0.0005 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
KonfigurationAnthropic Messages · Grundtakster pr. tokenTakstplanGrundtakstKonteksttokens, mere end—Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
Output · Outputtokens fra ræsonnering $0.02 / 1K tokens
KonfigurationAnthropic Messages · Trin 1 efter anmodningens længdeTakstplan—Konteksttokens, mere end0Konteksttokens, op til og med200.000Beløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
KonfigurationAnthropic Messages · Trin 2 efter anmodningens længdeTakstplan—Konteksttokens, mere end200.000Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.005 / 1K tokens
Output · Outputtokens $0.03 / 1K tokens
Input · Cachelæsning $0.0005 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens

Eksempelanmodninger

Ailoot · Gemini generateContent

TeksteksempelInput, billedePython SDKNode.js SDKPython-stream
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-2.5-pro: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-2.5-pro: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-2.5-pro", 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-2.5-pro", 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-2.5-pro',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

Hent og gem resultater

Ailoot · Gemini generateContent

json eller understøttet streaming

Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar alle kandidater og dele, herunder funktionskald, ræsonnementssignaturer og forbrugsoplysninger; saml streamingdele i rækkefølge.

Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter
FeltType
FeltresponseIdTypestring
FeltmodelVersionTypestring
Feltcandidates[].content.parts[]Typetext|inlineData|functionCall|other part
Feltcandidates[].finishReasonTypestring
FeltusageMetadataTypeobject
Fejl og næste trin
SvarBetingelseNæste trin
Svar400 · invalid_request_errorBetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdiNæste trinRet de angivne felter før en ny oprettelsesanmodning.

Aliaser

Modelaliaser

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliaser for metodestier

/chat/completions

Relaterede kalder-ID’er

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro
Model-ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Start

Gemini 2.5 Pro er Googles stabile tænkemodel til kompleks kode, matematik, STEM og analyse med lang kontekst. Den accepterer tekst, billeder, lyd, video og PDF og returnerer tekst med værktøjer og struktureret output. Det dynamiske ræsonnementsbudget understøtter 128–32.768 tokens og kan ikke slås helt fra.

Accepterede input
Tekst
Resultater
Tekst

Tilgængelig i Ailoot · input og metoder

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Inputtyper
text
Outputtyper
text
Outputformat
json eller SSE
FeltTypeKravVærdier og grænserStandard
FeltmodelTypestringKravPåkrævetVærdier og grænser
gemini-2.5-pro
Standard—
FeltmessagesTypemessage[]KravPåkrævetVærdier og grænser
Minimumsantal elementer: 1
Standard—
Feltmessages[].roleTypestringKravPåkrævetVærdier og grænser
Afhænger af modellen
Standard—
Feltmessages[].contentTypestringKravValgfritVærdier og grænser
Gælder når: Tekstsamtale
Standard—
FeltstreamTypebooleanKravValgfritVærdier og grænserStandardfalse
Kombinationer af inputmaterialer

Tekst · UTF8-tekst

messages[].content

Metodeparametre og livscyklus
ParameterKontrakt
Parametercontent_typeKontraktapplication/json
ParameterrequiredKontraktmodel, messages
Parametermaterial_typesKontrakttext
ParametermessagesKontraktbeskedarray med strukturen role/content
Parameterfile_materialKontraktfaktisk UTF-8-dokument indsat som bogstavelig tekst; intet fil-ID udledes
Parameteroptional_controlsKontraktstream
Parametercontrol_scopeKontraktTekstsamtale; stream er en boolesk værdi og er som standard false.
Parameteroutput_modalitiesKontrakttext
Parameterhosted_operationsKontraktfalse
Parametermultimodal_input_bindingKontraktnull

Metodealiaser: /chat/completions

Livscyklus: synchronous_or_streamed

Send det præcise model-ID med messages.

Kontekstlængde er ikke et outputloft.

En tekstfil kan levere bogstavelig tekst; billed-, lyd- og filobjektinput kræver en præcis binding.

Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand
Standardpris Når hurtig tilstand er valgt
flex-tilstand
Standardpris Når flex-tilstanden er valgt
Maksimal ræsonneringsindsats
Standardpris Når default-justeringen anvendes ved maksimal ræsonneringsindsats
Priser for eksplicit caching
Ikke aktiveret Når der anmodes om eksplicit caching
Ræsonnementsoutput
Ræsonnement bruger den angivne delsats inden for det samlede output; medregn ikke disse tokens to gange. Når output indeholder ræsonnementstokens

Ailoot-takster

Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

KonfigurationTakstplanKonteksttokens, mere endKonteksttokens, op til og medBeløb
KonfigurationGrundtakster for tokensTakstplanGrundtakstKonteksttokens, mere end—Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
Output · Outputtokens fra ræsonnering $0.02 / 1K tokens
KonfigurationAnmodningslængde · niveau 1Takstplan—Konteksttokens, mere end0Konteksttokens, op til og med200.000Beløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
KonfigurationAnmodningslængde · niveau 2Takstplan—Konteksttokens, mere end200.000Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.005 / 1K tokens
Output · Outputtokens $0.03 / 1K tokens
Input · Cachelæsning $0.0005 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →

Eksempelanmodninger

Ailoot Ultra · OpenAI Chat

curlPython SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gemini-2.5-pro","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-2.5-pro", 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"))

Hent og gem resultater

Ailoot Ultra · OpenAI Chat

json eller SSE

Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar hvert valg og dets indhold, værktøjskald og ræsonnement. Saml i SSE deltaer efter valg-/værktøjsindeks, og bevar den endelige afslutningsårsag og forbrugsoplysningerne.

Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter
FeltType
Feltchoices[].indexTypeinteger
Feltchoices[].message.contentTypestring|null
Feltchoices[].message.tool_callsTypetool_call[]
Feltchoices[].message.reasoning_contentTypestring
Feltchoices[].message.reasoning_detailsTypeobject|array
Feltchoices[].finish_reasonTypestring|null
FeltusageTypeobject
Fejl og næste trin
SvarBetingelseNæste trin
Svar400 · invalid_request_errorBetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdiNæste trinRet de angivne felter før en ny oprettelsesanmodning.

Aliaser

Modelaliaser

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliaser for metodestier

/chat/completions

Relaterede kalder-ID’er

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · Anthropic Messages POST /v1/messages gemini-2.5-pro

gemini-2.5-pro

Google /gemini-2.5-pro
Model-ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Start

Gemini 2.5 Pro er Googles stabile tænkemodel til kompleks kode, matematik, STEM og analyse med lang kontekst. Den accepterer tekst, billeder, lyd, video og PDF og returnerer tekst med værktøjer og struktureret output. Det dynamiske ræsonnementsbudget understøtter 128–32.768 tokens og kan ikke slås helt fra.

Accepterede input
Tekst
Resultater
json · sse

Tilgængelig i Ailoot · input og metoder

Ailoot Ultra · Anthropic Messages POST /v1/messages
Inputtyper
text
Outputtyper
json, sse
Outputformat
JSON eller SSE
FeltTypeKravVærdier og grænserStandard
FeltmodelTypestringKravPåkrævetVærdier og grænser
gemini-2.5-pro
Standard—
FeltmessagesTypemessage[]KravPåkrævetVærdier og grænserStandard—
Feltmessages[].roleTypestringKravPåkrævetVærdier og grænser
user, assistant
Standard—
Feltmessages[].contentTypestringKravPåkrævetVærdier og grænserStandard—
Feltmax_tokensTypeintegerKravPåkrævetVærdier og grænserStandard—
FeltstreamTypebooleanKravValgfritVærdier og grænserStandardfalse
Kombinationer af inputmaterialer

Tekst · UTF-8-tekst

messages[].content som streng

Metodeparametre og livscyklus
ParameterKontrakt
Parametercontent_typeKontraktapplication/json
ParameterrequiredKontraktmodel, messages, max_tokens
Parameteroptional_controlsKontraktstream
Parametermaterial_typesKontrakttext
Parametertext_file_materialKontraktLæs det faktiske UTF-8-dokument, og indsæt teksten i det angivne input eller beskedens indholdsstreng.

Livscyklus: synchronous_or_streamed

Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand
Standardpris Når hurtig tilstand er valgt
flex-tilstand
Standardpris Når flex-tilstanden er valgt
Maksimal ræsonneringsindsats
Standardpris Når default-justeringen anvendes ved maksimal ræsonneringsindsats
Priser for eksplicit caching
Ikke aktiveret Når der anmodes om eksplicit caching
Ræsonnementsoutput
Ræsonnement bruger den angivne delsats inden for det samlede output; medregn ikke disse tokens to gange. Når output indeholder ræsonnementstokens

Ailoot-takster

Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

KonfigurationTakstplanKonteksttokens, mere endKonteksttokens, op til og medBeløb
KonfigurationGrundtakster for tokensTakstplanGrundtakstKonteksttokens, mere end—Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
Output · Outputtokens fra ræsonnering $0.02 / 1K tokens
KonfigurationAnmodningslængde · niveau 1Takstplan—Konteksttokens, mere end0Konteksttokens, op til og med200.000Beløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
KonfigurationAnmodningslængde · niveau 2Takstplan—Konteksttokens, mere end200.000Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.005 / 1K tokens
Output · Outputtokens $0.03 / 1K tokens
Input · Cachelæsning $0.0005 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →

Eksempelanmodninger

Ailoot Ultra · Anthropic Messages

Komplet minimalt requestbody i JSONcurl · brug dit UTF-8-dokumentPython · gem hele resultatet
{
  "model": "gemini-2.5-pro",
  "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-2.5-pro', '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-2.5-pro', '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))

Hent og gem resultater

Ailoot Ultra · Anthropic Messages

JSON eller SSE

Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar alle indholdsblokke, ræsonnementssignaturer og faktiske værktøjsbrugs-ID’er. Saml alle SSE-blokdeltaer; den første tekstblok er ikke hele outputtet.

Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter
FeltType
FeltidTypestring
FeltmodelTypestring
Feltcontent[]Typetext|thinking|tool_use|other content block
Feltstop_reasonTypestring|null
FeltusageTypeobject
Fejl og næste trin
SvarBetingelseNæste trin
Svar400 · invalid_request_errorBetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdiNæste trinRet de angivne felter før en ny oprettelsesanmodning.

Aliaser

Modelaliaser

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliaser for metodestier

/chat/completions

Relaterede kalder-ID’er

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-2.5-pro

google/gemini-2.5-pro

Google /google/gemini-2.5-pro
Model-ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Start

Gemini 2.5 Pro er Googles stabile tænkemodel til kompleks kode, matematik, STEM og analyse med lang kontekst. Den accepterer tekst, billeder, lyd, video og PDF og returnerer tekst med værktøjer og struktureret output. Det dynamiske ræsonnementsbudget understøtter 128–32.768 tokens og kan ikke slås helt fra.

Accepterede input
Tekst
Resultater
Tekst

Tilgængelig i Ailoot · input og metoder

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Inputtyper
text
Outputtyper
text
Outputformat
json eller SSE
FeltTypeKravVærdier og grænserStandard
FeltmodelTypestringKravPåkrævetVærdier og grænser
google/gemini-2.5-pro
Standard—
FeltmessagesTypemessage[]KravPåkrævetVærdier og grænser
Minimumsantal elementer: 1
Standard—
Feltmessages[].roleTypestringKravPåkrævetVærdier og grænser
Eksempler: system, user, assistant, tool, function
Betingelser: Disse roller er eksplicit repræsenteret i kildekodens kompatibilitetstyper; modellens præcise rollesæt er fortsat modelspecifikt.
Afhænger af modellen
Standard—
Feltmessages[].contentTypestring|content_part[]|nullKravValgfritVærdier og grænserStandard—
Feltmessages[].tool_callsTypetool_call[]KravValgfritVærdier og grænserStandard—
Feltmessages[].tool_call_idTypestringKravValgfritVærdier og grænser
Gælder når: role=tool; brug det faktisk returnerede ID
Standard—
Feltmessages[].nameTypestringKravValgfritVærdier og grænserStandard—
Feltmessages[].reasoning_contentTypestringKravValgfritVærdier og grænser
Gælder når: Send det faktisk returnerede ræsonnement tilbage, når modellen bruger det
Standard—
Feltmessages[].reasoning_detailsTypeobject|arrayKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltmax_tokensTypeintegerKravValgfritVærdier og grænser
Minimum: 1
Afhænger af modellen
Standard—
Feltmax_completion_tokensTypeintegerKravValgfritVærdier og grænser
Minimum: 1
Afhænger af modellen
Standard—
FeltstreamTypebooleanKravValgfritVærdier og grænserStandardfalse
Feltstream_options.include_usageTypebooleanKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FelttemperatureTypenumberKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Felttop_pTypenumberKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltstopTypestring|string[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FelttoolsTypefunction_tool[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Felttools[].typeTypestringKravValgfritVærdier og grænser
function
Afhænger af modellen
Standard—
Felttools[].function.nameTypestringKravPåkrævetVærdier og grænser
Gælder når: funktionsværktøj angivet
Standard—
Felttools[].function.descriptionTypestringKravValgfritVærdier og grænserStandard—
Felttools[].function.parametersTypeJSON_schemaKravValgfritVærdier og grænserStandard—
Felttool_choiceTypestring|objectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltparallel_tool_callsTypebooleanKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltresponse_formatTypeobjectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltreasoning_effortTypestringKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltreasoningTypeobjectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltservice_tierTypestringKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltinstructionsTypestringKravValgfritVærdier og grænser
Kompatibilitetsfelt
Standard—
FeltfunctionsTypefunction[]KravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltfunction_callTypestring|objectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
Feltprompt_cache_optionsTypeobjectKravValgfritVærdier og grænser
Afhænger af modellen
Standard—
FeltmodalitiesTypestring[]KravValgfritVærdier og grænser
text
Standard—
FeltproviderTypeobjectKravValgfritVærdier og grænser
Betingelser: provider.options afvises på denne Ultra-tekstrute
Standard—
Feltcache_control.ttlTypestringKravValgfritVærdier og grænser
Betingelser: 1h afvises på de faktiske placeringer for promptcaching
Standard—
Kombinationer af inputmaterialer

Tekst · UTF8-tekst

messages[].content

Metodeparametre og livscyklus
ParameterKontrakt
Parametercontent_typeKontraktapplication/json
ParameterrequiredKontraktmodel, messages
Parametermaterial_typesKontrakttext
ParametermessagesKontraktbeskedarray med strukturen role/content
Parameterfile_materialKontraktfaktisk UTF-8-dokument indsat som bogstavelig tekst; intet fil-ID udledes
Parameteroptional_controlsKontraktstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeKontraktmodelspecifikt; brugerens funktionsværktøjer er forskellige fra hostede værktøjer
Parameteroutput_modalitiesKontrakttext
Parameterhosted_operationsKontraktfalse
Parametermultimodal_input_bindingKontraktnull

Livscyklus: synchronous_or_streamed

Send det præcise model-ID med messages.

Kontekstlængde er ikke et outputloft.

En tekstfil kan levere bogstavelig tekst; billed-, lyd- og filobjektinput kræver en præcis binding.

Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand
Standardpris Når hurtig tilstand er valgt
flex-tilstand
Standardpris Når flex-tilstanden er valgt
Maksimal ræsonneringsindsats
Standardpris Når default-justeringen anvendes ved maksimal ræsonneringsindsats
Priser for eksplicit caching
Ikke aktiveret Når der anmodes om eksplicit caching
Ræsonnementsoutput
Ræsonnement bruger den angivne delsats inden for det samlede output; medregn ikke disse tokens to gange. Når output indeholder ræsonnementstokens

Ailoot-takster

Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

KonfigurationTakstplanKonteksttokens, mere endKonteksttokens, op til og medBeløb
KonfigurationGrundtakster for tokensTakstplanGrundtakstKonteksttokens, mere end—Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
Output · Outputtokens fra ræsonnering $0.02 / 1K tokens
KonfigurationAnmodningslængde · niveau 1Takstplan—Konteksttokens, mere end0Konteksttokens, op til og med200.000Beløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
KonfigurationAnmodningslængde · niveau 2Takstplan—Konteksttokens, mere end200.000Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.005 / 1K tokens
Output · Outputtokens $0.03 / 1K tokens
Input · Cachelæsning $0.0005 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →

Eksempelanmodninger

Ailoot Ultra · OpenAI Chat

curlPython SDKPython-stream
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-2.5-pro", "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-2.5-pro',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-2.5-pro',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")

Hent og gem resultater

Ailoot Ultra · OpenAI Chat

json eller SSE

Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar hvert valg og dets indhold, værktøjskald og ræsonnement. Saml i SSE deltaer efter valg-/værktøjsindeks, og bevar den endelige afslutningsårsag og forbrugsoplysningerne.

Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter
FeltType
Feltchoices[].indexTypeinteger
Feltchoices[].message.contentTypestring|null
Feltchoices[].message.tool_callsTypetool_call[]
Feltchoices[].message.reasoning_contentTypestring
Feltchoices[].message.reasoning_detailsTypeobject|array
Feltchoices[].finish_reasonTypestring|null
FeltusageTypeobject
Fejl og næste trin
SvarBetingelseNæste trin
Svar400 · invalid_request_errorBetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdiNæste trinRet de angivne felter før en ny oprettelsesanmodning.

Aliaser

Modelaliaser

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliaser for metodestier

/chat/completions

Relaterede kalder-ID’er

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-2.5-pro

google/gemini-2.5-pro

Google /google/gemini-2.5-pro
Model-ID
  • gemini-2.5-pro
  • google/gemini-2.5-pro

Start

Gemini 2.5 Pro er Googles stabile tænkemodel til kompleks kode, matematik, STEM og analyse med lang kontekst. Den accepterer tekst, billeder, lyd, video og PDF og returnerer tekst med værktøjer og struktureret output. Det dynamiske ræsonnementsbudget understøtter 128–32.768 tokens og kan ikke slås helt fra.

Accepterede input
Tekst
Resultater
json · sse

Tilgængelig i Ailoot · input og metoder

Ailoot Ultra · Anthropic Messages POST /v1/messages
Inputtyper
text
Outputtyper
json, sse
Outputformat
JSON eller SSE
FeltTypeKravVærdier og grænserStandard
FeltmodelTypestringKravPåkrævetVærdier og grænser
google/gemini-2.5-pro
Standard—
FeltmessagesTypemessage[]KravPåkrævetVærdier og grænserStandard—
Feltmessages[].roleTypestringKravPåkrævetVærdier og grænser
user, assistant
Standard—
Feltmessages[].contentTypestringKravPåkrævetVærdier og grænserStandard—
Feltmax_tokensTypeintegerKravPåkrævetVærdier og grænserStandard—
FeltstreamTypebooleanKravValgfritVærdier og grænserStandardfalse
Kombinationer af inputmaterialer

Tekst · UTF-8-tekst

messages[].content som streng

Metodeparametre og livscyklus
ParameterKontrakt
Parametercontent_typeKontraktapplication/json
ParameterrequiredKontraktmodel, messages, max_tokens
Parameteroptional_controlsKontraktstream
Parametermaterial_typesKontrakttext
Parametertext_file_materialKontraktLæs det faktiske UTF-8-dokument, og indsæt teksten i det angivne input eller beskedens indholdsstreng.

Livscyklus: synchronous_or_streamed

Priser

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand
Standardpris Når hurtig tilstand er valgt
flex-tilstand
Standardpris Når flex-tilstanden er valgt
Maksimal ræsonneringsindsats
Standardpris Når default-justeringen anvendes ved maksimal ræsonneringsindsats
Priser for eksplicit caching
Ikke aktiveret Når der anmodes om eksplicit caching
Ræsonnementsoutput
Ræsonnement bruger den angivne delsats inden for det samlede output; medregn ikke disse tokens to gange. Når output indeholder ræsonnementstokens

Ailoot-takster

Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

KonfigurationTakstplanKonteksttokens, mere endKonteksttokens, op til og medBeløb
KonfigurationGrundtakster for tokensTakstplanGrundtakstKonteksttokens, mere end—Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
Output · Outputtokens fra ræsonnering $0.02 / 1K tokens
KonfigurationAnmodningslængde · niveau 1Takstplan—Konteksttokens, mere end0Konteksttokens, op til og med200.000Beløb
Input · Inputtokens $0.0025 / 1K tokens
Output · Outputtokens $0.02 / 1K tokens
Input · Cachelæsning $0.00025 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens
KonfigurationAnmodningslængde · niveau 2Takstplan—Konteksttokens, mere end200.000Konteksttokens, op til og medIngen øvre grænseBeløb
Input · Inputtokens $0.005 / 1K tokens
Output · Outputtokens $0.03 / 1K tokens
Input · Cachelæsning $0.0005 / 1K tokens
Input · Cacheskrivning $0.00075 / 1K tokens
Input · Cacheskrivning, 1 time — / 1K tokens

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →

Eksempelanmodninger

Ailoot Ultra · Anthropic Messages

Komplet minimalt requestbody i JSONcurl · brug dit UTF-8-dokumentPython · gem hele resultatet
{
  "model": "google/gemini-2.5-pro",
  "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-2.5-pro', '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-2.5-pro', '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))

Hent og gem resultater

Ailoot Ultra · Anthropic Messages

JSON eller SSE

Behold alle færdige resultater

Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.

Bevar alle indholdsblokke, ræsonnementssignaturer og faktiske værktøjsbrugs-ID’er. Saml alle SSE-blokdeltaer; den første tekstblok er ikke hele outputtet.

Hvis det oprindelige svar skal kontrolleres

Bevar anmodnings-/svar-ID’er og headere. Der leveres ingen generel URL til at hente tekstjob.

Svarfelter
FeltType
FeltidTypestring
FeltmodelTypestring
Feltcontent[]Typetext|thinking|tool_use|other content block
Feltstop_reasonTypestring|null
FeltusageTypeobject
Fejl og næste trin
SvarBetingelseNæste trin
Svar400 · invalid_request_errorBetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdiNæste trinRet de angivne felter før en ny oprettelsesanmodning.

Aliaser

Modelaliaser

Ailoot gemini-2.5-pro
Ailoot Ultra gemini-2.5-pro, google/gemini-2.5-pro

Aliaser for metodestier

/chat/completions

Relaterede kalder-ID’er

google/gemini-2.5-pro, gemini-2.5-pro, gemini-2.5-pro

FAQ · Google: Gemini 2.5 Pro
Hvilke input og resultater er tilgængelige?

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

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

POST /v1/chat/completions · gemini-2.5-pro: text → text

POST /v1/messages · gemini-2.5-pro: text → json, sse

POST /v1/chat/completions · google/gemini-2.5-pro: text → text

POST /v1/messages · google/gemini-2.5-pro: text → json, sse

Hvilke felter bruger anmodningen?

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

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

POST /v1/chat/completions · gemini-2.5-pro: model, messages, stream

POST /v1/messages · gemini-2.5-pro: model, messages, max_tokens, stream

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

POST /v1/messages · google/gemini-2.5-pro: model, messages, max_tokens, stream

Hvilke grænser gælder?

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

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

POST /v1/chat/completions · gemini-2.5-pro: messages.min_items: 1

POST /v1/chat/completions · google/gemini-2.5-pro: messages.min_items: 1

Flere oplysninger

Tilslut Ailoot til Claude Code, OpenCode, Hermes eller din egen applikation.

Virksomheden og dens projektportefølje

Virksomheden og dens projektportefølje: millioner af kunder; månedligt salg for milliarder.

Køb tokens med rabat.

Abonnementsrabat til regelmæssigt arbejde. Rabatkoder giver op til 50% på tokenkøb.

Abonnement
Vælg et abonnement med rabat til dine regelmæssige anmodninger.
Rabatkode på op til 50%
Indtast koden ved købet. Prisen genberegnes efter den aktuelle kampagne.
Udgifter i historikken
Model, tokens og beløb gemmes for hver anmodning.

Vælg abonnement · Se modelpriser

Tilslut API’et til produktet, du sælger.

SaaS, apps og bots efter Ailoots tilbudsvilkår og licensaftale. Anmod om en forhandlerlicens til videresalg.

Kommerciel applikation
Byg generering af tekst, billeder, video og lyd ind i tjenestens betalte funktioner.
Licens til forhandlere
Send projektbeskrivelse og adgangsmodel. Bed om skriftlige vilkår for anvendelse og videresalg.
Dokumenter på websitet
Tilbudsvilkår, licensaftale og politik for behandling af data kan læses før tilslutning.

Anmod om forhandlerlicens · Tilbudsvilkår og licensaftale