«رمزگشایی طولانی» به Gemini 4 Argon امکان میدهد تا برای تکالیف استدلال عمیق، بیشاز ۶۴ هزار دادهواحد تولید کند، تا پنجره بافت یکپارچه ۱ میلیون دادهواحد (۱٬۰۴۸٬۵۷۶ دادهواحد که بین ورودی، تفکر، و برونداد همرسانی میشود). در Interactions API، رمزگشایی طولانی را با اجرای پسزمینه فعال میکنید تا سرورهای ما بهطور خودکار هر پرش ۶۴ کیلوبایتی را تولید و در یک تعامل واحد ترکیب کنند.
رمزگشایی چقدر طول میکشد
یک فراخوانی مدل تا ۶۴ هزار نشانه تولید میکند. وقتی پاسخ به بیشاز ۶۴ هزار واحد نیاز داشته باشد، سرور آن را در ۶۴ هزار گام تولید میکند که از جایی که گام قبلی متوقف شده است ادامه مییابد. هر پرش یک مرحله model_output به interaction.steps تحت همان شناسه تعامل اضافه میکند، بنابراین شما آن مراحل را به هم میپیوندید تا پاسخ کامل را بخوانید:
- تعاملی با
background: trueوmax_output_tokensبزرگتر از ۶۵٬۵۳۶ و تا ۱ میلیون ایجاد میکنید. - سرور اولین گام را تا ۶۴ هزار توکن تولید میکند.
- سرور پرش بعدی را از جایی که پرش قبلی متوقف شده است شروع میکند و این کار را تا زمانی که مدل تمام شود یا از همه
max_output_tokensاستفاده کند تکرار میکند. - برای دریافت نتیجه، تعامل را نظرسنجی یا جاریسازی میکنید.
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);
استراحت
# 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
محدودیتهای برونداد
تعاملهای جاریسازی و غیرجاریسازی بهطور پیشفرض به حد مجاز ۶۴ هزار نمانه خروجی محدود میشوند، بنابراین پاسخهای تا ۶۴ هزار نمانه نیازی به تغییر کد ندارند. برای تولید بیشاز ۶۴ هزار نمانه، اجرای پسزمینهای را روشن کنید و max_output_tokens را افزایش دهید.
| نحوه ایجاد تعامل | حد برونداد |
|---|---|
background: false (جاریسازی یا غیرجاریسازی) |
۶۵٬۵۳۶ دادهواحد. مقادیر بزرگتر از ۶۵٬۵۳۶ خطای ۴۰۰ برمیگرداند. رمزگشایی طولانی بهزودی ارائه میشود. |
background: true، max_output_tokens تنظیم نشده است |
۶۵٬۵۳۶ دادهواحد |
background: true، max_output_tokens بزرگتر از ۶۵۵۳۶ |
max_output_tokens شما، تا سقف ۱٬۰۴۸٬۵۷۶ منهای ورودی شما |
چه زمانی از رمزگشایی طولانی استفاده کنیم
بیشتر درخواستها در ۶۴ هزار کد تمام میشود. فقط زمانی از رمزگشایی طولانی استفاده کنید که یک پاسخ به تفکر و برونداد بیشتری نسبتبه آن نیاز داشته باشد.
| بار کاری | از رمزگشایی طولانی استفاده شود؟ | چرا |
|---|---|---|
| ریاضیات، علوم، پژوهش، و اثباتهای رسمی دشوار | بله | مدل میتواند بیشاز ۶۴ هزار نمانه را برای کاوش و بررسی استدلال خود صرف کند. |
| سختترین تکالیف کدنویسی و عاملگرا | بله | برخیاز تکالیف به بیشاز ۶۴ هزار نمان برای تفکر و کدنویسی در یک پاسخ نیاز دارند. اکثر تکالیف کدنویسی و عاملگرا در کمتر از ۶۴ هزار تمام میشوند. |
| ابزارهای ارزیابی که در حد خروجی متوقف میشوند | بله | رمزگشایی طولانی از پاسخهای بریدهشده جلوگیری میکند، زیرا مدل کل پاسخ ۶۴ هزارتایی را صرف فکر کردن میکند. |
| گپ، پرسش و پاسخ، خلاصهسازی، طبقهبندی، و استخراج | نه | این تکالیف خیلی کمتر از ۳۲ هزار کد تمام میشوند. |
| درخواستهایی برای طول ثابت، مثل «کتابی با ۷۰۰٬۰۰۰ کلمه بنویس» | نه | مدل از اهداف طول پیروی نمیکند. |
| عاملهایی که ابزارها را در نوبتهای کوتاه متعدد فراخوانی میکنند | نه | هر نوبت کوتاه است. خروجیهای بزرگ در هر نوبت، پنجره بافت مشترک را بهسرعت پر میکند. |
| پیاموارهها نزدیک به حد ورودی است | نه | خروجی فقط میتواند از ۱٬۰۴۸٬۵۷۶ نشانه منهای ورودی شما استفاده کند. |
| درخواستهای حساس به تأخیر | نه | رمزگشایی طولانی میتواند چند دقیقه طول بکشد. |
تنظیم کردن max_output_tokens بالا به مدل فرصت میدهد تا بیشتر درباره مسائل دشوار فکر کند، اما مدل همچنان تصمیم میگیرد که چقدر بنویسد. برای کنترل میزان تلاش استدلالی که مدل استفاده میکند، thinking_level را تنظیم کنید.
انتخاب نحوه اجرای رمزگشایی طولانی
اجرای پسزمینهای سادهترین راه برای اجرای رمزگشایی طولانی در Interactions API است. ادامه سمت کارخواه، که در آن کد شما هر پرش را شروع میکند، با GenerateContent API دردسترس است. این ویژگی بهزودی بهعنوان گزینهای پیشرفتهتر برای مدیریت انعطافپذیری خودتان به Interactions API اضافه خواهد شد.
| اجرا در پسزمینه (Interactions API) | ادامه سمت کارخواه (GenerateContent API) | |
|---|---|---|
| چه کسی هر پرش را شروع میکند | سرورهای ما | کیت توسعه نرمافزار Google GenAI، یا کد خودتان |
| کدها بهازای هر درخواست | max_output_tokens شما، در یک تعامل |
۶۴ هزار بهازای هر جاریسازی، ۳۲ هزار بهازای هر درخواست غیرجاریسازی |
| زمان اجرا | حداکثر ۲۴ ساعت | ۲۰ دقیقه |
| فضای ذخیرهسازی | مورد لزوم store: true |
چیزی در سرور ذخیره نشده است. |
| بهترین برای | سادهترین راه برای اجرای رمزگشایی طولانی | کنترل دقیقتر بر تلاشهای مجدد، تا بتوانید عقبنشینی، مدیریت خطا، و انعطافپذیری خودتان را بسازید |
برای استفاده از ادامه سمت کارخواه، به رمزگشایی طولانی با GenerateContent API مراجعه کنید.
رمزگشایی طولانی جاریسازی
برای جاریسازی خروجیها و خلاصههای فکری بهمحض رسیدن، stream: true و thinking_summaries: "auto" را اضافه کنید. جاریسازیهای طولانی ممکن است قطع شوند، بنابراین کارخواه شما باید دوباره متصل شود. الگوی اتصال مجدد را در راهنمای اجرای پسزمینه دنبال کنید. رمزگشایی طولانی این قوانین را اضافه میکند:
- شناسه تعامل را ذخیره کنید: آن را از رویداد
interaction.createdبخوانید. - ذخیره هر
event_id:event_idمیتواند درinteraction.status_updateرویداد برسد، نه فقط در تغییرات نوشتاری. - اتصال مجدد با
last_event_id: باinteractions.getبااستفاده ازstream: trueو آخرینevent_idتماس بگیرید. جاریسازی پساز آن رویداد ادامه مییابد. - تا آخر بخوانید: پساز اتصال مجدد، پیشاز بررسی وضعیت، جاریسازی را تا آخر بخوانید. سرور رویدادهای ازدسترفته را حتی پساز تکمیل تعامل بازپخش میکند.
- تنظیم زمانهای طولانی برای اتمام مهلت: زمان اتمام مهلت خواندن HTTP را روی ۱۵ تا ۲۰ دقیقه برای هر جاریسازی تنظیم کنید.
- انتظار برونداد در تکههای ۵ هزار توکنی: پساز ۶۴ هزار توکن اول (حدود ۱۰ دقیقه اول)، جاریسازی برونداد را در تکههای حدود ۵ هزار توکنی ارسال میکند. مکث بین بخشها طبیعی است. تعامل گیر نکرده است، بنابراین اتصال را باز نگه دارید.
وضعیت پسزمینه
تعامل پسزمینه میتواند تا ۲۴ ساعت اجرا شود. وقتی وضعیت دیگر in_progress یا queued نبود، وضعیت پایانه را بااستفاده از این جدول مدیریت کنید:
| وضعیت | معنی | چه کاری باید انجام داد |
|---|---|---|
completed |
مدل تمام شد. | به model_output مرحله در steps بپیوندید و usage را بخوانید. برای ادامه مکالمه، id این تعامل را بهعنوان previous_interaction_id ارسال کنید. |
requires_action |
مدل درخواست فراخوانی ابزار کرد. | ابزار را اجرا کنید. سپس نتیجه را با id این تعامل ارسال کنید. |
incomplete |
مدل از همه max_output_tokens استفاده کرد. اگر مدل هنوز درحال فکر کردن باشد، نوشتار میتواند خالی باشد. |
درخواست را با max_output_tokens بالاتر دوباره ارسال کنید. |
failed |
سرور نتوانست کار را تمام کند یا تعامل بیشتر از ۲۴ ساعت طول کشید. | درخواست را دوباره امتحان کنید. اگر دوباره ناموفق بود، تعامل id را با پشتیبانی همرسانی کنید. |
cancelled |
تعامل را لغو کردید. | برای دیدن توکنهای صورتحسابشده، usage را بخوانید. |
برای متوقف کردن تعامل درحال اجرا، در Python، client.interactions.cancel(id=interaction.id)، در JavaScript، client.interactions.cancel(interaction.id)، یا در REST، POST /v1beta/interactions/{id}/cancel را فراخوانی کنید.
دور max_output_tokens
max_output_tokens حد ترکیبی را برای تفکر و خروجی در سراسر تعامل تنظیم میکند. پایین آوردن آن باعث نمیشود که مدل مختصرتر فکر کند، بلکه پاسخ را زودتر قطع میکند.
| بار کاری شما | max_output_tokens توصیهشده |
|---|---|
| برنامههای موجود با محدودیت کمتر از ۳۲ هزار | به ۳۲٬۷۶۸ افزایش دهید. اجرا در پسزمینه لازم نیست. |
| تکالیف عاملگرا و کدنویسی طولانی | از ۶۵۵۳۶ (پیشفرض) شروع کنید. اجرا در پسزمینه لازم نیست. |
| استدلال پیچیده، ریاضیات دشوار، علوم، و اثباتها | background: true را تنظیم کنید و از ۲۶۲٬۱۴۴ شروع کنید، تا ۱٬۰۴۸٬۵۷۶ منهای کدهای ورودی شما. |
برای استفاده از نشانهای کمتر، thinking_level را کاهش دهید. از high برای سختترین تکالیف استدلالی استفاده کنید. از medium (پیشفرض) برای اکثر کارهای کدنویسی و عاملگرا استفاده کنید.
شمارش دادهواحدها
interaction.usage مجموع کل پرشها را گزارش میکند. این فیلدها را بخوانید: total_input_tokens، total_cached_tokens، total_output_tokens، total_thought_tokens، و total_tokens.
total_input_tokens کدهای ورودی هر گام را جمع میکند. هر پرش پیامواره شما و همه موارد تولیدشده تا آن زمان را بهعنوان ورودی به مدل برمیگرداند، بنابراین همان نشانها در هر پرش بعدی دوباره شمارش میشوند. برای مثال، یک پیامواره ۱۰۰۰ توکنی که ۲۰۰٬۰۰۰ توکن تفکر و برونداد تولید میکند، چهار جهش دارد:
| Hop | ورودی به مدل ارسال شد | دادهواحدهای ورودی |
|---|---|---|
| 1 | پیامواره | ۱٬۰۰۰ |
| 2 | پیامواره + پرش ۱ | ۶۶۵۳۶ |
| 3 | پیامواره + گامهای ۱ و ۲ | 132,072 |
| 4 | پیامواره + ۱ تا ۳ جهش | ۱۹۷٬۶۰۸ |
| جمع | ۳۹۷٬۲۱۶ |
total_input_tokens حدود ۳۹۷٬۰۰۰ کد متن گزارش میکند (با ورودیهای پرش تکراری که بهطور خودکار ۹۵٪ با ذخیره ضمنی در حافظه نهان تخفیف داده میشود)، حتی اگر اندازه واقعی زمینهای فقط حدود ۲۰۱٬۰۰۰ کد متن باشد: پیامواره ۱٬۰۰۰ کد متنی بهعلاوه ۲۰۰٬۰۰۰ کد متنی برای فکر کردن و برونداد.
درطول جاریسازی، هر دو رویداد step.stop و interaction.status_update شامل usage (تجمعی برای تعامل) هستند. بهجای جمع کردن مقادیر usage، آخرین مقدار را بخوانید.
آشنایی با صورتحساب
شما برای هر کد در هر گام، ازجمله گامهایی که فقط شامل تفکر هستند، هزینه پرداخت میکنید.
- تخفیف حافظه پنهان: ذخیرهسازی ضمنی در حافظه پنهان، ورودی تکراری را در هر گام ۹۵٪ تخفیف میدهد. هزینه ورودی ذخیرهشده در حافظه نهان درطول دوره مقدماتی بهجای ۲٫۰۰ دلار، ۰٫۱۰ دلار بهازای هر ۱ میلیون دادهواحد است.
- تعاملهای لغوشده و ناموفق: هزینه همه کارهای تکمیلشده قبلاز پایان تعامل را پرداخت میکنید.
عیبیابی
| نشانه | علت و رفع مشکل |
|---|---|
| برونداد در ۶۴ هزار متوقف میشود | background false است، یا max_output_tokens تنظیم نشده است. background: true و max_output_tokens را بزرگتر از ۶۵۵۳۶ تنظیم کنید. |
| 400: «max_output_tokens بیشتر از ۶۵۵۳۶ هنوز با background=false پشتیبانی نمیشود.» | رمزگشایی طولانی بدون اجرای پسزمینه هنوز دردسترس نیست. background: true تنظیم شود. |
| ۴۰۰: «store=true is required for background interactions» | اجرا در پسزمینه به store: true نیاز دارد. |
وضعیت incomplete با نوشتار خالی |
مدل از همه نشانها در اندیشیدن استفاده کرد. max_output_tokens را بالا ببرید یا thinking_level را پایین بیاورید. |
| فشردهسازی بافت خیلی زود شروع میشود | چارچوب عامل یا ابزار ارزیابی شما total_input_tokens را میخواند. شمارش نشانها را ببینید. |
محدودیتها
- بدون رمزگشایی طولانی بدون اجرای پسزمینه: تعاملات با
background: falseدر ۶۵٬۵۳۶ توکن متوقف میشود. پشتیبانی بهزودی ارائه میشود. - بدون هدف طول: مدل از اهداف طول-نماد یا تعداد کلمات پیروی نمیکند.