model

Google: Gemini 3.1 Pro Preview

Markdown · JSON

Google: Gemini 3.1 Pro Preview

Gemini 3.1 Pro Preview ialah model penaakulan multimodal Google untuk tugas perisian, algoritma dan pengetahuan yang kompleks. Model ini menerima teks, imej, audio, video dan PDF serta memulangkan teks atau kod, dengan alat dan output berstruktur. Tahap penaakulan Low, medium dan high memandu usaha; high ialah lalai yang didokumentasikan.

Tentang model

Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.

Gemini 3.1 Pro Preview ialah model teks berorientasikan penaakulan Google untuk tugas kompleks yang memerlukan kejuruteraan perisian, pembangunan algoritma atau sintesis bukti multimodal. Ia dibina berasaskan Gemini 3 Pro, menekankan penggunaan alat tepat, penaakulan lebih cekap dan pelaksanaan berbilang langkah yang boleh dipercayai. Teks, imej, audio, video dan PDF boleh menyumbang kepada jawapan bertulis, artifak kod atau hasil berstruktur.

Untuk tugasan pengekodan yang mencabar, berikan matlamat, bahan repositori berkaitan, tingkah laku diperhatikan dan kekangan yang perlu dikekalkan. Seluruh repositori kod boleh membekalkan konteks tugasan. Untuk semakan kontrak kod, minta model membandingkan cara dua modul mengendalikan kontrak data dikongsi, mengenal pasti ketidakpadanan dan mencadangkan pembetulan berfokus dengan rujukan kod sokongan. Output yang berguna membezakan analisis, pindaan cadangan dan bukti daripada sebarang pengesahan yang dilakukan oleh aplikasi yang disambungkan.

Bahan pelancaran menunjukkan penerangan visual berasaskan kod dan projek interaktif, termasuk output SVG beranimasi daripada taklimat teks. Ini ialah artifak kod, bukannya penjanaan imej raster. Taklimat jelas boleh menetapkan perkara yang perlu diterangkan, cara visual perlu berfungsi dan data yang perlu diwakilinya. Semak kod terhasil dan pemaparannya berdasarkan keperluan itu. Untuk tugas sintesis data, bekalkan sumber sebenar dan minta satu paparan yang mengekalkan hubungan serta batasan atau syarat yang terkandung dalam sumber-sumber tersebut.

Aras pemikiran yang didokumenkan ialah low, medium dan high, dengan high sebagai lalai 3.1 Pro Preview. Pemikiran tidak boleh dinyahaktifkan sepenuhnya dalam profil Pro ini. Pilih usaha lebih rendah untuk jawapan terbatas dan lebih banyak penaakulan untuk kerja berbilang langkah yang sukar, sambil meninggalkan peruntukan output mencukupi bagi artifak akhir. Had output kecil boleh mengganggu penaakulan sebelum jawapan akhir yang boleh digunakan muncul. Panduan pemikiran memisahkan ringkasan penaakulan daripada proses dalaman penuh dan menerangkan kepentingan konteks tandatangan pemikiran perbualan.

Jadual Preview khusus menyenaraikan pemanggilan fungsi, pelaksanaan kod, pembumian carian, pembumian Maps, konteks URL dan output berstruktur. Ia mengehadkan File Search kepada AI Studio. Berikan tujuan fungsi dan takrif parameter serta teruskan berdasarkan hasil sebenar yang dikembalikan. Profil Custom Tools Preview berasingan dioptimumkan untuk mengutamakan alat tersuai dan bash; ia ialah titik hujung pengeluar bernama yang berbeza, jadi pengkhususan itu tidak sepatutnya dianggap secara senyap sebagai sifat setiap permintaan 3.1 Pro. Pilih skema hasil berstruktur apabila tugas memerlukan rekod ditetapkan, bukannya prosa bebas.

Untuk analisis multimodal, kenal pasti halaman, visual, selang rakaman atau peristiwa video yang berkaitan. Untuk analisis dokumen, bandingkan rajah dengan spesifikasi bertulisnya dan kembalikan setiap perbezaan bersama petikan sokongan. Sumber pertuturan boleh menyumbang transkrip atau tafsiran dalam teks. Kekalkan rujukan sumber bagi kesimpulan yang perlu disemak, dan pisahkan perkara yang kelihatan atau dinyatakan daripada perkara yang disimpulkan. Output profil ini kekal sebagai teks, termasuk kod; penjanaan imej atau pertuturan asal bukan sebahagian jadual keupayaan khususnya.

Kad asal 3.1 Pro menetapkan konteks sehingga 1M dan output teks 64K, dan jadual API Preview khusus memberikan 1,048,576 token input serta 65,536 token output. Masukkan arahan, sejarah perbualan dan media dalam belanjawan input. Cache dan pemprosesan kelompok didokumenkan, dengan pilihan Flex serta Priority turut disenaraikan bagi profil pengeluar. Untuk beberapa item bebas, tetapkan output wajib dan simpan setiap pengecam sumber, daripada menggabungkan bukti tidak berkaitan menjadi satu jawapan yang tidak boleh dijejaki.

Edisi Preview bernama kekal berbeza daripada profil Custom Tools Pro dan keluaran Flash atau Pro kemudian. Kekuatannya berkaitan penaakulan kompleks, pengekodan dan sintesis bukti; artifak akhir masih perlu disemak berdasarkan sumber serta hasil alat sebenar. Kekalkan kekaburan belum selesai apabila maklumat dibekalkan tidak menyokong kesimpulan pasti. Hasil yang berguna ialah jawapan, kod atau rekod yang disokong dan diminta tugas, dengan bukti mencukupi untuk menilai batasan praktikalnya.

Tugas praktikal

Tugas praktikal

