Dekodim i gjatë

Dekodimi i gjatë bën që Gemini 4 Argon të gjenerojë mbi 64 000 kode për detyrat e arsyetimit të thellë, deri në dritaren kontekstuale të unifikuar prej 1 milion kodesh (1 048 576 kode të ndara në hyrje, mendim dhe dalje). Në Interactions API, ti aktivizon dekodimin e gjatë me ekzekutimin në sfond në mënyrë që serverët tanë të gjenerojnë dhe të kombinojnë automatikisht çdo hop prej 64 KB në një ndërveprim të vetëm.

Për sa kohë funksionon deshifrimi

Një telefonatë e vetme e modelit gjeneron deri në 64 000 kode. Kur një përgjigje ka nevojë për më shumë se 64 000 tokena, serveri e gjeneron atë në hapa prej 64 000 tokenash që vazhdojnë nga vendi ku ka ndaluar hapi i mëparshëm. Çdo kërcim shton një hap model_output në interaction.steps nën të njëjtin ID ndërveprimi, kështu që i bashkon ato hapa për të lexuar përgjigjen e plotë:

  1. Ti krijon një ndërveprim me background: true dhe max_output_tokens më të madh se 65 536, deri në 1 000 000.
  2. Serveri gjeneron kërcimin e parë, deri në 64 000 kode.
  3. Serveri nis hapin tjetër nga vendi ku u ndal i fundit dhe e përsërit derisa modeli të përfundojë ose të përdorë të gjitha max_output_tokens.
  4. Ti e anketon ndërveprimin ose e transmeton atë për të marrë rezultatin.

Python

import time
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-4-argon",
    input="Write a complete, rigorous proof of the prime number theorem.",
    background=True,
    generation_config={
        "max_output_tokens": 262144,
        "thinking_level": "high",
    },
)

while interaction.status in ("in_progress", "queued"):
    time.sleep(5)
    interaction = client.interactions.get(id=interaction.id)

# Each hop adds a model_output step, so join the text of all of them.
text = "".join(
    content.text
    for step in interaction.steps
    if step.type == "model_output"
    for content in step.content
    if content.type == "text"
)
print(text)
print("Status:", interaction.status)
print("Usage:", interaction.usage)

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

let interaction = await client.interactions.create({
  model: "gemini-4-argon",
  input: "Write a complete, rigorous proof of the prime number theorem.",
  background: true,
  generation_config: {
    max_output_tokens: 262144,
    thinking_level: "high",
  },
});

while (interaction.status === "in_progress" || interaction.status === "queued") {
  await new Promise((resolve) => setTimeout(resolve, 5000));
  interaction = await client.interactions.get(interaction.id);
}

// Each hop adds a model_output step, so join the text of all of them.
const text = interaction.steps
  .filter((step) => step.type === "model_output")
  .flatMap((step) => step.content ?? [])
  .filter((content) => content.type === "text")
  .map((content) => content.text)
  .join("");
console.log(text);
console.log("Status:", interaction.status);
console.log("Usage:", interaction.usage);

QETËSI

# 1. Create the background interaction. It returns an ID right away.
ID=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-4-argon",
    "input": "Write a complete, rigorous proof of the prime number theorem.",
    "background": true,
    "generation_config": {"max_output_tokens": 262144, "thinking_level": "high"}
  }' | jq -r '.id')

# 2. Poll until the status is no longer in_progress or queued.
#    The REST response has no output_text field, so join the text of every model_output step.
while true; do
  RESP=$(curl -s "https://generativelanguage.googleapis.com/v1beta/interactions/$ID" \
    -H "x-goog-api-key: $GEMINI_API_KEY")
  STATUS=$(echo "$RESP" | jq -r '.status')
  if [[ "$STATUS" != "in_progress" && "$STATUS" != "queued" ]]; then
    echo "$RESP" | jq -r '[.steps[]? | select(.type == "model_output") | .content[]? | select(.type == "text") | .text] | join("")'
    echo "$RESP" | jq '{status, usage}'
    break
  fi
  sleep 5
