লং ডিকোড, Gemini 4 Argon-কে গভীর যুক্তিযুক্ত কাজের জন্য সিঙ্গেল-রিকোয়েস্ট আউটপুট সীমা পেরিয়ে,ইউনিফায়েড ১ মিলিয়ন-টোকেন কন্টেক্সট উইন্ডো (ইনপুট,থিঙ্কিং ও আউটপুট জুড়ে ১, ০৪৮, ৫৭৬ টোকেন শেয়ার করা হয়) পর্যন্ত জেনারেট করতে দেয়।
শুধু মডেল আইডি পরিবর্তন করলেই দীর্ঘ ডিকোড চালু হয় না। অতিরিক্ত সেট-আপ ছাড়া, স্ট্রিমিং কলের জন্য ৬৪ হাজার টোকেন এবং নন-স্ট্রিমিং কলের জন্য ৩২ হাজার টোকেনে আউটপুট বন্ধ হয়ে যায়। লং ডিকোড চালু করার সবচেয়ে দ্রুত উপায় হল Google GenAI SDK আপগ্রেড করা এবং max_output_tokens-এর মান ৬৫,৫৩৬-এর বেশি সেট করা। এই নির্দেশিকা থেকে আপনি জানতে পারবেন যে লং ডিকোড কীভাবে কাজ করে, কখন এটি ব্যবহার করতে হয় এবং generateContent-এর মাধ্যমে কীভাবে এটি চালু করতে হয়।
ডিকোড কতক্ষণ কাজ করে
একটি স্ট্রিমিং বা SDK অনুরোধ সর্বাধিক ৬৪ হাজার টোকেন জেনারেট করে এবং নন-স্ট্রিমিং REST অনুরোধ সর্বাধিক ৩২ হাজার টোকেন জেনারেট করে। কোনও উত্তরের জন্য আরও টোকেন প্রয়োজন হলে, মডেলটি একাধিক অনুরোধ-ও-উত্তর হপ জুড়ে এটি তৈরি করে, যার প্রতিটি আগের হপ যেখানে থেমেছিল সেখান থেকে চলতে থাকে।
- ইনপুট ও আউটপুট টোকেনের সম্মিলিত সীমা: ইনপুট, থিঙ্কিং, ফাংশন কল ও চূড়ান্ত উত্তর ১ মিলিয়ন টোকেনের একটি উইন্ডো শেয়ার করে। আউটপুট আপনার ইনপুট টোকেন থেকে ১,০৪৮,৫৭৬ পর্যন্ত ব্যবহার করতে পারে।
- প্রতিটি হপে সীমা: একটি হপ সর্বাধিক ৬৫,৫৩৬টি আউটপুট টোকেন রিটার্ন করে। নন-স্ট্রিমিং REST অনুরোধে সর্বাধিক ৩২,৭৬৮টি ফলাফল দেখানো হয়।
- চালিয়ে যাওয়ার সিগন্যাল: মডেলটি ক্যাপে পৌঁছে গেলে এবং টোকেন বাকি থাকলে, উত্তরটি
finish_reason: CONTINUATIONএবংcontinuation_tokenদিয়ে শেষ হয়। - নেক্সট হপ: ক্লায়েন্ট টোকেন সহ একই অনুরোধ আবার পাঠায়। মডেলটি যেখানে থেমে গিয়েছিল সেখান থেকে আবার শুরু করে।
- সব হপের জন্য একটি মোট:
max_output_tokensসব হপের জন্য একসাথে মোট থিঙ্কিং ও আউটপুট টোকেন সেট করে। - স্টপ সিগন্যাল: মডেলটি
max_output_tokens-এর সবকটি ব্যবহার করে ফেললে, উত্তরটিfinish_reason: MAX_TOKENSদিয়ে শেষ হয়।
কঠিন সমস্যার ক্ষেত্রে, একটি হপ ইন্টার্নাল থিঙ্কিংয়ে তার সব টোকেন খরচ করে ফেলতে পারে এবং continuation_token সহ খালি টেক্সট রিটার্ন করতে পারে। এটি স্বাভাবিক এবং চূড়ান্ত উত্তর পরে পাওয়া যায়।
ডিফল্ট আউটপুট সীমা
লং ডিকোড ছাড়া, একটি অনুরোধ এইসব প্রতি-অনুরোধের সীমায় থেমে যায়:
- Google GenAI SDK (
generate_content)-এর মাধ্যমে স্ট্রিমিং অনুরোধ ও নন-স্ট্রিমিং অনুরোধ: ডিফল্ট হিসেবে ৬৪K আউটপুট টোকেন। - সরাসরি নন-স্ট্রিমিং REST কল (
generateContent): ডিফল্ট হিসেবে ৩২ হাজার আউটপুট টোকেন।continuation_tokenনা থাকা স্ট্রিমিং নয় এমন REST কলেmax_output_tokens-এর মান ৩২,৭৬৮-এর বেশি সেট করলে400সমস্যা হয়।
| আপনি কীভাবে মডেলকে কল করেন | লং ডিকোড ছাড়া আউটপুট সীমা | লঞ্চ সেটিংয়ে লং ডিকোড খুলুন | কী করতে হবে |
|---|---|---|---|
| Google GenAI SDK, লেটেস্ট ভার্সন | ৬৪K | হ্যাঁ, SDK আপনার জন্য কাজ করা চালিয়ে যাবে | max_output_tokens সেট করুন। |
| Google GenAI SDK, পুরনো ভার্সন, নন-স্ট্রিমিং | ৬৪K | না | SDK আপগ্রেড করুন। |
REST streamGenerateContent |
৬৪K | হ্যাঁ, আপনার নিজস্ব লুপের সাথে | একটি লুপ লিখুন। বিকল্প ২ দেখুন। |
REST generateContent |
৩২ হাজার | হ্যাঁ, আপনার নিজের লুপের সাথে | একটি লুপ লিখুন। বিকল্প ২ দেখুন। |
কখন লং ডিকোড ব্যবহার করতে হবে
বেশিরভাগ অনুরোধই একটি অনুরোধের সীমার মধ্যে শেষ হয় (স্ট্রিমিং এবং SDK কলের জন্য ৬৪K টোকেন, বা নন-স্ট্রিমিং REST কলের জন্য ৩২K টোকেন)। একটি অনুরোধে যতগুলি টোকেন অনুমোদিত, তার থেকে বেশি সম্মিলিত থিঙ্কিং ও আউটপুট টোকেনের প্রয়োজন হলে, লং ডিকোড ব্যবহার করুন। max_output_tokens বাড়ালে, মডেলটি কঠিন সমস্যার সমাধান করার জন্য আরও বেশি সুযোগ পায়, এর ফলে সাধারণ উত্তর আরও দীর্ঘ হয় না।
| ওয়ার্কলোড | লং ডিকোড ব্যবহার করবেন? | কেন |
|---|---|---|
| কঠিন অঙ্ক, বিজ্ঞান, গবেষণা ও আনুষ্ঠানিক প্রমাণ | হ্যাঁ | মডেলটি তার যুক্তি অন্বেষণ এবং পরীক্ষা করার জন্য ৬৪ হাজারের বেশি টোকেন খরচ করতে পারে। |
| সবচেয়ে কঠিন কোডিং ও এজেন্টিক টাস্ক | হ্যাঁ | কিছু টাস্কের ক্ষেত্রে, একটি উত্তরে ৬৪ হাজারের বেশি টোকেন চিন্তা ও কোড প্রয়োজন হয়। বেশিরভাগ কোডিং ও এজেন্টিক টাস্ক ৬৪ হাজারের মধ্যে শেষ হয়। |
| মূল্যায়ন হার্নেস যা আউটপুট সীমায় থেমে যায় | হ্যাঁ | মডেল যখন চিন্তাভাবনা করার জন্য পুরো ৬৪ হাজার বা ৩২ হাজার অনুরোধ ব্যবহার করে, তখন লং ডিকোড উত্তর কেটে যাওয়া প্রতিরোধ করে। |
| চ্যাট, প্রশ্ন ও উত্তর, সারসংক্ষেপ, শ্রেণীবিভাগ এবং এক্সট্র্যাকশন | না | এইসব টাস্ক ৩২ হাজার টোকেনের মধ্যেই সম্পূর্ণ হয়ে যায়। |
| নির্দিষ্ট দৈর্ঘ্যের জন্য অনুরোধ, যেমন "৭০০,০০০ শব্দের একটি বই লিখুন" | না | মডেলটি দৈর্ঘ্যের টার্গেট মেনে চলে না। |
| এজেন্ট যারা অনেক ছোট ছোট টার্নে টুল কল করে | না | প্রতিটি টার্ন ছোট। প্রতিটি টার্নে বড় আউটপুট ইউনিফায়েড ১ মিলিয়ন ইনপুট ও আউটপুট উইন্ডো দ্রুত পূরণ করে। |
| ১ মিলিয়ন ইনপুট সীমার কাছাকাছি প্রম্পট | না | আউটপুট শুধুমাত্র ১M মাইনাস আপনার ইনপুট ব্যবহার করতে পারে। |
| লেটেন্সি-সংবেদনশীল অনুরোধ | না | লং ডিকোড কয়েক মিনিট ধরে চলতে পারে। |
max_output_tokens-এর মান বেশি সেট করলে, মডেলটি কঠিন সমস্যা নিয়ে আরও বেশি সময় ধরে চিন্তা করার সুযোগ পায়, তবে মডেলটি এখনও সিদ্ধান্ত নেয় যে কতটা লিখতে হবে। মডেল কতটা রিজনিং এফর্ট ব্যবহার করবে তা নিয়ন্ত্রণ করতে, thinking_level সেট করুন।
লং ডিকোড চালু করা
আপনি Google GenAI SDK (বিকল্প ১, বেশিরভাগ অ্যাপের জন্য সাজেস্ট করা) ব্যবহার করে অটোমেটিক দীর্ঘ ডিকোড রান করতে পারেন অথবা নিজের কন্টিনিউয়েশন লুপ লিখতে পারেন (বিকল্প ২)। দুটি বিকল্পই সম্পূর্ণ 1M-টোকেন কন্টেক্সট উইন্ডো সাপোর্ট করে।
| বিকল্প ১: Google GenAI SDK (সাজেস্ট করা) | বিকল্প ২: আপনার নিজস্ব স্ট্রিমিং লুপ | বিকল্প ২: আপনার নিজস্ব নন-স্ট্রিমিং লুপ | |
|---|---|---|---|
| কে প্রতিটি হপ শুরু করেন | SDK. আপনি max_output_tokens সেট করেছেন। |
প্রতিটি চেকপয়েন্টে বা ড্রপ করা স্ট্রিমের পরে আপনার কোড | প্রতি ৩২ হাজার টোকেনের জন্য আপনার কোড |
| অনুরোধ পিছু টোকেন | প্রতি হপে ৬৪ হাজার | প্রতি স্ট্রিমে ৬৪K, ৩২K-এর পরে প্রতি ৫K টোকেনে একটি চেকপয়েন্ট সহ | প্রতি অনুরোধে ৩২ হাজার টোকেন |
| অনুরোধ পিছু সময়সীমা | ২০ মিনিট | ২০ মিনিট | ২০ মিনিট |
| স্টোরেজ | সার্ভার স্টোরেজ নেই | সার্ভার স্টোরেজ নেই | কোনও সার্ভার স্টোরেজ নেই |
| এগুলির জন্য সেরা | অধিকাংশ অ্যাপ্লিকেশন | REST কলার এবং কাস্টম হার্নেস যা স্ট্রিম করে | সহজ মূল্যায়ন হার্নেস |
এনক্রিপ্ট করা continuation_token অনুরোধের মধ্যে মডেলের অবস্থা বহন করে, তাই সার্ভারে কিছুই স্টোর করা হয় না।
বিকল্প ১: Google GenAI SDK ব্যবহার করা (সাজেস্ট করা)
লেটেস্ট Google GenAI SDK-তে, স্ট্রিমিং ও নন-স্ট্রিমিং কল, দু'টির ক্ষেত্রেই automatic_continuation ডিফল্ট হিসেবে চালু করা থাকে, তাই আপনাকে এটি সেট করতে হবে না। আপনি max_output_tokens প্রতি অনুরোধের সীমা থেকে বেশি সেট করলে, SDK অটোমেটিক কন্টিনিউয়েশন হপ রান করে এবং একটি সম্মিলিত উত্তর রিটার্ন করে।
SDK আপগ্রেড করুন।
Python
pip install -U "google-genai>=2.30.1"জাভাস্ক্রিপ্ট
npm install "@google/genai@>=2.29.1"max_output_tokens৬৫,৫৩৬-এর থেকে বেশি সেট করুন।Python
from google import genai from google.genai import types client = genai.Client() # Reads GEMINI_API_KEY response = client.models.generate_content( model="gemini-4-argon", contents="Write a complete, rigorous proof of the prime number theorem.", config=types.GenerateContentConfig( max_output_tokens=262_144, # Total thinking and output for all hops thinking_config=types.ThinkingConfig(thinking_level="high"), automatic_continuation=True, # Default. Shown for clarity. ), ) print(response.text) print("Finish reason:", response.candidates[0].finish_reason) print("Prompt size:", response.usage_metadata.initial_prompt_token_count) print("Billed tokens:", response.usage_metadata.total_token_count)জাভাস্ক্রিপ্ট
import { GoogleGenAI, ThinkingLevel } from "@google/genai"; const ai = new GoogleGenAI({}); // Reads GEMINI_API_KEY const response = await ai.models.generateContent({ model: "gemini-4-argon", contents: "Write a complete, rigorous proof of the prime number theorem.", config: { maxOutputTokens: 262144, // Total thinking and output for all hops thinkingConfig: { thinkingLevel: ThinkingLevel.HIGH }, automaticContinuation: true, // Default. Shown for clarity. }, }); console.log(response.text); console.log("Finish reason:", response.candidates?.[0]?.finishReason); console.log("Prompt size:", response.usageMetadata?.initialPromptTokenCount); console.log("Billed tokens:", response.usageMetadata?.totalTokenCount);
এইসব পয়েন্ট মনে রাখবেন:
- স্ট্রিমিং:
generate_content_stream(Python) ওgenerateContentStream(JavaScript) আপনার জন্য চালু থাকবে। চেকপয়েন্টের পরে স্ট্রিম বন্ধ হয়ে গেলে, SDK সেই চেকপয়েন্ট থেকে আবার শুরু করে। - টাইম-আউট: টাইম-আউট এবং আবার চেষ্টা করার বিষয়টি প্রতিটি হপের ক্ষেত্রে প্রযোজ্য, সম্পূর্ণ রানের ক্ষেত্রে নয়।
- ম্যানুয়াল কন্ট্রোল: নিজে লুপ চালাতে,
automatic_continuation=False(Python) বাautomaticContinuation: false(JavaScript) সেট করুন। তারপর ২ নম্বর বিকল্প অনুসরণ করুন। - ব্যবহার: ব্যবহারের ফিল্ডে সব হপের যোগফল দেখানো হয়। আপনার প্রম্পটের সাইজ জানতে,
initial_prompt_token_countপড়ুন। টোকেন গণনা করা দেখুন।
বিকল্প ২: আপনার নিজের লুপ লেখা
আপনি সরাসরি REST কল করলে, লেটেস্ট SDK ছাড়া কোনও ভাষা ব্যবহার করলে অথবা সম্পূর্ণ কন্ট্রোল প্রয়োজন হলে, নিজের লুপ লিখুন। এছাড়াও, আপনি রেফারেন্স হিসেবে Python এবং JavaScript/TypeScript-এ আমাদের Google GenAI SDK ইমপ্লিমেন্টেশন দেখতে পারেন।
এই নিয়মগুলি মেনে চলুন:
- প্রতিটি হপে একই অনুরোধ পাঠান। আসল
contents,system_instruction,toolsএবংgeneration_configপাঠান।max_output_tokensএকই রাখুন। contents-এ আংশিক আউটপুট যোগ করবেন না।continuation_token-এ মডেলের স্টেট থাকে, যার মধ্যে মডেলের চিন্তাভাবনাও অন্তর্ভুক্ত।- শুধুমাত্র লেটেস্ট টোকেন পাঠান। প্রতিটি টোকেনে আগের সব প্রোগ্রেস থাকে।
finish_reasonCONTINUATIONথাকাকালীন চালিয়ে যান। অন্য কোনও কারণে শেষ হলে বন্ধ করে দাও।- শেষ হপের পরে অংশগুলি যোগ করুন। কথোপকথনের ইতিহাসের জন্য সব হপের অংশগুলিকে একটি মডেল টার্নে একত্রিত করুন।
Python
from google import genai
from google.genai import types
client = genai.Client() # Reads GEMINI_API_KEY
PROMPT = "Write a complete, rigorous proof of the prime number theorem."
parts = []
token = None
while True:
response = client.models.generate_content(
model="gemini-4-argon",
contents=PROMPT, # The original contents on every request
config=types.GenerateContentConfig(
max_output_tokens=262_144, # The same total on every request
thinking_config=types.ThinkingConfig(thinking_level="high"),
automatic_continuation=False, # You run the loop
continuation_token=token,
),
)
candidate = response.candidates[0]
if candidate.content and candidate.content.parts:
parts.extend(candidate.content.parts)
token = candidate.continuation_token
if candidate.finish_reason != types.FinishReason.CONTINUATION or not token:
break
print("".join(p.text for p in parts if p.text and not p.thought))
print("Finish reason:", candidate.finish_reason)
জাভাস্ক্রিপ্ট
import { GoogleGenAI, ThinkingLevel } from "@google/genai";
const ai = new GoogleGenAI({}); // Reads GEMINI_API_KEY
const PROMPT = "Write a complete, rigorous proof of the prime number theorem.";
const parts = [];
let token = undefined;
let candidate = undefined;
while (true) {
const response = await ai.models.generateContent({
model: "gemini-4-argon",
contents: PROMPT, // The original contents on every request
config: {
maxOutputTokens: 262144, // The same total on every request
thinkingConfig: { thinkingLevel: ThinkingLevel.HIGH },
automaticContinuation: false, // You run the loop
continuationToken: token,
},
});
candidate = response.candidates?.[0];
if (candidate?.content?.parts) {
parts.push(...candidate.content.parts);
}
token = candidate?.continuationToken;
if (candidate?.finishReason !== "CONTINUATION" || !token) {
break;
}
}
console.log(parts.filter((p) => p.text && !p.thought).map((p) => p.text).join(""));
console.log("Finish reason:", candidate?.finishReason);
বিশ্রাম
# Hop 1: send the request with max_output_tokens.
curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-4-argon:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"role": "user", "parts": [{"text": "Write a complete, rigorous proof of the prime number theorem."}]}],
"generationConfig": {
"maxOutputTokens": 262144,
"thinkingConfig": {"thinkingLevel": "high"}
}
}'
# Hop 2: if finishReason is CONTINUATION, send the same request plus the token.
curl -s "https://generativelanguage.googleapis.com/v1beta/models/gemini-4-argon:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"role": "user", "parts": [{"text": "Write a complete, rigorous proof of the prime number theorem."}]}],
"generationConfig": {
"maxOutputTokens": 262144,
"thinkingConfig": {"thinkingLevel": "high"}
},
"continuationToken": "TOKEN_FROM_HOP_1"
}'
সম্পূর্ণভাবে চিন্তাভাবনা করার জন্য খরচ করা হপ finishReason: "CONTINUATION" সহ ফাঁকা text রিটার্ন করে। এটিকে স্বাভাবিক অগ্রগতি হিসেবে বিবেচনা করুন এবং পরবর্তী হপের জন্য অনুরোধ করুন:
{
"candidates": [{
"content": {"role": "model", "parts": [{"text": ""}]},
"finishReason": "CONTINUATION",
"continuationToken": "CiQ4ZmQ3..."
}],
"usageMetadata": {
"promptTokenCount": 142,
"candidatesTokenCount": 0,
"thoughtsTokenCount": 32768,
"totalTokenCount": 32910
}
}
স্ট্রিমিং লুপের জন্য আরও একটি নিয়ম প্রয়োজন। প্রথম ৩২,৭৬৮টি টোকেনের পরে, স্ট্রিমটি প্রতি ৫,০০০টি টোকেনে একটি চেকপয়েন্ট টোকেন পাঠায়। নতুন চাঙ্ক পেন্ডিং তালিকায় রাখুন। কোনও চ্যাঙ্কে continuation_token থাকলে, আপনার কমিটেড আউটপুটে বাকি থাকা চ্যাঙ্ক সরিয়ে টোকেন সেভ করুন। স্ট্রিম ড্রপ হলে, বাকি থাকা চাঙ্ক বাতিল করে শেষ টোকেন থেকে আবার শুরু করুন। প্রথম চেকপয়েন্টের আগে স্ট্রিম বন্ধ হয়ে গেলে, আসল অনুরোধটি আবার পাঠান।
max_output_tokens সেট করুন
max_output_tokens সব হপ জুড়ে থিঙ্কিং ও আউটপুটের জন্য সম্মিলিত সীমা সেট করে। এটি কমালে মডেলটি আরও সংক্ষিপ্তভাবে চিন্তা করে না, বরং উত্তরটি আরও তাড়াতাড়ি শেষ হয়ে যায়।
| আপনার ওয়ার্কলোড | সাজেস্ট করা হয়েছে max_output_tokens |
|---|---|
| ৩২ হাজারের কম সীমা সহ আগে থেকে থাকা অ্যাপ | সেটিকে বাড়িয়ে ৩২,৭৬৮ করুন। |
| দীর্ঘ কোডিং ও এজেন্টিক টাস্ক | ৬৫,৫৩৬ থেকে শুরু করুন। |
| কঠিন গণিত, বিজ্ঞান, রিসার্চ ও প্রমাণ | আপনার ইনপুট টোকেন বাদ দিয়ে ২৬২,১৪৪ থেকে ১,০৪৮,৫৭৬ পর্যন্ত ভ্যালু পরীক্ষা করুন। |
কম টোকেন ব্যবহার করতে, thinking_level-এর মান কমান। সবচেয়ে কঠিন রিজনিং টাস্কের জন্য high ব্যবহার করুন। বেশিরভাগ কোডিং ও এজেন্টিক কাজের জন্য medium (ডিফল্ট) ব্যবহার করুন। কম জটিল টাস্কের জন্য low ব্যবহার করুন।
দীর্ঘ সময় ধরে চলা অনুরোধ ম্যানেজ করা
Gemini 4 Argon কঠিন সমস্যার ক্ষেত্রে Gemini 3.x মডেলের চেয়ে বেশি সময় ধরে চিন্তা করে, তাই আপনার ক্লায়েন্ট টাইম-আউট বাড়ানো উচিত যাতে দীর্ঘ অনুরোধগুলি আগেই ডিসকানেক্ট না হয়ে যায়।
- নন-স্ট্রিমিং কল: ১০ মিনিট পরে সার্ভার কানেকশন বন্ধ করে দেয়।
- স্ট্রিমিং কল: ২০ মিনিট পরে সার্ভার স্ট্রিম বন্ধ করে দেয়।
- ক্লায়েন্ট টাইমআউট: আপনার HTTP রিড টাইমআউট ২০ মিনিটে সেট করুন। ৩-মিনিট বা ৫-মিনিটের টাইমআউট অনুরোধটি তাড়াতাড়ি বন্ধ করে দেয়।
Python-এ, ক্লায়েন্টের টাইমআউট মিলিসেকেন্ডে সেট করুন:
client = genai.Client(http_options=types.HttpOptions(timeout=1_200_000)) # 20 minutes
আপনার ক্লায়েন্ট পোল করে এমন কাজের জন্য, Interactions API সার্ভারে দীর্ঘ ডিকোড চালায়। ব্যাকগ্রাউন্ড এক্সিকিউশন দেখুন।
মডেল সব আউটপুট টোকেন ব্যবহার করলে আবার শুরু করুন
কোনও উত্তর MAX_TOKENS দিয়ে শেষ হলেও, তাতে continuation_token থাকে। আপনার কাছে দুটি বিকল্প আছে:
- চালিয়ে যান: টোকেন ও আরও বেশি
max_output_tokensসহ একই অনুরোধ পাঠান। ভ্যালু অবশ্যই এখনও পর্যন্ত ব্যবহার করা টোকেনের থেকে বেশি হতে হবে। অন্যথায়, API 400 সমস্যা কোড রিটার্ন করে। - আবার শুরু করুন: বেশি
max_output_tokensও কোনও টোকেন না দিয়ে আসল অনুরোধ পাঠান। দুটি রানই আপনাকে পেমেন্ট করতে হবে।
টোকেন গণনা করুন
অটোমেটিক কন্টিনিউয়েশন সহ, usage_metadata সব হপ জুড়ে মোট সংখ্যা রিপোর্ট করে। SDK প্রতিটি কাউন্ট ফিল্ড যোগ করে: prompt_token_count, cached_content_token_count, candidates_token_count, thoughts_token_count এবং total_token_count।
prompt_token_count প্রতিটি হপের ইনপুট টোকেন যোগ করে। প্রতিটি হপ আপনার প্রম্পট এবং এখনও পর্যন্ত জেনারেট করা সবকিছু ইনপুট হিসেবে মডেলে ফেরত পাঠায়, তাই একই টোকেন পরবর্তী প্রতিটি হপে আবার গণনা করা হয়। যেমন, Google GenAI SDK-এর মাধ্যমে ১, ০০০ টোকেনের প্রম্পট যা ২০০,০০০ টোকেনের থিঙ্কিং ও আউটপুট তৈরি করে,সেটি চারটি হপ নেয়:
| Hop | মডেলে ইনপুট পাঠানো হয়েছে | ইনপুট টোকেন |
|---|---|---|
| 1 | প্রম্পট | ১,০০০ |
| 2 | প্রম্পট + হপ ১ | ৬৬,৫৩৬ |
| 3 | প্রম্পট + হপ ১ ও ২ | ১৩২,০৭২ |
| 4 | প্রম্পট + হপ ১ থেকে ৩ | ১৯৭,৬০৮ |
| মোট | ৩৯৭,২১৬ |
prompt_token_count প্রায় ৩৯৭,০০০ টোকেন (ইমপ্লিসিট ক্যাশিংয়ের মাধ্যমে রিপিটেড হপ ইনপুট অটোমেটিক ৯৫% ডিসকাউন্ট করা হয়েছে) এবং total_token_count প্রায় ৫৯৭,০০০ টোকেন রিপোর্ট করে, যদিও আসল কনটেক্সটের সাইজ মাত্র ২০১,০০০ টোকেন: ১,০০০ টোকেনের প্রম্পট এবং ২০০,০০০ টোকেনের থিঙ্কিং ও আউটপুট। একটি নন-স্ট্রিমিং REST লুপ 32K হপ ব্যবহার করে, তাই একই আউটপুটের জন্য এটি সাতটি হপ নেয় এবং 695,128টি ইনপুট টোকেন রিপোর্ট করে।
| আপনি কীভাবে মডেলকে কল করেন | usage_metadata কী দেখায় |
খরচের জন্য | প্রম্পটের সাইজের জন্য |
|---|---|---|---|
| Google GenAI SDK, অটোমেটিক কন্টিনিউ করা (ডিফল্ট) | সব হপ মিলিয়ে মোট | ব্যবহারের ফিল্ড যেমন আছে তেমন পড়ুন। | usage_metadata.initial_prompt_token_count (Python) বা usageMetadata.initialPromptTokenCount (JavaScript) পড়ুন। |
automatic_continuation=False বা REST সহ SDK |
প্রতিটি উত্তরের জন্য একটি হপ | হপ জুড়ে প্রতিটি ফিল্ড যোগ করুন। | প্রথম হপ থেকে prompt_token_count পড়ুন। |
prompt_token_count এবং total_token_count হল প্রতিটি হপের যোগফল, আপনার কনটেক্সটের সাইজ নয়। কখন আপনার কথোপকথনের ইতিহাস (কন্টেক্সট কম্প্যাকশন) সারসংক্ষেপ বা ট্রিম করতে হবে অথবা কন্টেক্সট সীমা এনফোর্স করতে হবে তা নির্ধারণ করতে এগুলি ব্যবহার করবেন না। কন্টেক্সটের সাইজ অনুমান করতে, টেবিল থেকে আপনার প্রম্পটের সাইজ candidates_token_count এবং thoughts_token_count-এ যোগ করুন।
লং ডিকোড চালানোর আগে আপনার এজেন্ট ফ্রেমওয়ার্ক, মূল্যায়ন টুল বা প্রক্সি আপডেট করুন:
- এজেন্ট ও মূল্যায়ন টুল: আপনার কোড যদি প্রসঙ্গ সংক্ষিপ্ত করে বা টোকেন সীমায় রান বন্ধ করে দেয়, তাহলে যোগ করা
prompt_token_count-এর পরিবর্তেinitial_prompt_token_count(বা REST-এ প্রথম হপেরprompt_token_count) ব্যবহার করুন। যেসব উত্তর এক হপে শেষ হয় সেগুলি দুটি ফিল্ডেই একই ভ্যালু দেখায়, তাই ছোট টেস্টে সমস্যা দেখা যায় না। - REST কল করে এমন প্রক্সি ও গেটওয়ে: প্রতিটি REST রেসপন্স শুধু নিজের হপ রিপোর্ট করে। খরচের জন্য হপ জুড়ে প্রতিটি ফিল্ড যোগ করুন এবং প্রথম হপের
promptTokenCount-কে প্রম্পট সাইজ হিসেবে রাখুন। অন্যথায়, SDK ব্যবহারকারীরা একই অনুরোধের জন্য যে সংখ্যা দেখতে পান, আপনার ব্যবহারকারীরা তার থেকে আলাদা সংখ্যা দেখতে পাবেন। - লগ ও সিরিয়ালাইজ করা উত্তর: SDK ক্লায়েন্টে
initial_prompt_token_countগণনা করে। এটি REST রেসপন্স বা SDK-এর JSON আউটপুটে নেই, যেমনmodel_dump()। পরে প্রয়োজন হলে এটি আলাদা ভ্যালু হিসেবে সেভ করুন।
আপনি নিজের লুপে স্ট্রিম করলে, প্রতিটি স্ট্রিমে usage_metadata জমা হয়। প্রতিটি স্ট্রিমের শুধুমাত্র শেষ ভ্যালু রেখে দিন, তারপর হপ জুড়ে ভ্যালু যোগ করুন।
বিলিং সম্পর্কে জানা
আপনি প্রতিটি হপের প্রতিটি টোকেনের জন্য পেমেন্ট করেন, যার মধ্যে শুধু চিন্তা করা হপও অন্তর্ভুক্ত।
- ক্যাশে ডিসকাউন্ট: ইমপ্লিসিট ক্যাশিং প্রতিটি হপে পুনরাবৃত্ত ইনপুটকে ৯৫% ডিসকাউন্ট দেয়। ইন্ট্রোডাক্টরি পিরিয়ডে ক্যাশে করা ইনপুটের জন্য প্রতি ১ মিলিয়ন টোকেনে $২.০০-এর পরিবর্তে $০.১০ খরচ হয়।
- ক্যাশের মেয়াদ শেষ হওয়া: ব্যবহার না করলে ১৫ থেকে ২০ মিনিট পরে ক্যাশের মেয়াদ শেষ হয়ে যায়। হপের মধ্যে দীর্ঘ বিরতি থাকলে, সম্পূর্ণ ইনপুট রেট আবার চার্জ করা হয়।
- ব্যর্থ নন-স্ট্রিমিং হপ: উত্তর সম্পূর্ণ হলে তবেই আপনাকে পেমেন্ট করতে হবে। ব্যর্থ বা ড্রপ করা অনুরোধের জন্য $০ খরচ হয়।
- ড্রপ করা স্ট্রিম: ৩২,০০০ টোকেনের আগে ড্রপ করা স্ট্রিমের জন্য $০ খরচ হয়। এর পরে, আপনি শেষ চেকপয়েন্ট টোকেন পর্যন্ত পেমেন্ট করেন, কারণ আপনি সেখান থেকে আবার শুরু করতে পারবেন।
সমস্যার সমাধান
| সমস্যার উপসর্গ | সমস্যার কারণ ও সমাধান |
|---|---|
CONTINUATION-এর সাথে আউটপুট ৬৪K বা ৩২K-তে বন্ধ হয়ে যায় |
মডেলের কাছে টোকেন আছে, কিন্তু অনুরোধটি আর চালিয়ে যাওয়া হয়নি। SDK আপগ্রেড করুন অথবা লুপ যোগ করুন। |
MAX_TOKENS-এর সাথে আউটপুট ৬৪K বা ৩২K-তে বন্ধ হয়ে যায় |
max_output_tokens সেট করা নেই বা খুব কম। এটি ৬৫,৫৩৬-এর বেশি সেট করুন। |
MAX_TOKENS সহ খালি টেক্সট |
মডেলটি চিন্তাভাবনার জন্য সব টোকেন ব্যবহার করেছে। max_output_tokens বাড়ান বা thinking_level কমান। |
| 400: "কন্টিনিউয়েশন টোকেন আগে থেকেই আউটপুট টোকেন ব্যবহার করেছে..." | max_output_tokens এখনও পর্যন্ত ব্যবহৃত টোকেনের থেকে বেশি নয়। এটি উপরে তুলুন। |
thinking_level: "minimal"-এর জন্য সমস্যা অথবা thinking_level সহ thinking_budget-এর জন্য সমস্যা |
Gemini 4 Argon minimal-এ কাজ করে না। low, medium বা high ব্যবহার করুন। thinking_level বা thinking_budget সেট করুন, দুটিই নয়। |
thinking_budget, temperature, top_p বা top_k-এর জন্য সতর্কতা |
Gemini 4 Argon এইসব ফিল্ড এড়িয়ে যায় বা ম্যাপ করে। thinking_level ব্যবহার করুন এবং স্যাম্পেল প্যারামিটার সরিয়ে দিন। |
| অনুরোধ ৩ বা ৫ মিনিট পরে শেষ হয়ে যায় | ক্লায়েন্ট টাইম-আউট খুব কম। ২০ মিনিটের জন্য সেট করো। |
| কনটেক্সট কম্প্যাকশন খুব তাড়াতাড়ি শুরু হয় | হার্নেস যোগ করা ইনপুট পড়ে। পরিবর্তে initial_prompt_token_count পড়ুন। |
সীমাবদ্ধতা
- OpenAI compatibility এন্ডপয়েন্ট: লং ডিকোড উপলভ্য নেই। অনুরোধ প্রতি ক্যাপে আউটপুট বন্ধ হয়ে যায়।
- পুরনো SDK: নোটে উল্লেখ করা ন্যূনতম ভার্সনের আগের ভার্সন অটোমেটিক চালিয়ে যাওয়া হয় না।
- দৈর্ঘ্য: মডেলটি টোকেন-দৈর্ঘ্য বা শব্দ-সংখ্যা সংক্রান্ত লক্ষ্য অনুসরণ করে না।
চেকলিস্ট
- Google GenAI SDK-কে ন্যূনতম ভার্সনে আপগ্রেড করুন।
max_output_tokens৬৫,৫৩৬-এর থেকে বেশি সেট করুন।thinking_budgetনয়,thinking_level(low,mediumবাhigh) ব্যবহার করুন।- HTTP রিড টাইমআউট ২০ মিনিট হিসেবে সেট করুন।
- কন্টেক্সট সাইজ ও কম্প্যাকশনের জন্য
initial_prompt_token_countব্যবহার করুন। - বড় মূল্যায়নের আগে পরীক্ষা হিসেবে একটি প্রম্পট রান করুন।