Contoh teknikal dalam bahasa Inggeris

Review a cross-module date contract

Review this contract mismatch. Producer emits {due_date: "2026-11-03"}; consumer reads record.dueDate and displays "No date" when missing. Existing stored records use due_date. Propose the smallest compatible correction and tests for both present and absent dates. Preserve the producer field and do not add a second stored field.

Hasil yang dijangka

A short mismatch analysis, a focused consumer patch and tests covering the stored field and missing-value behavior.

Semak hasil

Check that the patch reads due_date without changing persisted records or treating an absent date as a valid one.
Ailoot · Anthropic Messages POST /v1/messages gemini-3.1-pro-preview

gemini-3.1-pro-preview

Google /gemini-3.1-pro-preview

Pengenalan

Gemini 3.1 Pro Preview ialah model penaakulan multimodal Google untuk tugas perisian, algoritma dan pengetahuan yang kompleks. Model ini menerima teks, imej, audio, video dan PDF serta memulangkan teks atau kod, dengan alat dan output berstruktur. Tahap penaakulan Low, medium dan high memandu usaha; high ialah lalai yang didokumentasikan.

Input yang diterima
Teks · Imej
Hasil
Teks

Tersedia di Ailoot · input & kaedah

Ailoot · Anthropic Messages POST /v1/messages
Input
text, image
Output
text
Konteks
1,048,576 tokens
Output maksimum
65,536 tokens
Format output
json atau SSE
MedanJenisKeperluanNilai & hadLalai
MedanmodelJenisstringKeperluanDiperlukanNilai & had
gemini-3.1-pro-preview
Lalai—
MedanmessagesJenismessage[]KeperluanDiperlukanNilai & had
Item minimum: 1
Lalai—
Medanmessages[].roleJenisstringKeperluanDiperlukanNilai & had
user, assistant
Lalai—
Medanmessages[].contentJenisstring|content_block[]KeperluanDiperlukanNilai & hadLalai—
MedansystemJenisstring|content_block[]KeperluanPilihanNilai & hadLalai—
Medanmax_tokensJenisintegerKeperluanDiperlukanNilai & had
Minimum: 1
Had terpakai pada: had maksimum tepat bagi model/kad yang dipilih
Lalai—
MedanstreamJenisbooleanKeperluanPilihanNilai & hadLalaifalse
MedantemperatureJenisnumberKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medantop_pJenisnumberKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanstop_sequencesJenisstring[]KeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedantoolsJenistool[]KeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medantools[].nameJenisstringKeperluanPilihanNilai & had
Terpakai apabila: alat dibekalkan
Lalai—
Medantools[].descriptionJenisstringKeperluanPilihanNilai & hadLalai—
Medantools[].input_schemaJenisJSON_schemaKeperluanPilihanNilai & hadLalai—
Medantool_choiceJenisobjectKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanthinking.typeJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanthinking.budget_tokensJenisintegerKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanoutput_config.effortJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedanmetadataJenisobjectKeperluanPilihanNilai & hadLalai—
Medancache_controlJenisobjectKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Gabungan bahan input

Teks · Teks UTF8

messages[].content atau blok type=text

Teks + imej

{type:image,source:{type:base64,media_type,data}} atau sumber dengan type=url

Parameter kaedah dan kitar hayat
ParameterKontrak
Parametermaterial_typesKontraktext, image
ParameterrequiredKontrakmodel, messages, max_tokens
Parameteroptional_controlsKontraknull
Parametercontent_typeKontrakapplication/json
Parametertext_file_materialKontrakkandungan UTF-8 sebenar dimasukkan sebagai teks; ID fail atau alamat URL (URLs) memerlukan sokongan tepat yang berasingan

Kitar hayat: exact retained published method

Struktur kaedah dan ID adalah tepat; keupayaan pembekal berasingan daripada penerimaan permintaan.

Pelan harga

Kadar kaedah Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Input
USD 0.002 / 1K
Output
USD 0.012 / 1K
Bacaan cache
USD 0.0002 / 1K

Harga mengikut panjang permintaan · Anthropic Messages

Saiz permintaan, tokenInputOutputBacaan cachePenulisan cacheCache 5 minitCache 1 jam
Saiz permintaan, token(0; 200,000]InputUSD 0.002OutputUSD 0.012Bacaan cacheUSD 0.0002Penulisan cacheAsas: —Cache 5 minitAsas: —Cache 1 jamAsas: —
Saiz permintaan, token(200,000; ∞)InputUSD 0.004OutputUSD 0.018Bacaan cacheUSD 0.0004Penulisan cacheAsas: —Cache 5 minitAsas: —Cache 1 jamAsas: —

Kadar dalam USD setiap 1K token. Jika tiada kadar ditetapkan, kadar asas kaedah ini diwarisi; «—» bermaksud tiada kadar asas ditetapkan.

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →

Butiran tarif rujukan

Jadual rujukan peringkat model tidak mengubah pemilihan kaedah, sebut harga atau caj. Caj aktif menggunakan kadar kaedah Ailoot yang dipilih.

Jadual rujukan model

Harga mengikut konfigurasi

Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.