done

Kufijtë e daljes

Ndërveprimet me transmetim dhe pa transmetim kanë si parazgjedhje një kufi të tokenëve të daljes prej 64K, kështu që përgjigjet deri në 64K tokenë nuk kanë nevojë për ndryshime të kodit. Për të gjeneruar mbi 64 000 tokena, aktivizo ekzekutimin në sfond dhe rrit max_output_tokens.

Si e krijon ndërveprimin Kufiri i daljes
background: false (transmetim ose jo transmetim) 65 536 tokenë. Vlerat më të mëdha se 65 536 kthejnë një gabim 400. Dekodimi i gjatë pritet së shpejti.
background: true, max_output_tokens nuk është caktuar 65 536 tokenë
background: true, max_output_tokens më i madh se 65 536 max_output_tokens, deri në 1 048 576 minus hyrjen tënde

Kur të përdorësh dekodimin e gjatë

Shumica e kërkesave përfundojnë brenda 64 000 tokenave. Përdor dekodimin e gjatë vetëm kur një përgjigje ka nevojë për më shumë arsyetim dhe nxjerrje se aq.

Ngarkesa e punës Të përdoret dekodimi i gjatë? Pse
Matematikë, shkencë, kërkime dhe vërtetime formale të vështira Po Modeli mund të shpenzojë më shumë se 64 000 jetone për të eksploruar dhe kontrolluar arsyetimin e tij.
Detyrat më të vështira të kodimit dhe agjentit Po Disa detyra kanë nevojë për më shumë se 64 000 kode dhe arsyetime në një përgjigje. Shumica e detyrave të kodimit dhe agjentike përfundojnë nën 64 KB.
Veglat e vlerësimit që ndalojnë në kufirin e daljes Po Dekodimi i gjatë parandalon përgjigjet e ndërprera kur modeli shpenzon një përgjigje të plotë prej 64 KB për të menduarit.
Biseda, pyetje-përgjigje, përmbledhje, klasifikim dhe nxjerrje Jo Këto detyra përfundojnë mjaft mirë nën 32 000 tokena.
Kërkesat për një gjatësi fikse, si p.sh. "shkruaj një libër me 700 000 fjalë" Jo Modeli nuk ndjek objektivat e gjatësisë.
Agjentët që telefonojnë veglat në shumë kthesa të shkurtra Jo Çdo radhë është e shkurtër. Rezultatet e mëdha në çdo radhë e mbushin shpejt dritaren kontekstuale të ndarë.
Kërkesat pranë kufirit të hyrjes Jo Rezultati mund të përdorë vetëm 1 048 576 dërgime minus hyrjen tënde.
Kërkesat e ndjeshme ndaj vonesës Jo Dekodimi i gjatë mund të ekzekutohet për disa minuta.

Caktimi i një vlere të lartë për max_output_tokens i jep modelit hapësirë për të menduar më gjatë për problemet e vështira, por modeli vendos ende se sa të shkruajë. Për të kontrolluar se sa përpjekje arsyetimi përdor modeli, cakto thinking_level.

Zgjidh se si do të ekzekutohet dekodimi i gjatë

Ekzekutimi në sfond është mënyra më e lehtë për të ekzekutuar dekodimin e gjatë në Interactions API. Vazhdimi në anën e klientit, ku kodi yt fillon çdo hop, ofrohet me GenerateContent API. Do të ofrohet së shpejti në Interactions API si një opsion më i përparuar për menaxhimin e qëndrueshmërisë sate.

Ekzekutimi në sfond (Interactions API) Vazhdimi nga ana e klientit (GenerateContent API)
Kush fillon çdo kërcim Serverët tanë Google GenAI SDK ose kodi yt
Tokenët për kërkesë max_output_tokens, në një ndërveprim të vetëm 64K për transmetim, 32K për kërkesë jo transmetimi
Koha e ekzekutimit Deri në 24 orë 20 minuta
Hapësira ruajtëse Kërkon store: true Nuk është ruajtur asgjë në server.
Më të mirat për Mënyra më e lehtë për të ekzekutuar dekodimin e gjatë Kontroll më të detajuar mbi riprovat, në mënyrë që të mund të ndërtosh vetë strategjinë e tërheqjes, trajtimin e gabimeve dhe qëndrueshmërinë

