Uzun kod çözme özelliği, Gemini 4 Argon'un derin akıl yürütme görevleri için 64.000 parçadan fazla (giriş, düşünme ve çıkış arasında paylaşılan birleştirilmiş 1 milyon parçalık bağlam penceresine kadar, yani 1.048.576 parça) yanıt üretmesine olanak tanır. Interactions API'de, arka planda yürütme ile uzun kod çözmeyi etkinleştirirsiniz. Böylece sunucularımız her 64 binlik adımı otomatik olarak oluşturup tek bir etkileşimde birleştirir.
Kod çözme işleminin süresi
Tek bir model çağrısı 64.000 jetona kadar oluşturabilir. Bir yanıtın 64.000'den fazla jeton içermesi gerektiğinde sunucu, yanıtı 64.000 jetonluk adımlar halinde oluşturur. Bu adımlar, önceki adımın kaldığı yerden devam eder. Her yönlendirme, aynı etkileşim kimliği altında interaction.steps'ye bir model_output adımı ekler. Bu nedenle, tam yanıtı okumak için bu adımları birleştirirsiniz:
background: truevemax_output_tokensdeğeri 65.536'dan büyük, 1 milyona kadar olan bir etkileşim oluşturursunuz.- Sunucu, 64.000 jetona kadar ilk atlamayı oluşturur.
- Sunucu, sonraki durak adresini son durak adresinin durduğu yerden başlatır ve model tamamlanana veya
max_output_tokensdeğerinin tamamını kullanana kadar tekrarlar. - Sonucu almak için etkileşimi sorgular veya akış olarak alırsınız.
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);
REST
# 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
Çıkış sınırları
Akışlı ve akışsız etkileşimler varsayılan olarak 64.000 çıkış jetonu sınırına sahiptir. Bu nedenle, 64.000 jetona kadar olan yanıtlarda kod değişikliği yapılması gerekmez. 64.000'den fazla jeton oluşturmak için arka planda yürütmeyi etkinleştirin ve max_output_tokens değerini artırın.
| Etkileşimi nasıl oluşturduğunuz | Çıkış sınırı |
|---|---|
background: false (yayın veya yayın dışı) |
65.536 jeton. 65.536'dan büyük değerler 400 hatası döndürür. Uzun kod çözme özelliği yakında kullanıma sunulacak. |
background: true, max_output_tokens ayarlanmadı |
65.536 parça |
background: true, max_output_tokens 65.536'dan büyük |
max_output_tokens değeriniz (en fazla 1.048.576 eksi girişiniz) |
Uzun kod çözme ne zaman kullanılır?
Çoğu istek 64.000 jeton içinde tamamlanır. Uzun kod çözme özelliğini yalnızca bir yanıt için daha fazla düşünme ve çıktı gerektiğinde kullanın.
| İş yükü | Uzun kod çözme kullanılsın mı? | Neden? |
|---|---|---|
| Zor matematik, bilim, araştırma ve resmi kanıtlar | Evet | Model, gerekçesini keşfetmek ve kontrol etmek için 64.000'den fazla jeton harcayabilir. |
| En zorlu kodlama ve temsilci tabanlı görevler | Evet | Bazı görevler, tek bir yanıtta 64.000'den fazla jetonluk düşünme ve kod gerektirir. Kodlama ve temsilci tabanlı görevlerin çoğu 64.000'den az çıkış jetonuyla tamamlanır. |
| Çıkış sınırında duran değerlendirme araçları | Evet | Uzun kod çözme, model tüm 64 bin yanıtı düşünmek için harcadığında yanıtların kesilmesini önler. |
| Sohbet, soru-cevap, özetleme, sınıflandırma ve ayıklama | Hayır | Bu görevler 32.000 jetonun çok altında tamamlanıyor. |
| "700.000 kelimelik bir kitap yaz" gibi sabit uzunluktaki istekler | Hayır | Model, uzunluk hedeflerine uymuyor. |
| Kısa dönüşlerde birçok aracı çağıran ajanlar | Hayır | Her sıra kısadır. Her sıradaki büyük çıktılar, paylaşılan bağlam penceresini hızla doldurur. |
| Giriş sınırına yakın istemler | Hayır | Çıkışta yalnızca 1.048.576 jeton eksi girişiniz kullanılabilir. |
| Gecikmeye duyarlı istekler | Hayır | Uzun kod çözme işlemi birkaç dakika sürebilir. |
Yüksek bir max_output_tokens değeri ayarlamak, modele zor problemler üzerinde daha uzun süre düşünme imkanı verir ancak model ne kadar yazacağına kendisi karar verir. Modelin ne kadar akıl yürütme çabası kullanacağını kontrol etmek için thinking_level değerini ayarlayın.
Uzun kod çözme işleminin nasıl çalıştırılacağını seçme
Arka planda yürütme, Etkileşimler API'sinde uzun kod çözme işlemlerini çalıştırmanın en kolay yoludur. Kodunuzun her atlamaya başladığı istemci tarafında devamlılık, GenerateContent API ile kullanılabilir. Bu özellik, kendi esnekliğinizi yönetmek için daha gelişmiş bir seçenek olarak yakında Interactions API'ye eklenecek.
| Arka planda yürütme (Interactions API) | İstemci tarafı devamlılığı (GenerateContent API) | |
|---|---|---|
| Her adımı kim başlatır? | Sunucularımız | Google GenAI SDK veya kendi kodunuz |
| İstek başına jeton sayısı | max_output_tokens hesabınızla ilgili tüm işlemler tek bir etkileşimde |
Akış başına 64.000, akış dışı istek başına 32.000 |
| Çalışma süresi | En fazla 24 saat | 20 dakika |
| Depolama | store: true gerektirir |
Sunucuda hiçbir şey depolanmaz. |
| İdeal kullanım alanları | Uzun kod çözme işlemini çalıştırmanın en kolay yolu | Yeniden denemeler üzerinde daha ayrıntılı kontrol sayesinde kendi bekleme, hata işleme ve esneklik stratejinizi oluşturabilirsiniz. |
İstemci taraflı devamlılık özelliğini kullanmak için GenerateContent API ile uzun kod çözme başlıklı makaleyi inceleyin.
Uzun akış kodu çözme
Çıktıları ve düşünce özetlerini geldikçe yayınlamak için stream: true ve thinking_summaries: "auto" ekleyin. Uzun yayınlar kesilebilir. Bu durumda istemcinizin yeniden bağlanması gerekir. Arka planda yürütme kılavuzundaki yeniden bağlanma modelini uygulayın. Uzun kod çözme aşağıdaki kuralları ekler:
- Etkileşim kimliğini kaydedin:
interaction.createdetkinliğinden okuyun. - Her
event_idiçin kaydet:event_id, yalnızca metin deltalarında değil,interaction.status_updateetkinliklerinde de gerçekleşebilir. last_event_idile yeniden bağlantı kurun:stream: trueve sonevent_idileinteractions.get'i arayın. Yayın, bu etkinlikten sonra devam eder.- Sonuna kadar okuyun: Yeniden bağlandıktan sonra durumu kontrol etmeden önce akışı sonuna kadar okuyun. Sunucu, etkileşim tamamlandıktan sonra bile kaçırılan etkinlikleri yeniden oynatır.
- Uzun zaman aşımları ayarlayın: HTTP okuma zaman aşımlarını akış başına 15-20 dakika olarak ayarlayın.
- Çıkışın 5.000 parçalık parçalar halinde gelmesini bekleyin: İlk 64.000 parçadan (yaklaşık ilk 10 dakika) sonra akış, yaklaşık 5.000 parçalık parçalar halinde çıkış gönderir. Parçalar arasındaki duraklamalar normaldir. Etkileşim takılmadığı için bağlantıyı açık tutun.
Arka plan durumu
Arka plan etkileşimi 24 saate kadar çalışabilir. Durum artık in_progress veya queued olmadığında, bu tabloyu kullanarak terminal durumunu ele alın:
| Durum | Anlamı | Yapılması gerekenler |
|---|---|---|
completed |
Model tamamlandı. | steps'daki model_output adımı uygulayın ve usage okuyun. Sohbete devam etmek için bu etkileşimin id değerini previous_interaction_id olarak iletin. |
requires_action |
Model, araç çağrısı istedi. | Aracı çalıştırın. Ardından, sonucu bu etkileşimin id değeriyle gönderin. |
incomplete |
Model, max_output_tokens bütçenin tamamını kullandı. Model hâlâ düşünüyorsa metin boş olabilir. |
İsteği daha yüksek bir max_output_tokens ile tekrar gönderin. |
failed |
Sunucu işlemi tamamlayamadı veya etkileşim 24 saatten uzun sürdü. | İsteği yeniden deneyin. Tekrar başarısız olursa etkileşimi id destek ekibiyle paylaşın. |
cancelled |
Etkileşimi iptal ettiniz. | Faturalandırılan jetonları görmek için usage bölümünü okuyun. |
Çalışan bir etkileşimi durdurmak için Python'da client.interactions.cancel(id=interaction.id), JavaScript'te client.interactions.cancel(interaction.id) veya REST'te POST /v1beta/interactions/{id}/cancel yöntemini çağırın.
max_output_tokens ayarla
max_output_tokens, etkileşim genelinde düşünme ve çıkış için birleşik sınırı belirler. Bu değeri düşürmek, modelin daha kısa ve öz düşünmesini sağlamaz, bunun yerine yanıtı daha erken keser.
| İş yükünüz | max_output_tokens önerilir |
|---|---|
| Sınırı 32.000'den düşük olan mevcut uygulamalar | 32.768'e yükseltin. Arka planda yürütme gerekli değildir. |
| Uzun kodlama ve ajan tabanlı görevler | 65.536'dan (varsayılan) başlayın. Arka planda yürütme gerekli değildir. |
| Karmaşık akıl yürütme, zor matematik, fen ve kanıtlar | background: true değerini ayarlayın ve 262.144'ten başlayarak 1.048.576'ya kadar (giriş jetonlarınız hariç) bir değer girin. |
Daha az jeton kullanmak için thinking_level değerini düşürün. En zorlu akıl yürütme görevleri için high modelini kullanın. Çoğu kodlama ve ajan tabanlı çalışma için medium (varsayılan) seçeneğini kullanın.
Parça sayma
interaction.usage, tüm atlamalardaki toplamları raporlar. Şu alanları okuyun: total_input_tokens, total_cached_tokens, total_output_tokens, total_thought_tokens ve total_tokens.
total_input_tokens her adımın giriş jetonlarını toplar. Her adımda isteminiz ve şimdiye kadar oluşturulan her şey giriş olarak modele geri gönderilir. Bu nedenle, aynı jetonlar sonraki her adımda tekrar sayılır. Örneğin, 200.000 jetonluk düşünme ve çıkış üreten 1.000 jetonluk bir istem dört adımda tamamlanır:
| Hop | Modele gönderilen giriş | Giriş jetonu sayısı |
|---|---|---|
| 1 | İstem | 1.000 |
| 2 | İstem + 1. adım | 66.536 |
| 3 | İstem + 1. ve 2. adımlar | 132.072 |
| 4 | İstem + 1-3 arası hop | 197.608 |
| Toplam | 397.216 |
Gerçek bağlam boyutu yalnızca yaklaşık 201.000 jeton olmasına rağmen (1.000 jetonluk istem artı 200.000 jetonluk düşünme ve çıkış), total_input_tokens yaklaşık 397.000 jeton bildiriyor (yinelenen hop girişleri, örtülü önbelleğe alma ile otomatik olarak% 95 oranında düşürülüyor).
Yayın sırasında hem step.stop hem de interaction.status_update etkinlikleri usage (etkileşim için kümülatif) içerir. Değerleri toplamak yerine en son usage değerini okuyun.
Faturalandırma hakkında
Yalnızca düşünme içeren adımlar da dahil olmak üzere her adımdaki her jeton için ödeme yaparsınız.
- Önbellek indirimi: Örtülü önbelleğe alma, her adımda tekrarlanan girişte %95 indirim uygular. Tanıtım döneminde önbelleğe alınan giriş için 2 ABD doları yerine 1 milyon jeton başına 0,10 ABD doları ödenir.
- İptal edilen ve başarısız olan etkileşimler: Etkileşim sona ermeden önce tamamlanan tüm çalışmalar için ödeme yaparsınız.
Sorun giderme
| Belirti | Neden ve çözüm |
|---|---|
| Çıkış 64.000 karakterde duruyor | background, false veya max_output_tokens ayarlanmamış. background: true ve max_output_tokens değerlerini 65.536'dan büyük olacak şekilde ayarlayın. |
| 400: "max_output_tokens greater than 65536 is not yet supported with background=false." (65536'dan büyük max_output_tokens değeri, background=false ile henüz desteklenmiyor.) | Arka planda yürütme olmadan uzun kod çözme özelliği henüz kullanılamıyor. background: true. küme |
| 400: "store=true is required for background interactions" (Arka plan etkileşimleri için store=true gereklidir) | Arka planda yürütme için store: true gerekiyor. |
Boş metin içeren durum incomplete |
Model, düşünme aşamasında tüm jetonları kullandı. Söz isteyin max_output_tokens veya söz isteğini geri alın thinking_level. |
| Bağlam sıkıştırma çok erken başlıyor | Aracı çerçeveniz veya değerlendirme aracınız total_input_tokens okuyor. Parça sayma başlıklı makaleyi inceleyin. |
Sınırlamalar
- Arka planda yürütme olmadan uzun kod çözme işlemi yapılmaz:
background: falseile etkileşimler 65.536 jetonda durur. Destek yakında kullanıma sunulacak. - Uzunluk hedefi yok: Model, parça uzunluğu veya kelime sayısı hedeflerine uymaz.