KonfigurasiJadual kadarToken konteks, melebihiToken konteks, sehingga dan termasukCaj
KonfigurasiOpenAI Chat · Kadar asas tokenJadual kadarKadar asasToken konteks, melebihi—Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
Output · Token keluaran penaakulan $0.024 / 1K token
KonfigurasiOpenAI Chat · Tahap 1 berdasarkan panjang permintaanJadual kadar—Token konteks, melebihi0Token konteks, sehingga dan termasuk200,000Caj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
KonfigurasiOpenAI Chat · Tahap 2 berdasarkan panjang permintaanJadual kadar—Token konteks, melebihi200,000Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.008 / 1K token
Output · Token output $0.036 / 1K token
Input · Bacaan cache $0.0008 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Kadar asas tokenJadual kadarKadar asasToken konteks, melebihi—Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
Output · Token keluaran penaakulan $0.024 / 1K token
KonfigurasiAnthropic Messages · Tahap 1 berdasarkan panjang permintaanJadual kadar—Token konteks, melebihi0Token konteks, sehingga dan termasuk200,000Caj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tahap 2 berdasarkan panjang permintaanJadual kadar—Token konteks, melebihi200,000Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.008 / 1K token
Output · Token output $0.036 / 1K token
Input · Bacaan cache $0.0008 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token

Contoh permintaan

Ailoot · Anthropic Messages

Contoh teksInput, imejPython SDKNode.js SDKPenstriman Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gemini-3.1-pro-preview", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gemini-3.1-pro-preview", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="gemini-3.1-pro-preview",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

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

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

saveResult(msg);
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='gemini-3.1-pro-preview',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Terima dan simpan hasil

Ailoot · Anthropic Messages

json atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.

Kekalkan semua blok kandungan, tandatangan penaakulan dan ID penggunaan alat sebenar. Gabungkan semua delta blok SSE; blok teks pertama bukan keseluruhan output.

Jika respons asal perlu disemak

Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.

Medan respons
MedanJenis
MedanidJenisstring
MedanmodelJenisstring
Medancontent[]Jenistext|thinking|tool_use|other content block
Medanstop_reasonJenisstring|null
MedanusageJenisobject
Ralat dan langkah seterusnya
ResponsSyaratLangkah seterusnya
Respons400 · invalid_request_errorSyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sahLangkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.

Alias

Alias model

Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview
~google/gemini-pro-latest

Alias laluan kaedah

/chat/completions

ID pemanggil berkaitan

google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview

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

gemini-3.1-pro-preview

Google /gemini-3.1-pro-preview

Pengenalan

Gemini 3.1 Pro Preview ialah model penaakulan multimodal Google untuk tugas perisian, algoritma dan pengetahuan yang kompleks. Model ini menerima teks, imej, audio, video dan PDF serta memulangkan teks atau kod, dengan alat dan output berstruktur. Tahap penaakulan Low, medium dan high memandu usaha; high ialah lalai yang didokumentasikan.

Input yang diterima
Teks · Imej
Hasil
Teks

Tersedia di Ailoot · input & kaedah

Ailoot · Gemini generateContent POST /v1beta/models/{model}:generateContent
Input
text, image
Output
text
Konteks
1,048,576 tokens
Output maksimum
65,536 tokens
Format output
json atau penstriman yang disokong
MedanJenisKeperluanNilai & hadLalai
Medanpath.modelJenisstringKeperluanDiperlukanNilai & had
gemini-3.1-pro-preview
Lalai—
MedancontentsJeniscontent[]KeperluanDiperlukanNilai & had
Item minimum: 1
Lalai—
Medancontents[].roleJenisstringKeperluanPilihanNilai & had
user, model
Lalai—
Medancontents[].partsJenispart[]KeperluanDiperlukanNilai & hadLalai—
MedansystemInstructionJeniscontentKeperluanPilihanNilai & hadLalai—
MedangenerationConfig.maxOutputTokensJenisintegerKeperluanPilihanNilai & had
Minimum: 1
Bergantung pada model
Lalai—
MedangenerationConfig.temperatureJenisnumberKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedangenerationConfig.topPJenisnumberKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedangenerationConfig.topKJenisintegerKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedangenerationConfig.stopSequencesJenisstring[]KeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedangenerationConfig.thinkingConfig.includeThoughtsJenisbooleanKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedangenerationConfig.thinkingConfig.thinkingBudgetJenisintegerKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medantools[].functionDeclarationsJenisfunction_declaration[]KeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedantoolConfig.functionCallingConfig.modeJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedansafetySettingsJenisobject[]KeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedansessionIdJenisstringKeperluanPilihanNilai & hadLalai—
Gabungan bahan input

Teks · Teks UTF8

contents[].parts[].text

Teks + imej

parts[].inlineData={mimeType,data}

Parameter kaedah dan kitar hayat
ParameterKontrak
Parametermaterial_typesKontraktext, image
ParameterrequiredKontrakcontents
Parameteroptional_controlsKontraknull
Parametercontent_typeKontrakapplication/json
Parametertext_file_materialKontrakkandungan UTF-8 sebenar dimasukkan sebagai teks; ID fail atau alamat URL (URLs) memerlukan sokongan tepat yang berasingan

Kitar hayat: exact retained published method

Struktur kaedah dan ID adalah tepat; keupayaan pembekal berasingan daripada penerimaan permintaan.

Pelan harga

Kadar kaedah Ailoot

Ailoot Gemini generateContentPOST /v1beta/models/{model}:generateContent
Input
USD 0.002 / 1K
Output
USD 0.012 / 1K
Bacaan cache
USD 0.0002 / 1K

Harga mengikut panjang permintaan · Gemini generateContent

Saiz permintaan, tokenInputOutputBacaan cachePenulisan cacheCache 5 minitCache 1 jam
Saiz permintaan, token(0; 200,000]InputUSD 0.002OutputUSD 0.012Bacaan cacheUSD 0.0002Penulisan cacheAsas: —Cache 5 minitAsas: —Cache 1 jamAsas: —
Saiz permintaan, token(200,000; ∞)InputUSD 0.004OutputUSD 0.018Bacaan cacheUSD 0.0004Penulisan cacheAsas: —Cache 5 minitAsas: —Cache 1 jamAsas: —