Për të përdorur vazhdimin në anën e klientit, shiko dekodimin e gjatë me GenerateContent API.

Dekodimi i gjatë i transmetimit

Për të transmetuar daljet dhe përmbledhjet e mendimeve kur ato mbërrijnë, shto stream: true dhe thinking_summaries: "auto". Transmetimet e gjata mund të ndërpriten, kështu që klienti yt duhet të rilidhet. Ndiq modelin e rilidhjes në udhëzuesin e ekzekutimit në sfond. Dekodimi i gjatë shton këto rregulla:

  • Ruaj ID-në e ndërveprimit: Lexoje nga ngjarja interaction.created.
  • Ruaj çdo event_id: Një event_id mund të mbërrijë në ngjarjet e interaction.status_update, jo vetëm në ndryshimet e tekstit.
  • Rilidhu me last_event_id: Telefono interactions.get me stream: true dhe event_id e fundit. Transmetimi vazhdon pas asaj ngjarjeje.
  • Lexo deri në fund: Pasi të rilidhesh, lexo transmetimin deri në fund para se të kontrollosh statusin. Serveri riluaj ngjarjet e humbura, edhe pasi të përfundojë ndërveprimi.
  • Cakto skadime të gjata: Cakto skadimet e leximit të HTTP-së në 15 deri në 20 minuta për transmetim.
  • Prit nxjerrje në pjesë me 5 000 jeto: Pas 64 000 jetojeve të para (rreth 10 minutat e para), transmetimi dërgon nxjerrje në pjesë me rreth 5 000 jeto. Pauzat mes pjesëve janë normale. Ndërveprimi nuk ka ngecur, prandaj mbaje të hapur lidhjen.

Statusi në sfond

Një ndërveprim në sfond mund të ekzekutohet për deri në 24 orë. Pasi statusi të mos jetë më in_progress ose queued, trajto gjendjen e terminalit duke përdorur këtë tabelë:

Statusi Kuptimi Çfarë të bësh
completed Modeli përfundoi. Bashkohu në hapat e model_output në steps dhe lexo usage. Për të vazhduar bisedën, kalo id të këtij ndërveprimi si previous_interaction_id.
requires_action Modeli kërkoi një telefonatë me veglën. Ekzekuto veglën. Më pas dërgo rezultatin me id të kësaj ndërveprimi.
incomplete Modeli përdori të gjitha max_output_tokens. Teksti mund të jetë bosh nëse modeli ishte ende duke menduar. Dërgoje përsëri kërkesën me një max_output_tokens më të lartë.
failed Serveri nuk mund ta përfundonte ose ndërveprimi zgjati më shumë se 24 orë. Riprovo kërkesën. Nëse dështon përsëri, ndaje ndërveprimin id me ekipin e mbështetjes.
cancelled E anuluat ndërveprimin. Lexo usage për të parë xhetoneve të faturuara.

Për të ndaluar një ndërveprim në vazhdim, telefono client.interactions.cancel(id=interaction.id) në Python, client.interactions.cancel(interaction.id) në JavaScript ose POST /v1beta/interactions/{id}/cancel në REST.

Seti max_output_tokens

max_output_tokens përcakton kufirin e kombinuar për të menduarit dhe daljen nëpër ndërveprim. Ulja e tij nuk e bën modelin të mendojë në mënyrë më të përmbledhur dhe, në vend të kësaj, e ndërpret përgjigjen më shpejt.

