লং ডিকোড, Gemini 4 Argon-কে ডিপ রিজনিং টাস্কের জন্য ৬৪ হাজার টোকেনের বেশি জেনারেট করতে দেয়,যা ইউনিফায়েড ১ মিলিয়ন টোকেন কন্টেক্সট উইন্ডো পর্যন্ত (ইনপুট,থিঙ্কিং ও আউটপুট জুড়ে ১, ০৪৮, ৫৭৬ টোকেন শেয়ার করা হয়) হতে পারে। Interactions API-তে, আপনি ব্যাকগ্রাউন্ড এক্সিকিউশনের সাথে লং ডিকোড চালু করেন যাতে আমাদের সার্ভার অটোমেটিক প্রতিটি 64K হপকে একটি ইন্টার্যাকশনে জেনারেট ও একত্রিত করে।
ডিকোড কতক্ষণ কাজ করে
একটি মডেল কলে সর্বাধিক ৬৪ হাজার টোকেন জেনারেট হয়। কোনও উত্তরের জন্য ৬৪K-এর বেশি টোকেন প্রয়োজন হলে, সার্ভার এটিকে ৬৪K হপ হিসেবে জেনারেট করে যা আগের হপ যেখানে শেষ হয়েছে সেখান থেকে চলতে থাকে। প্রতিটি হপ একই ইন্টার্যাকশন আইডির অধীনে model_output থেকে interaction.steps পর্যন্ত ধাপ যোগ করে, তাই সম্পূর্ণ উত্তর পড়তে আপনি সেইসব ধাপ যোগ করেন:
- আপনি
background: trueএবংmax_output_tokens-এর সাথে ৬৫,৫৩৬-এর বেশি, ১M পর্যন্ত ইন্টার্যাকশন তৈরি করেন। - সার্ভার প্রথম হপ জেনারেট করে, সর্বাধিক ৬৪ হাজার টোকেন।
- সার্ভারটি শেষ হপ যেখানে থেমেছিল সেখান থেকে পরবর্তী হপ শুরু করে এবং মডেলটি শেষ না হওয়া পর্যন্ত বা
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)
জাভাস্ক্রিপ্ট
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
আউটপুটের সীমা
স্ট্রিমিং এবং নন-স্ট্রিমিং ইন্টার্যাকশন ডিফল্ট হিসেবে 64K আউটপুট টোকেন লিমিটে সেট করা থাকে, তাই 64K টোকেন পর্যন্ত উত্তরের জন্য কোড পরিবর্তন করার প্রয়োজন হয় না। আগের ৬৪ হাজার টোকেন জেনারেট করতে, ব্যাকগ্রাউন্ড এক্সিকিউশন চালু করুন এবং max_output_tokens বাড়ান।
| আপনি কীভাবে ইন্টার্যাকশন তৈরি করেন | আউটপুট সীমা |
|---|---|
background: false (স্ট্রিমিং বা নন-স্ট্রিমিং) |
৬৫,৫৩৬টি টোকেন। ৬৫,৫৩৬-এর বেশি ভ্যালু হলে ৪০০ নম্বর সমস্যা দেখায়। লং ডিকোড শীঘ্রই আসছে। |
background: true, max_output_tokens সেট করা নেই |
৬৫,৫৩৬টি টোকেন |
background: true, max_output_tokens ৬৫,৫৩৬-এর থেকে বেশি |
আপনার max_output_tokens, সর্বাধিক ১,০৪৮,৫৭৬, আপনার ইনপুট বিয়োগ করে |
কখন লং ডিকোড ব্যবহার করতে হয়
বেশিরভাগ অনুরোধ ৬৪ হাজার টোকেনের মধ্যে শেষ হয়। একটি উত্তরের জন্য এর থেকে বেশি চিন্তা ও আউটপুট প্রয়োজন হলে তবেই 'দীর্ঘ ডিকোড' ব্যবহার করুন।
| ওয়ার্কলোড | দীর্ঘ ডিকোড ব্যবহার করবেন? | কেন |
|---|---|---|
| কঠিন অঙ্ক, বিজ্ঞান, গবেষণা ও আনুষ্ঠানিক প্রমাণ | হ্যাঁ | মডেলটি তার যুক্তি অন্বেষণ এবং পরীক্ষা করার জন্য ৬৪ হাজারের বেশি টোকেন খরচ করতে পারে। |
| সবচেয়ে কঠিন কোডিং ও এজেন্টিক টাস্ক | হ্যাঁ | কিছু টাস্কের ক্ষেত্রে, একটি উত্তরে ৬৪ হাজারের বেশি টোকেন চিন্তা ও কোড প্রয়োজন হয়। বেশিরভাগ কোডিং ও এজেন্টিক টাস্ক ৬৪K-এর মধ্যেই শেষ হয়ে যায়। |
| মূল্যায়ন টুল যা আউটপুট সীমায় থেমে যায় | হ্যাঁ | মডেলটি যখন কোনও উত্তর সম্পর্কে চিন্তা করতে পুরো ৬৪কে সময় ব্যয় করে, তখন লং ডিকোড উত্তর কেটে দেওয়া প্রতিরোধ করে। |
| চ্যাট, প্রশ্ন ও উত্তর, সারসংক্ষেপ, শ্রেণীবিভাগ এবং এক্সট্র্যাকশন | না | এইসব টাস্ক ৩২কে টোকেনের অনেক আগেই শেষ হয়ে যায়। |
| নির্দিষ্ট দৈর্ঘ্যের অনুরোধ, যেমন "৭০০,০০০ শব্দের একটি বই লেখো" | না | মডেলটি দৈর্ঘ্যের লক্ষ্য অনুসরণ করে না। |
| এজেন্ট যারা অনেক ছোট ছোট টার্নে টুল কল করে | না | প্রতিটি পালা খুব ছোট। প্রতিটি টার্নে বড় আউটপুট শেয়ার করা কন্টেক্সট উইন্ডো দ্রুত ভর্তি করে দেয়। |
| ইনপুট সীমার কাছাকাছি প্রম্পট | না | আউটপুটে আপনার ইনপুট বাদ দিয়ে শুধু ১,০৪৮,৫৭৬টি টোকেন ব্যবহার করা যাবে। |
| লেটেন্সি-সংবেদনশীল অনুরোধ | না | দীর্ঘ ডিকোড কয়েক মিনিট ধরে চলতে পারে। |
max_output_tokens-এর মান বেশি সেট করলে, মডেলটি কঠিন সমস্যা নিয়ে আরও বেশি সময় ধরে চিন্তা করার সুযোগ পায়, তবে মডেলটি এখনও সিদ্ধান্ত নেয় যে কতটা লিখতে হবে। মডেল কতটা রিজনিং এফর্ট ব্যবহার করবে তা নিয়ন্ত্রণ করতে, thinking_level সেট করুন।
কীভাবে দীর্ঘ ডিকোড রান করবেন তা বেছে নিন
Interactions API-তে দীর্ঘ ডিকোড চালানোর সবচেয়ে সহজ উপায় হল ব্যাকগ্রাউন্ড এক্সিকিউশন। ক্লায়েন্ট-সাইড কন্টিনিউয়েশন, যেখানে আপনার কোড প্রতিটি হপ শুরু করে, GenerateContent API-এর সাথে উপলভ্য। আপনার নিজস্ব স্থিতিস্থাপকতা ম্যানেজ করার জন্য আরও উন্নত বিকল্প হিসেবে এটি শীঘ্রই Interactions API-তে আসছে।
| ব্যাকগ্রাউন্ড এক্সিকিউশন (Interactions API) | ক্লায়েন্ট-সাইড কন্টিনিউয়েশন (GenerateContent API) | |
|---|---|---|
| কে প্রতিটি হপ শুরু করেন | আমাদের সার্ভার | Google GenAI SDK বা আপনার নিজস্ব কোড |
| প্রতিটি অনুরোধ পিছু টোকেন | আপনার max_output_tokens, একটি ইন্টার্যাকশনে |
প্রতিটি স্ট্রিমের জন্য ৬৪ হাজার, স্ট্রিমিং নয় এমন অনুরোধের জন্য ৩২ হাজার |
| রান টাইম | ২৪ ঘণ্টা পর্যন্ত | ২০ মিনিট |
| স্টোরেজ | store: true আবশ্যক |
সার্ভারে কিছু স্টোর করা নেই। |
| এগুলির জন্য সেরা | দীর্ঘ ডিকোড চালানোর সবচেয়ে সহজ উপায় | আবার চেষ্টা করার উপর আরও সূক্ষ্ম-গ্রেন কন্ট্রোল, যাতে আপনি নিজের ব্যাকঅফ, সমস্যা সমাধান এবং স্থিতিশীলতা তৈরি করতে পারেন |
ক্লায়েন্ট-সাইড কন্টিনিউয়েশন ব্যবহার করতে, GenerateContent API-এর মাধ্যমে দীর্ঘ ডিকোড দেখুন।
স্ট্রিম লং ডিকোড
আউটপুট ও চিন্তাভাবনার সারসংক্ষেপ আসার সাথে সাথে স্ট্রিম করতে, stream: true ও thinking_summaries: "auto" যোগ করুন। দীর্ঘ স্ট্রিম ড্রপ হতে পারে, তাই আপনার ক্লায়েন্টকে অবশ্যই আবার কানেক্ট করতে হবে। ব্যাকগ্রাউন্ড এক্সিকিউশন গাইড-এ আবার কানেক্ট করার প্যাটার্ন ফলো করুন। লং ডিকোড এই নিয়মগুলি যোগ করে:
- ইন্টার্যাকশন আইডি সেভ করুন:
interaction.createdইভেন্ট থেকে এটি পড়ুন। - প্রতি
event_idসেভ করুন: শুধু টেক্সট ডেল্টাতেই নয়,interaction.status_updateইভেন্টেওevent_idআসতে পারে। last_event_id-এর সাথে আবার কানেক্ট করুন:stream: trueএবং শেষevent_idব্যবহার করেinteractions.get-এ কল করুন। সেই ইভেন্টের পরে স্ট্রিম চলতে থাকে।- শেষ পর্যন্ত পড়ুন: আপনি আবার কানেক্ট করার পরে, স্ট্যাটাস চেক করার আগে স্ট্রিমটি শেষ পর্যন্ত পড়ুন। ইন্টার্যাকশন সম্পূর্ণ হওয়ার পরেও, সার্ভার মিস হয়ে যাওয়া ইভেন্ট রিপ্লে করে।
- দীর্ঘ টাইমআউট সেট করা: প্রতিটি স্ট্রিমের জন্য HTTP রিড টাইমআউট ১৫ থেকে ২০ মিনিট সেট করুন।
- ৫ হাজার টোকেনের চাঙ্কে আউটপুট আশা করুন: প্রথম ৬৪ হাজার টোকেনের (প্রথম ১০ মিনিট) পরে, স্ট্রিমটি প্রায় ৫ হাজার টোকেনের চাঙ্কে আউটপুট পাঠায়। চ্যাঙ্কগুলির মধ্যে পজ থাকা স্বাভাবিক। ইন্টার্যাকশন আটকে নেই, তাই কানেকশন খোলা রাখুন।
ব্যাকগ্রাউন্ড স্ট্যাটাস
ব্যাকগ্রাউন্ড ইন্টার্যাকশন ২৪ ঘণ্টা পর্যন্ত চলতে পারে। স্ট্যাটাস in_progress বা queued না থাকলে, এই টেবিল ব্যবহার করে টার্মিনাল স্টেট ম্যানেজ করুন:
| স্ট্যাটাস | অর্থ | কী করতে হবে |
|---|---|---|
completed |
মডেল শেষ হয়েছে। | steps-এ model_output ধাপগুলি সম্পূর্ণ করুন এবং 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 | প্রম্পট + হপ ১ ও ২ | ১৩২,০৭২ |
| 4 | প্রম্পট + হপ ১ থেকে ৩ | ১৯৭,৬০৮ |
| মোট | ৩৯৭,২১৬ |
total_input_tokens প্রায় ৩,৯৭,০০০ টোকেন রিপোর্ট করে (ইমপ্লিসিট ক্যাশিংয়ের মাধ্যমে বারবার হপ ইনপুট অটোমেটিক ৯৫% ডিসকাউন্ট করা হয়), যদিও আসল কনটেক্সটের সাইজ মাত্র ২,০১,০০০ টোকেন: ১,০০০ টোকেনের প্রম্পট এবং ২,০০,০০০ টোকেনের থিঙ্কিং ও আউটপুট।
স্ট্রিম চলাকালীন, step.stop ও interaction.status_update ইভেন্ট, দু'টিতেই usage (ইন্টার্যাকশনের জন্য ক্রমপুঞ্জিত) অন্তর্ভুক্ত থাকে। একসাথে যোগ করার পরিবর্তে লেটেস্ট usage ভ্যালু পড়ুন।
বিলিং সম্পর্কে জানা
আপনি প্রতিটি হপে প্রতিটি টোকেনের জন্য পেমেন্ট করেন, এর মধ্যে শুধুমাত্র চিন্তাভাবনা অন্তর্ভুক্ত হপও আছে।
- ক্যাশে ডিসকাউন্ট: ইমপ্লিসিট ক্যাশিং প্রতিটি হপে পুনরাবৃত্ত ইনপুটকে ৯৫% ডিসকাউন্ট দেয়। শুরুর দিকের দামের মেয়াদ চলাকালীন ক্যাশে করা ইনপুটের খরচ $২.০০-এর পরিবর্তে $০.১০ প্রতি ১ মিলিয়ন টোকেন।
- বাতিল করা ও সম্পূর্ণ না হওয়া ইন্টার্যাকশন: ইন্টার্যাকশন শেষ হওয়ার আগে সম্পূর্ণ করা সব কাজের জন্য আপনাকে পেমেন্ট করতে হবে।
সমস্যার সমাধান
| সমস্যার উপসর্গ | সমস্যার কারণ ও সমাধান |
|---|---|
| আউটপুট 64K-তে থেমে যায় | background হল false, অথবা max_output_tokens সেট করা নেই। background: true ও max_output_tokens-এর মান ৬৫,৫৩৬-এর থেকে বেশি সেট করুন। |
| ৪০০: "max_output_tokens greater than 65536 is not yet supported with background=false." | ব্যাকগ্রাউন্ড এক্সিকিউশন ছাড়া দীর্ঘ ডিকোড এখনও উপলভ্য নেই। background: true সেট করুন। |
| 400: "ব্যাকগ্রাউন্ড ইন্টার্যাকশনের জন্য store=true প্রয়োজন" | ব্যাকগ্রাউন্ড এক্সিকিউশনের জন্য store: true প্রয়োজন। |
incomplete স্ট্যাটাসে কোনও টেক্সট নেই |
মডেলটি চিন্তাভাবনার জন্য সব টোকেন ব্যবহার করেছে। max_output_tokens বাড়ান বা thinking_level কমান। |
| কনটেক্সট কম্প্যাকশন খুব তাড়াতাড়ি শুরু হয়ে যায় | আপনার এজেন্ট ফ্রেমওয়ার্ক বা মূল্যায়ন টুল total_input_tokens পড়ে। টোকেন গণনা করা দেখুন। |
সীমাবদ্ধতা
- ব্যাকগ্রাউন্ড এক্সিকিউশন ছাড়া দীর্ঘ ডিকোড করা যাবে না:
background: false-এর সাথে ইন্টার্যাকশন ৬৫,৫৩৬ টোকেনে থেমে যায়। শীঘ্রই সহায়তা পাওয়া যাবে। - দৈর্ঘ্য সংক্রান্ত টার্গেট নেই: মডেলটি টোকেনের দৈর্ঘ্য বা শব্দের সংখ্যা সংক্রান্ত টার্গেট মেনে চলে না।