Kadar dalam USD setiap 1K token. Jika tiada kadar ditetapkan, kadar asas kaedah ini diwarisi; «—» bermaksud tiada kadar asas ditetapkan.

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →

Butiran tarif rujukan

Jadual rujukan peringkat model tidak mengubah pemilihan kaedah, sebut harga atau caj. Caj aktif menggunakan kadar kaedah Ailoot yang dipilih.

Jadual rujukan model

Harga mengikut konfigurasi

Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.

KonfigurasiJadual kadarToken konteks, melebihiToken konteks, sehingga dan termasukCaj
KonfigurasiOpenAI Chat · Kadar asas tokenJadual kadarKadar asasToken konteks, melebihi—Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
Output · Token keluaran penaakulan $0.024 / 1K token
KonfigurasiOpenAI Chat · Tahap 1 berdasarkan panjang permintaanJadual kadar—Token konteks, melebihi0Token konteks, sehingga dan termasuk200,000Caj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
KonfigurasiOpenAI Chat · Tahap 2 berdasarkan panjang permintaanJadual kadar—Token konteks, melebihi200,000Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.008 / 1K token
Output · Token output $0.036 / 1K token
Input · Bacaan cache $0.0008 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Kadar asas tokenJadual kadarKadar asasToken konteks, melebihi—Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
Output · Token keluaran penaakulan $0.024 / 1K token
KonfigurasiAnthropic Messages · Tahap 1 berdasarkan panjang permintaanJadual kadar—Token konteks, melebihi0Token konteks, sehingga dan termasuk200,000Caj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tahap 2 berdasarkan panjang permintaanJadual kadar—Token konteks, melebihi200,000Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.008 / 1K token
Output · Token output $0.036 / 1K token
Input · Bacaan cache $0.0008 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token

Contoh permintaan

Ailoot · Gemini generateContent