Ngarkesa jote e punës max_output_tokens e rekomanduar
Aplikacionet ekzistuese me një kufi më të ulët se 32 KB Rrite në 32 768. Ekzekutimi në sfond nuk nevojitet.
Detyrat e gjata të kodimit dhe agjentike Fillo në 65 536 (parazgjedhja). Ekzekutimi në sfond nuk nevojitet.
Arsyetim kompleks, matematikë e vështirë, shkencë dhe prova Cakto background: true dhe fillo në 262 144, deri në 1 048 576 minus kodet e tua hyrëse.

Për të përdorur më pak jeto, ule thinking_level. Përdor high për detyrat më të vështira të arsyetimit. Përdor medium (parazgjedhja) për shumicën e punës së kodimit dhe agjentike.

Numëro tokenët

interaction.usage raporton totalet në të gjitha hopet. Lexon këto fusha: total_input_tokens, total_cached_tokens, total_output_tokens, total_thought_tokens dhe total_tokens.

total_input_tokens mbledh tokenët hyrës të çdo hapi. Çdo kërcim e dërgon kërkesën tënde plus gjithçka që është gjeneruar deri tani përsëri te modeli si hyrje, kështu që të njëjtët kode numërohen përsëri në çdo kërcim të mëvonshëm. Për shembull, një kërkesë me 1 000 tokena që prodhon 200 000 tokena arsyetimi dhe rezultati kërkon katër hapa:

Hop Hyrja u dërgua te modeli Tokenët e hyrjes
1 Kërkesa 1 000
2 Prompt + hop 1 66 536
3 Kërkesa + hops 1 dhe 2 132 072
4 Kërkesa + 1 deri në 3 kalime 197 608
Totali 397 216

total_input_tokens raporton rreth 397 000 tokenë (me hyrjet e përsëritura të hopit të zbritura automatikisht me 95% nga ruajtja implicite në memorien specifike), edhe pse madhësia aktuale e kontekstit është vetëm rreth 201 000 tokenë: kërkesa me 1 000 tokenë plus 200 000 tokenë të arsyetimit dhe nxjerrjes.

Gjatë një transmetimi, ngjarjet step.stop dhe interaction.status_update përfshijnë usage (kumulative për ndërveprimin). Lexo vlerën më të fundit të usage në vend që t'i shtosh ato së bashku.

Kupto faturimin

Ti paguan për çdo kod në çdo hap, duke përfshirë hapat që përmbajnë vetëm të menduarit.

  • Zbritja për ruajtjen në memorien specifike: Ruajtja implicite në memorien specifike ofron një zbritje prej 95% për hyrjen e përsëritur në çdo hap. Hyrja e ruajtur në memorien specifike kushton 0,10 USD për 1 milion tokenë në vend të 2,00 USD gjatë periudhës prezantuese.
  • Ndërveprimet e anuluara dhe të dështuara: Ti paguan për të gjithë punën e përfunduar para se të përfundojë ndërveprimi.

Zgjidhja e problemeve

Simptoma Shkaku dhe rregullimi
Dalja ndalon në 64 KB background është false ose max_output_tokens nuk është caktuar. Cakto background: true dhe max_output_tokens më të mëdha se 65 536.
400: "max_output_tokens greater than 65536 is not yet supported with background=false." Dekodimi i gjatë pa ekzekutim në sfond nuk ofrohet ende. Cakto background: true.
400: "store=true is required for background interactions" Ekzekutimi në sfond ka nevojë për store: true.
Statusi incomplete me tekst bosh Modeli përdori të gjitha kodet në arsyetim. Ngri max_output_tokens ose ul thinking_level.
Ngjeshja e kontekstit fillon shumë herët Struktura e agjentit ose vegla e vlerësimit lexon total_input_tokens. Shiko Numëro elementet.

Kufizimet

  • Nuk ka dekodim të gjatë pa ekzekutim në sfond: Ndërveprimet me background: false ndalojnë në 65 536 kode. Mbështetja do të ofrohet së shpejti.
  • Nuk ka objektiva për gjatësinë: Modeli nuk ndjek objektivat për gjatësinë e tokenëve ose numrin e fjalëve.

Hapat e radhës