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ë:
- Ti krijon një ndërveprim me
background: truedhemax_output_tokensmë të madh se 65 536, deri në 1 000 000. - Serveri gjeneron kërcimin e parë, deri në 64 000 kode.
- 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. - 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_idmund të mbërrijë në ngjarjet einteraction.status_update, jo vetëm në ndryshimet e tekstit. - Rilidhu me
last_event_id: Telefonointeractions.getmestream: truedheevent_ide 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: falsendalojnë 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.