Contoh teksInput, imejPython SDKNode.js SDKPenstriman Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"contents": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["contents"]=[{"role":"user","parts":[{"text":"Summarize this material and quote supporting source passages.\n\n"+text}]}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1beta/models/gemini-3.1-pro-preview:generateContent \
  -H "x-goog-api-key: $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"contents": [{"role": "user", "parts": [{"text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["contents"][0]["parts"].append({"inlineData":{"mimeType":mime,"data":b64}})
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1beta/models/gemini-3.1-pro-preview:generateContent \
  -H "x-goog-api-key: $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
from google import genai
from google.genai import types
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = genai.Client(
    api_key=os.environ["AILOOT_API_KEY"],
    http_options=types.HttpOptions(base_url="https://api.ailoot.ai"),
)
resp = client.models.generate_content(model="gemini-3.1-pro-preview", contents="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_json_dict())
import { GoogleGenAI } from "@google/genai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const ai = new GoogleGenAI({ apiKey: process.env.AILOOT_API_KEY, httpOptions: { baseUrl: "https://api.ailoot.ai" } });
const resp = await ai.models.generateContent({ model: "gemini-3.1-pro-preview", contents: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

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

saveResult(resp);
from google import genai
from google.genai import types
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=genai.Client(api_key=os.environ["AILOOT_API_KEY"],http_options=types.HttpOptions(base_url="https://api.ailoot.ai"))
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

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

Terima dan simpan hasil

Ailoot · Gemini generateContent

json atau penstriman yang disokong

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.

Kekalkan semua calon dan bahagian, termasuk panggilan fungsi, tandatangan pemikiran dan data penggunaan; gabungkan cebisan strim mengikut urutan.

Jika respons asal perlu disemak

Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.

Medan respons
MedanJenis
MedanresponseIdJenisstring
MedanmodelVersionJenisstring
Medancandidates[].content.parts[]Jenistext|inlineData|functionCall|other part
Medancandidates[].finishReasonJenisstring
MedanusageMetadataJenisobject
Ralat dan langkah seterusnya
ResponsSyaratLangkah seterusnya
Respons400 · invalid_request_errorSyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sahLangkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.

Alias

Alias model

Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview
~google/gemini-pro-latest

Alias laluan kaedah

/chat/completions

ID pemanggil berkaitan

google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview

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

gemini-3.1-pro-preview

Google /gemini-3.1-pro-preview
ID model
  • gemini-3.1-pro-preview
  • google/gemini-3.1-pro-preview

Pengenalan

Gemini 3.1 Pro Preview ialah model penaakulan multimodal Google untuk tugas perisian, algoritma dan pengetahuan yang kompleks. Model ini menerima teks, imej, audio, video dan PDF serta memulangkan teks atau kod, dengan alat dan output berstruktur. Tahap penaakulan Low, medium dan high memandu usaha; high ialah lalai yang didokumentasikan.

Input yang diterima
Teks
Hasil
Teks

Tersedia di Ailoot · input & kaedah

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Input
text
Output
text
Format output
json atau SSE
MedanJenisKeperluanNilai & hadLalai
MedanmodelJenisstringKeperluanDiperlukanNilai & had
gemini-3.1-pro-preview
Lalai—
MedanmessagesJenismessage[]KeperluanDiperlukanNilai & had
Item minimum: 1
Lalai—
Medanmessages[].roleJenisstringKeperluanDiperlukanNilai & had
Bergantung pada model
Lalai—
Medanmessages[].contentJenisstringKeperluanPilihanNilai & had
Terpakai apabila: Perbualan teks
Lalai—
MedanstreamJenisbooleanKeperluanPilihanNilai & hadLalaifalse
Gabungan bahan input

Teks · Teks UTF8

messages[].content

Parameter kaedah dan kitar hayat
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakmodel, messages
Parametermaterial_typesKontraktext
ParametermessagesKontraktatasusunan mesej dengan struktur role/content
Parameterfile_materialKontrakdokumen UTF-8 sebenar dimasukkan sebagai teks literal; ID fail tidak diandaikan
Parameteroptional_controlsKontrakstream
Parametercontrol_scopeKontrakPerbualan teks; stream ialah nilai boolean dengan false sebagai lalai.
Parameteroutput_modalitiesKontraktext
Parameterhosted_operationsKontrakfalse
Parametermultimodal_input_bindingKontraknull

Alias kaedah: /chat/completions

Kitar hayat: synchronous_or_streamed

Hantar ID model yang tepat bersama messages.

Panjang konteks bukan had output.

Fail teks boleh membekalkan teks literal; input imej/audio/objek fail memerlukan pengikatan tepat.

Pelan harga

Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.

Mod pantas
Kadar standard Apabila mod pantas dipilih
Mod flex
Kadar standard Apabila mod flex dipilih
Usaha penaakulan maksimum
Kadar standard Apabila usaha penaakulan maksimum menggunakan pelarasan default
Usaha penaakulan · high
Kadar standard Apabila usaha penaakulan ditetapkan kepada high
Usaha penaakulan · low
Kadar standard Apabila usaha penaakulan ditetapkan kepada low
Usaha penaakulan · medium
Kadar standard Apabila usaha penaakulan ditetapkan kepada medium
Harga cache eksplisit
Tidak diaktifkan Apabila cache eksplisit diminta
Output penaakulan
Penaakulan menggunakan kadar subset yang disenaraikan dalam output terkumpul; jangan tambah token tersebut dua kali. Apabila output merangkumi token penaakulan

Kadar Ailoot

Harga mengikut konfigurasi

Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.

KonfigurasiJadual kadarToken konteks, melebihiToken konteks, sehingga dan termasukCaj
KonfigurasiKadar asas tokenJadual kadarKadar asasToken konteks, melebihi—Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
Output · Token keluaran penaakulan $0.024 / 1K token
KonfigurasiTahap panjang permintaan 1Jadual kadar—Token konteks, melebihi0Token konteks, sehingga dan termasuk200,000Caj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
KonfigurasiTahap panjang permintaan 2Jadual kadar—Token konteks, melebihi200,000Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.008 / 1K token
Output · Token output $0.036 / 1K token
Input · Bacaan cache $0.0008 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →

Contoh permintaan

Ailoot Ultra · OpenAI Chat

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

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="gemini-3.1-pro-preview", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))

Terima dan simpan hasil

Ailoot Ultra · OpenAI Chat

json atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.

Kekalkan setiap pilihan jawapan bersama kandungan, panggilan alat dan penaakulannya. Dalam SSE, gabungkan delta mengikut indeks pilihan jawapan/alat dan kekalkan sebab penamatan akhir serta data penggunaan.

Jika respons asal perlu disemak

Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.

Medan respons
MedanJenis
Medanchoices[].indexJenisinteger
Medanchoices[].message.contentJenisstring|null
Medanchoices[].message.tool_callsJenistool_call[]
Medanchoices[].message.reasoning_contentJenisstring
Medanchoices[].message.reasoning_detailsJenisobject|array
Medanchoices[].finish_reasonJenisstring|null
MedanusageJenisobject
Ralat dan langkah seterusnya
ResponsSyaratLangkah seterusnya
Respons400 · invalid_request_errorSyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sahLangkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.

Alias

Alias model

Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview
~google/gemini-pro-latest

Alias laluan kaedah

/chat/completions

ID pemanggil berkaitan

google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview

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

gemini-3.1-pro-preview

Google /gemini-3.1-pro-preview
ID model
  • gemini-3.1-pro-preview
  • google/gemini-3.1-pro-preview

Pengenalan

Gemini 3.1 Pro Preview ialah model penaakulan multimodal Google untuk tugas perisian, algoritma dan pengetahuan yang kompleks. Model ini menerima teks, imej, audio, video dan PDF serta memulangkan teks atau kod, dengan alat dan output berstruktur. Tahap penaakulan Low, medium dan high memandu usaha; high ialah lalai yang didokumentasikan.

Input yang diterima
Teks
Hasil
json · sse

Tersedia di Ailoot · input & kaedah

Ailoot Ultra · Anthropic Messages POST /v1/messages
Input
text
Output
json, sse
Format output
JSON atau SSE
MedanJenisKeperluanNilai & hadLalai
MedanmodelJenisstringKeperluanDiperlukanNilai & had
gemini-3.1-pro-preview
Lalai—
MedanmessagesJenismessage[]KeperluanDiperlukanNilai & hadLalai—
Medanmessages[].roleJenisstringKeperluanDiperlukanNilai & had
user, assistant
Lalai—
Medanmessages[].contentJenisstringKeperluanDiperlukanNilai & hadLalai—
Medanmax_tokensJenisintegerKeperluanDiperlukanNilai & hadLalai—
MedanstreamJenisbooleanKeperluanPilihanNilai & hadLalaifalse
Gabungan bahan input

Teks · Teks UTF-8

rentetan messages[].content

Parameter kaedah dan kitar hayat
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakmodel, messages, max_tokens
Parameteroptional_controlsKontrakstream
Parametermaterial_typesKontraktext
Parametertext_file_materialKontrakBaca dokumen UTF-8 sebenar dan letakkan teksnya dalam rentetan input atau kandungan mesej yang ditunjukkan.

Kitar hayat: synchronous_or_streamed

Pelan harga

Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.

Mod pantas
Kadar standard Apabila mod pantas dipilih
Mod flex
Kadar standard Apabila mod flex dipilih
Usaha penaakulan maksimum
Kadar standard Apabila usaha penaakulan maksimum menggunakan pelarasan default
Usaha penaakulan · high
Kadar standard Apabila usaha penaakulan ditetapkan kepada high
Usaha penaakulan · low
Kadar standard Apabila usaha penaakulan ditetapkan kepada low
Usaha penaakulan · medium
Kadar standard Apabila usaha penaakulan ditetapkan kepada medium
Harga cache eksplisit
Tidak diaktifkan Apabila cache eksplisit diminta
Output penaakulan
Penaakulan menggunakan kadar subset yang disenaraikan dalam output terkumpul; jangan tambah token tersebut dua kali. Apabila output merangkumi token penaakulan

Kadar Ailoot

Harga mengikut konfigurasi

Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.

KonfigurasiJadual kadarToken konteks, melebihiToken konteks, sehingga dan termasukCaj
KonfigurasiKadar asas tokenJadual kadarKadar asasToken konteks, melebihi—Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
Output · Token keluaran penaakulan $0.024 / 1K token
KonfigurasiTahap panjang permintaan 1Jadual kadar—Token konteks, melebihi0Token konteks, sehingga dan termasuk200,000Caj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
KonfigurasiTahap panjang permintaan 2Jadual kadar—Token konteks, melebihi200,000Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.008 / 1K token
Output · Token output $0.036 / 1K token
Input · Bacaan cache $0.0008 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →

Contoh permintaan

Ailoot Ultra · Anthropic Messages

Badan JSON minimum yang lengkapcurl · gunakan dokumen UTF-8 andaPython · simpan hasil lengkap
{
  "model": "gemini-3.1-pro-preview",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-3.1-pro-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-3.1-pro-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))

Terima dan simpan hasil

Ailoot Ultra · Anthropic Messages

JSON atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.

Kekalkan semua blok kandungan, tandatangan penaakulan dan ID penggunaan alat sebenar. Gabungkan semua delta blok SSE; blok teks pertama bukan keseluruhan output.

Jika respons asal perlu disemak

Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.

Medan respons
MedanJenis
MedanidJenisstring
MedanmodelJenisstring
Medancontent[]Jenistext|thinking|tool_use|other content block
Medanstop_reasonJenisstring|null
MedanusageJenisobject
Ralat dan langkah seterusnya
ResponsSyaratLangkah seterusnya
Respons400 · invalid_request_errorSyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sahLangkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.

Alias

Alias model

Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview
~google/gemini-pro-latest

Alias laluan kaedah

/chat/completions

ID pemanggil berkaitan

google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview

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

google/gemini-3.1-pro-preview

Google /google/gemini-3.1-pro-preview
ID model
  • gemini-3.1-pro-preview
  • google/gemini-3.1-pro-preview

Pengenalan

Gemini 3.1 Pro Preview ialah model penaakulan multimodal Google untuk tugas perisian, algoritma dan pengetahuan yang kompleks. Model ini menerima teks, imej, audio, video dan PDF serta memulangkan teks atau kod, dengan alat dan output berstruktur. Tahap penaakulan Low, medium dan high memandu usaha; high ialah lalai yang didokumentasikan.

Input yang diterima
Teks
Hasil
Teks

Tersedia di Ailoot · input & kaedah

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Input
text
Output
text
Format output
json atau SSE
MedanJenisKeperluanNilai & hadLalai
MedanmodelJenisstringKeperluanDiperlukanNilai & had
google/gemini-3.1-pro-preview
Lalai—
MedanmessagesJenismessage[]KeperluanDiperlukanNilai & had
Item minimum: 1
Lalai—
Medanmessages[].roleJenisstringKeperluanDiperlukanNilai & had
Contoh: system, user, assistant, tool, function
Syarat: Peranan ini diwakili secara eksplisit oleh jenis keserasian dalam kod sumber; set peranan model yang tepat kekal khusus untuk setiap model.
Bergantung pada model
Lalai—
Medanmessages[].contentJenisstring|content_part[]|nullKeperluanPilihanNilai & hadLalai—
Medanmessages[].tool_callsJenistool_call[]KeperluanPilihanNilai & hadLalai—
Medanmessages[].tool_call_idJenisstringKeperluanPilihanNilai & had
Terpakai apabila: role=tool; gunakan ID sebenar yang dipulangkan
Lalai—
Medanmessages[].nameJenisstringKeperluanPilihanNilai & hadLalai—
Medanmessages[].reasoning_contentJenisstringKeperluanPilihanNilai & had
Terpakai apabila: Hantar semula penaakulan sebenar yang dipulangkan apabila model ini menggunakannya
Lalai—
Medanmessages[].reasoning_detailsJenisobject|arrayKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanmax_tokensJenisintegerKeperluanPilihanNilai & had
Minimum: 1
Bergantung pada model
Lalai—
Medanmax_completion_tokensJenisintegerKeperluanPilihanNilai & had
Minimum: 1
Bergantung pada model
Lalai—
MedanstreamJenisbooleanKeperluanPilihanNilai & hadLalaifalse
Medanstream_options.include_usageJenisbooleanKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedantemperatureJenisnumberKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medantop_pJenisnumberKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedanstopJenisstring|string[]KeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedantoolsJenisfunction_tool[]KeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medantools[].typeJenisstringKeperluanPilihanNilai & had
function
Bergantung pada model
Lalai—
Medantools[].function.nameJenisstringKeperluanDiperlukanNilai & had
Terpakai apabila: alat fungsi dibekalkan
Lalai—
Medantools[].function.descriptionJenisstringKeperluanPilihanNilai & hadLalai—
Medantools[].function.parametersJenisJSON_schemaKeperluanPilihanNilai & hadLalai—
Medantool_choiceJenisstring|objectKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanparallel_tool_callsJenisbooleanKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanresponse_formatJenisobjectKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanreasoning_effortJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedanreasoningJenisobjectKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanservice_tierJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedaninstructionsJenisstringKeperluanPilihanNilai & had
Medan keserasian
Lalai—
MedanfunctionsJenisfunction[]KeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanfunction_callJenisstring|objectKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanprompt_cache_optionsJenisobjectKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedanmodalitiesJenisstring[]KeperluanPilihanNilai & had
text
Lalai—
MedanproviderJenisobjectKeperluanPilihanNilai & had
Syarat: provider.options ditolak pada laluan teks Ultra ini
Lalai—
Medancache_control.ttlJenisstringKeperluanPilihanNilai & had
Syarat: 1h ditolak pada lokasi cache prompt yang digunakan
Lalai—
Gabungan bahan input

Teks · Teks UTF8

messages[].content

Parameter kaedah dan kitar hayat
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakmodel, messages
Parametermaterial_typesKontraktext
ParametermessagesKontraktatasusunan mesej dengan struktur role/content
Parameterfile_materialKontrakdokumen UTF-8 sebenar dimasukkan sebagai teks literal; ID fail tidak diandaikan
Parameteroptional_controlsKontrakstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeKontrakkhusus model; alat fungsi pengguna berbeza daripada alat yang dihoskan
Parameteroutput_modalitiesKontraktext
Parameterhosted_operationsKontrakfalse
Parametermultimodal_input_bindingKontraknull

Kitar hayat: synchronous_or_streamed

Hantar ID model yang tepat bersama messages.

Panjang konteks bukan had output.

Fail teks boleh membekalkan teks literal; input imej/audio/objek fail memerlukan pengikatan tepat.

Pelan harga

Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.

Mod pantas
Kadar standard Apabila mod pantas dipilih
Mod flex
Kadar standard Apabila mod flex dipilih
Usaha penaakulan maksimum
Kadar standard Apabila usaha penaakulan maksimum menggunakan pelarasan default
Usaha penaakulan · high
Kadar standard Apabila usaha penaakulan ditetapkan kepada high
Usaha penaakulan · low
Kadar standard Apabila usaha penaakulan ditetapkan kepada low
Usaha penaakulan · medium
Kadar standard Apabila usaha penaakulan ditetapkan kepada medium
Harga cache eksplisit
Tidak diaktifkan Apabila cache eksplisit diminta
Output penaakulan
Penaakulan menggunakan kadar subset yang disenaraikan dalam output terkumpul; jangan tambah token tersebut dua kali. Apabila output merangkumi token penaakulan

Kadar Ailoot

Harga mengikut konfigurasi

Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.

KonfigurasiJadual kadarToken konteks, melebihiToken konteks, sehingga dan termasukCaj
KonfigurasiKadar asas tokenJadual kadarKadar asasToken konteks, melebihi—Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
Output · Token keluaran penaakulan $0.024 / 1K token
KonfigurasiTahap panjang permintaan 1Jadual kadar—Token konteks, melebihi0Token konteks, sehingga dan termasuk200,000Caj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
KonfigurasiTahap panjang permintaan 2Jadual kadar—Token konteks, melebihi200,000Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.008 / 1K token
Output · Token output $0.036 / 1K token
Input · Bacaan cache $0.0008 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →

Contoh permintaan

Ailoot Ultra · OpenAI Chat

curlPython SDKPenstriman Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-3.1-pro-preview", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='google/gemini-3.1-pro-preview',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='google/gemini-3.1-pro-preview',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Terima dan simpan hasil

Ailoot Ultra · OpenAI Chat

json atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.

Kekalkan setiap pilihan jawapan bersama kandungan, panggilan alat dan penaakulannya. Dalam SSE, gabungkan delta mengikut indeks pilihan jawapan/alat dan kekalkan sebab penamatan akhir serta data penggunaan.

Jika respons asal perlu disemak

Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.

Medan respons
MedanJenis
Medanchoices[].indexJenisinteger
Medanchoices[].message.contentJenisstring|null
Medanchoices[].message.tool_callsJenistool_call[]
Medanchoices[].message.reasoning_contentJenisstring
Medanchoices[].message.reasoning_detailsJenisobject|array
Medanchoices[].finish_reasonJenisstring|null
MedanusageJenisobject
Ralat dan langkah seterusnya
ResponsSyaratLangkah seterusnya
Respons400 · invalid_request_errorSyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sahLangkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.

Alias

Alias model

Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview
~google/gemini-pro-latest

Alias laluan kaedah

/chat/completions

ID pemanggil berkaitan

google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview

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

google/gemini-3.1-pro-preview

Google /google/gemini-3.1-pro-preview
ID model
  • gemini-3.1-pro-preview
  • google/gemini-3.1-pro-preview

Pengenalan

Gemini 3.1 Pro Preview ialah model penaakulan multimodal Google untuk tugas perisian, algoritma dan pengetahuan yang kompleks. Model ini menerima teks, imej, audio, video dan PDF serta memulangkan teks atau kod, dengan alat dan output berstruktur. Tahap penaakulan Low, medium dan high memandu usaha; high ialah lalai yang didokumentasikan.

Input yang diterima
Teks
Hasil
json · sse

Tersedia di Ailoot · input & kaedah

Ailoot Ultra · Anthropic Messages POST /v1/messages
Input
text
Output
json, sse
Format output
JSON atau SSE
MedanJenisKeperluanNilai & hadLalai
MedanmodelJenisstringKeperluanDiperlukanNilai & had
google/gemini-3.1-pro-preview
Lalai—
MedanmessagesJenismessage[]KeperluanDiperlukanNilai & hadLalai—
Medanmessages[].roleJenisstringKeperluanDiperlukanNilai & had
user, assistant
Lalai—
Medanmessages[].contentJenisstringKeperluanDiperlukanNilai & hadLalai—
Medanmax_tokensJenisintegerKeperluanDiperlukanNilai & hadLalai—
MedanstreamJenisbooleanKeperluanPilihanNilai & hadLalaifalse
Gabungan bahan input

Teks · Teks UTF-8

rentetan messages[].content

Parameter kaedah dan kitar hayat
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakmodel, messages, max_tokens
Parameteroptional_controlsKontrakstream
Parametermaterial_typesKontraktext
Parametertext_file_materialKontrakBaca dokumen UTF-8 sebenar dan letakkan teksnya dalam rentetan input atau kandungan mesej yang ditunjukkan.

Kitar hayat: synchronous_or_streamed

Pelan harga

Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.

Mod pantas
Kadar standard Apabila mod pantas dipilih
Mod flex
Kadar standard Apabila mod flex dipilih
Usaha penaakulan maksimum
Kadar standard Apabila usaha penaakulan maksimum menggunakan pelarasan default
Usaha penaakulan · high
Kadar standard Apabila usaha penaakulan ditetapkan kepada high
Usaha penaakulan · low
Kadar standard Apabila usaha penaakulan ditetapkan kepada low
Usaha penaakulan · medium
Kadar standard Apabila usaha penaakulan ditetapkan kepada medium
Harga cache eksplisit
Tidak diaktifkan Apabila cache eksplisit diminta
Output penaakulan
Penaakulan menggunakan kadar subset yang disenaraikan dalam output terkumpul; jangan tambah token tersebut dua kali. Apabila output merangkumi token penaakulan

Kadar Ailoot

Harga mengikut konfigurasi

Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.

KonfigurasiJadual kadarToken konteks, melebihiToken konteks, sehingga dan termasukCaj
KonfigurasiKadar asas tokenJadual kadarKadar asasToken konteks, melebihi—Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
Output · Token keluaran penaakulan $0.024 / 1K token
KonfigurasiTahap panjang permintaan 1Jadual kadar—Token konteks, melebihi0Token konteks, sehingga dan termasuk200,000Caj
Input · Token input $0.004 / 1K token
Output · Token output $0.024 / 1K token
Input · Bacaan cache $0.0004 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token
KonfigurasiTahap panjang permintaan 2Jadual kadar—Token konteks, melebihi200,000Token konteks, sehingga dan termasukTiada had atasCaj
Input · Token input $0.008 / 1K token
Output · Token output $0.036 / 1K token
Input · Bacaan cache $0.0008 / 1K token
Input · Penulisan cache $0.00075 / 1K token
Input · Penulisan cache, 1 jam — / 1K token

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →

Contoh permintaan

Ailoot Ultra · Anthropic Messages

Badan JSON minimum yang lengkapcurl · gunakan dokumen UTF-8 andaPython · simpan hasil lengkap
{
  "model": "google/gemini-3.1-pro-preview",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-3.1-pro-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-3.1-pro-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))

Terima dan simpan hasil

Ailoot Ultra · Anthropic Messages

JSON atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.

Kekalkan semua blok kandungan, tandatangan penaakulan dan ID penggunaan alat sebenar. Gabungkan semua delta blok SSE; blok teks pertama bukan keseluruhan output.

Jika respons asal perlu disemak

Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.

Medan respons
MedanJenis
MedanidJenisstring
MedanmodelJenisstring
Medancontent[]Jenistext|thinking|tool_use|other content block
Medanstop_reasonJenisstring|null
MedanusageJenisobject
Ralat dan langkah seterusnya
ResponsSyaratLangkah seterusnya
Respons400 · invalid_request_errorSyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sahLangkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.

Alias

Alias model

Ailoot gemini-3.1-pro-preview
Ailoot Ultra gemini-3.1-pro-preview, google/gemini-3.1-pro-preview
~google/gemini-pro-latest

Alias laluan kaedah

/chat/completions

ID pemanggil berkaitan

google/gemini-3.1-pro-preview, ~google/gemini-pro-latest, gemini-3.1-pro-preview, gemini-3.1-pro-preview

FAQ · Google: Gemini 3.1 Pro Preview
Apakah input dan hasil yang tersedia?

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

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

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

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

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

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

Apakah medan yang digunakan oleh permintaan?

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

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

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

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

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

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

Apakah had yang terpakai?

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

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

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

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

Butiran lanjut

Sambungkan Ailoot kepada Claude Code, OpenCode, Hermes atau aplikasi anda.

Syarikat dan portfolio projeknya

Syarikat dan portfolio projeknya: jutaan pelanggan; jualan bernilai berbilion setiap bulan.

Beli token dengan diskaun.

Diskaun langganan untuk penggunaan berkala. Kod promosi — sehingga 50% bagi pembelian token.

Langganan
Pilih pelan berdiskaun untuk permintaan berkala anda.
Kod promosi sehingga 50%
Masukkan kod semasa pembelian. Harga dikira semula mengikut promosi semasa.
Perbelanjaan dalam sejarah
Model, token dan jumlah disimpan bagi setiap permintaan.

Pilih langganan · Lihat harga model

Sambungkan API kepada produk yang anda jual.

SaaS, aplikasi dan bot — di bawah tawaran rasmi serta perjanjian lesen Ailoot. Untuk jualan semula, mohon lesen penjual semula.

Aplikasi komersial
Tambahkan penjanaan teks, imej, video dan audio pada ciri berbayar perkhidmatan anda.
Lesen penjual semula
Hantar keterangan projek dan susunan akses. Minta terma penggunaan serta jualan semula secara bertulis.
Dokumen pada laman
Tawaran, perjanjian lesen dan dasar pemprosesan data tersedia sebelum sambungan.

Mohon lesen penjual semula · Tawaran dan perjanjian lesen