মিথুন রাশির চিন্তাভাবনা

জেমিনি ৩ এবং ২.৫ সিরিজের মডেলগুলো এমন একটি 'চিন্তন প্রক্রিয়া' ব্যবহার করে যা তাদের যুক্তিবোধ এবং বহু-ধাপের পরিকল্পনা করার ক্ষমতাকে উল্লেখযোগ্যভাবে উন্নত করে, ফলে এগুলো কোডিং, উচ্চতর গণিত এবং ডেটা বিশ্লেষণের মতো জটিল কাজের জন্য অত্যন্ত কার্যকর হয়ে ওঠে।

আপনি যখন একটি থিঙ্কিং মডেল ব্যবহার করেন, তখন জেমিনি প্রতিক্রিয়া জানানোর আগে অভ্যন্তরীণভাবে যুক্তি-বিশ্লেষণ করে। ইন্টারঅ্যাকশনস এপিআই এই যুক্তি-বিশ্লেষণকে thought স্টেপস-এর মাধ্যমে প্রকাশ করে; এই নির্দিষ্ট ধাপগুলো steps অ্যারেতে ফাংশন কল, ব্যবহারকারীর ইনপুট বা মডেল আউটপুটের পাশাপাশি কালানুক্রমিকভাবে প্রদর্শিত হয়।

প্রতিটি চিন্তার ধাপে দুটি ক্ষেত্র থাকে:

মাঠ প্রয়োজনীয় বর্ণনা
signature ✅ হ্যাঁ মডেলের অভ্যন্তরীণ যুক্তি অবস্থার একটি এনক্রিপ্টেড উপস্থাপনা। এটি সর্বদা উপস্থিত থাকে, এমনকি যখন মডেলটি ন্যূনতম যুক্তি সম্পাদন করে তখনও।
summary ❌ না যুক্তির সারসংক্ষেপকারী বিষয়বস্তুর (টেক্সট এবং/অথবা ছবি) একটি অ্যারে। thinking_summaries কনফিগারেশন, মডেলটি যথেষ্ট যুক্তি বিশ্লেষণ করেছে কিনা, বা বিষয়বস্তুর ধরনের উপর নির্ভর করে এটি খালি থাকতে পারে (উদাহরণস্বরূপ, ছবির ল্যাটেন্টের টেক্সট সারসংক্ষেপ নাও থাকতে পারে)।

চিন্তার সাথে মিথস্ক্রিয়া

একটি থিংকিং মডেলের সাথে ইন্টারঅ্যাকশন শুরু করা অন্য যেকোনো ইন্টারঅ্যাকশন অনুরোধের মতোই। model ফিল্ডে থিংকিং সাপোর্টসহ মডেলগুলোর মধ্যে একটি নির্দিষ্ট করুন:

পাইথন

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input="Explain the concept of Occam's Razor and provide a simple, everyday example."
)
print(interaction.steps[-1].content[0].text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    model: "gemini-3-flash-preview",
    input: "Explain the concept of Occam's Razor and provide a simple, everyday example."
});
console.log(interaction.steps.at(-1).content[0].text);

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Api-Revision: 2026-05-20" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3-flash-preview",
    "input": "Explain the concept of Occam'\''s Razor and provide a simple example."
  }'

চিন্তার সারাংশ

চিন্তার সারাংশ মডেলের অভ্যন্তরীণ যুক্তি প্রক্রিয়া সম্পর্কে অন্তর্দৃষ্টি প্রদান করে। ডিফল্টরূপে, শুধুমাত্র চূড়ান্ত আউটপুট ফেরত দেওয়া হয়। আপনি thinking_summaries এর মাধ্যমে চিন্তার সারাংশ সক্রিয় করতে পারেন:

পাইথন

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input="What is the sum of the first 50 prime numbers?",
    generation_config={
        "thinking_summaries": "auto"
    }
)

for step in interaction.steps:
    if step.type == "thought":
        print("Thought summary:")
        for content_block in step.summary:
            if content_block.type == "text":
                print(content_block.text)
        print()
    elif step.type == "model_output":
        for content_block in step.content:
            if content_block.type == "text":
                print("Answer:")
                print(content_block.text)
                print()

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    model: "gemini-3-flash-preview",
    input: "What is the sum of the first 50 prime numbers?",
    generation_config: {
        thinking_summaries: "auto"
    }
});

for (const step of interaction.steps) {
    if (step.type === "thought") {
        console.log("Thought summary:");
        for (const contentBlock of step.summary) {
            if (contentBlock.type === "text") console.log(contentBlock.text);
        }
    } else if (step.type === "model_output") {
        for (const contentBlock of step.content) {
            if (contentBlock.type === "text") {
                console.log("Answer:");
                console.log(contentBlock.text);
            }
        }
    }
}

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Api-Revision: 2026-05-20" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3-flash-preview",
    "input": "What is the sum of the first 50 prime numbers?",
    "generation_config": {
      "thinking_summaries": "auto"
    }
  }'

এইসব ক্ষেত্রে একটি চিন্তা-ব্লক-এ কোনো সারাংশ ছাড়াই শুধুমাত্র একটি স্বাক্ষর থাকতে পারে:

  • সাধারণ অনুরোধ, যেখানে মডেলটি একটি সারাংশ তৈরি করার জন্য যথেষ্ট কারণ খুঁজে পায়নি।
  • thinking_summaries: "none" , যেখানে সারাংশ স্পষ্টভাবে নিষ্ক্রিয় করা আছে
  • কিছু নির্দিষ্ট ধরণের বিষয়বস্তু, যেমন ছবি, এর পাঠ্য সারাংশ নাও থাকতে পারে।

আপনার কোডে সবসময় সেইসব থট ব্লক পরিচালনা করা উচিত যেখানে summary খালি বা অনুপস্থিত থাকে।

চিন্তাভাবনার সাথে স্ট্রিমিং

চিন্তা তৈরির সময় ক্রমবর্ধমান চিন্তার সারাংশ পেতে স্ট্রিমিং ব্যবহার করুন। চিন্তার ব্লকগুলি সার্ভার-সেন্ট ইভেন্টস (SSE) ব্যবহার করে দুটি স্বতন্ত্র ডেল্টা টাইপের মাধ্যমে সরবরাহ করা হয়:

ডেল্টা টাইপ ধারণ করে যখন পাঠানো হয়
thought_summary পাঠ্য বা ছবির সারাংশ বিষয়বস্তু ক্রমবর্ধমান সারসংক্ষেপ সহ এক বা একাধিক ডেল্টা
thought_signature ক্রিপ্টোগ্রাফিক স্বাক্ষর step.stop এর আগের শেষ ডেল্টা।

পাইথন

from google import genai

client = genai.Client()

prompt = """
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
Alice does not live in the red house.
Bob does not live in the green house.
Carol does not live in the red or green house.
Which house does each person live in?
"""

thoughts = ""
answer = ""

stream = client.interactions.create(
    model="gemini-3-flash-preview",
    input=prompt,
    generation_config={
        "thinking_summaries": "auto"
    },
    stream=True
)

for event in stream:
    if event.event_type == "step.delta":
        if event.delta.type == "thought_summary":
            if not thoughts:
                print("Thinking...")
            summary_text = event.delta.content.get('text', '') if hasattr(event.delta, 'content') else getattr(event.delta, 'text', '')
            print(f"[Thought] {summary_text}", end="")
            thoughts += summary_text
        elif event.delta.type == "text" and event.delta.text:
            if not answer:
                print("\nAnswer:")
            print(event.delta.text, end="")
            answer += event.delta.text

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const prompt = `Alice, Bob, and Carol each live in a different house on the same
street: red, green, and blue. Alice does not live in the red house.
Bob does not live in the green house.
Carol does not live in the red or green house.
Which house does each person live in?`;

let thoughts = "";
let answer = "";

const stream = await client.interactions.create({
    model: "gemini-3-flash-preview",
    input: prompt,
    generation_config: {
        thinking_summaries: "auto"
    },
    stream: true
});

for await (const event of stream) {
    if (event.event_type === "step.delta") {
        if (event.delta.type === "thought_summary") {
            if (!thoughts) console.log("Thinking...");
            const text = event.delta.content?.text || "";
            process.stdout.write(`[Thought] ${text}`);
            thoughts += text;
        } else if (event.delta.type === "text" && event.delta.text) {
            if (!answer) console.log("\nAnswer:");
            process.stdout.write(event.delta.text);
            answer += event.delta.text;
        }
    }
}

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Api-Revision: 2026-05-20" \
  -H 'Content-Type: application/json' \
  --no-buffer \
  -d '{
    "model": "gemini-3-flash-preview",
    "input": "Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue. Alice does not live in the red house. Bob does not live in the green house. Carol does not live in the red or green house. Which house does each person live in?",
    "generation_config": {
      "thinking_summaries": "auto"
    },
    "stream": true
  }'

স্ট্রিমিং রেসপন্সটি সার্ভার-সেন্ট ইভেন্টস (SSE) ব্যবহার করে এবং এটি বিভিন্ন ধাপ ও ইভেন্ট দ্বারা গঠিত। নিচের উদাহরণটি দেখুন।

event: interaction.created
data: {"interaction":{"id":"v1_xxx","status":"in_progress","object":"interaction","model":"gemini-3-flash-preview"},"event_type":"interaction.created"}

event: step.start
data: {"index":0,"step":{"signature":"","summary":[{"text":"**Evaluating the clues**\n\nI'm considering...","type":"text"}],"type":"thought"},"event_type":"step.start"}

event: step.delta
data: {"index":0,"delta":{"signature":"EpoGCpcGAXLI2nx/...","type":"thought_signature"},"event_type":"step.delta"}

event: step.stop
data: {"index":0,"event_type":"step.stop"}

event: step.start
data: {"index":1,"step":{"content":[{"text":"Based on the clues provided, here","type":"text"}],"type":"model_output"},"event_type":"step.start"}

event: step.delta
data: {"index":1,"delta":{"text":" is the answer to your question...","type":"text"},"event_type":"step.delta"}

event: step.stop
data: {"index":1,"event_type":"step.stop"}

event: interaction.completed
data: {"interaction":{"id":"v1_xxx","status":"completed","usage":{"total_tokens":530,"total_input_tokens":62,"total_output_tokens":171,"total_thought_tokens":297}},"event_type":"interaction.completed"}

event: done
data: [DONE]

চিন্তা নিয়ন্ত্রণ করা

জেমিনি মডেলরা স্বভাবতই গতিশীল চিন্তাভাবনায় নিযুক্ত থাকে এবং অনুরোধের জটিলতার উপর ভিত্তি করে যুক্তির প্রচেষ্টার পরিমাণ স্বয়ংক্রিয়ভাবে সামঞ্জস্য করে। আপনি thinking_level প্যারামিটার ব্যবহার করে এই আচরণ নিয়ন্ত্রণ করতে পারেন।

মডেল ডিফল্ট চিন্তাভাবনা সমর্থিত স্তর
জেমিনি-৩.১-প্রো-প্রিভিউ চালু (উচ্চ) নিম্ন, মাঝারি, উচ্চ
জেমিনি-৩-ফ্ল্যাশ-প্রিভিউ চালু (উচ্চ) ন্যূনতম, কম, মাঝারি, উচ্চ
জেমিনি-৩-প্রো-প্রিভিউ চালু (উচ্চ) নিম্ন, উচ্চ
জেমিনি-২.৫-প্রো চালু নিম্ন, মাঝারি, উচ্চ
জেমিনি-২.৫-ফ্ল্যাশ চালু নিম্ন, মাঝারি, উচ্চ
জেমিনি-২.৫-ফ্ল্যাশ-লাইট বন্ধ নিম্ন, মাঝারি, উচ্চ

পাইথন

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input="Provide a list of 3 famous physicists and their key contributions",
    generation_config={
        "thinking_level": "low"
    }
)
print(interaction.steps[-1].content[0].text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    model: "gemini-3-flash-preview",
    input: "Provide a list of 3 famous physicists and their key contributions",
    generation_config: {
        thinking_level: "low"
    }
});
console.log(interaction.steps.at(-1).content[0].text);

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Api-Revision: 2026-05-20" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3-flash-preview",
    "input": "Provide a list of 3 famous physicists and their key contributions",
    "generation_config": {
      "thinking_level": "low"
    }
  }'

চিন্তার স্বাক্ষর

চিন্তার স্বাক্ষর হলো মডেলের অভ্যন্তরীণ যুক্তির এনক্রিপ্টেড উপস্থাপনা। একাধিক পালা জুড়ে মিথস্ক্রিয়ায় যুক্তির ধারাবাহিকতা বজায় রাখার জন্য এগুলি প্রয়োজন।

generateContent API-এর তুলনায় Interactions API-এর মাধ্যমে থট সিগনেচার পরিচালনা করা অনেক বেশি সহজ।

ডিফল্টরূপে, যখন আপনি স্টেটফুল মোডে ইন্টারঅ্যাকশনস এপিআই ব্যবহার করেন ( store: true সেট করে এবং পরবর্তী টার্নগুলোতে previous_interaction_id পাস করার মাধ্যমে), তখন সার্ভার স্বয়ংক্রিয়ভাবে কথোপকথনের স্টেট পরিচালনা করে, যার মধ্যে সমস্ত থট ব্লক এবং সিগনেচার অন্তর্ভুক্ত থাকে। এই মোডে, সিগনেচার নিয়ে আপনার কিছু করার প্রয়োজন নেই। এগুলো সম্পূর্ণরূপে সার্ভার সাইডেই পরিচালিত হয়।

স্টেটলেস মোড

যদি আপনি কথোপকথনের অবস্থা নিজেই পরিচালনা করেন (স্টেটলেস মোড) এবং প্রতিটি অনুরোধে ইনপুট ও আউটপুটের সম্পূর্ণ ইতিহাস প্রেরণ করেন:

  • মডেলের কাছ থেকে যেভাবে সমস্ত thought ব্লকগুলো পেয়েছিলেন, আপনাকে অবশ্যই ঠিক সেভাবেই পুনরায় পাঠাতে হবে।
  • আপনার হিস্ট্রি থেকে থট ব্লকগুলো সরানো বা পরিবর্তন করা উচিত নয় , কারণ মডেলটির যুক্তি প্রক্রিয়া চালিয়ে যাওয়ার জন্য প্রয়োজনীয় সিগনেচারগুলো সেগুলোর মধ্যেই থাকে।
  • একটি সেশনের মধ্যে মডেল পরিবর্তন করার সময়ও, আপনাকে আগের মডেলের থট ব্লকগুলো পুনরায় পাঠাতে হবে। ব্যাকএন্ড সামঞ্জস্যতা পরিচালনা করে।

মূল্য নির্ধারণ

যখন চিন্তাভাবনা চালু থাকে, তখন প্রতিক্রিয়ার মূল্য নির্ধারণ করা হয় আউটপুট টোকেন এবং থিংকিং টোকেনের সমষ্টির মাধ্যমে। আপনি total_thought_tokens ফিল্ড থেকে তৈরি হওয়া মোট থিংকিং টোকেনের সংখ্যা জানতে পারবেন।

পাইথন

# ...
print("Thoughts tokens:", interaction.usage.total_thought_tokens)
print("Output tokens:", interaction.usage.total_output_tokens)

জাভাস্ক্রিপ্ট

// ...
console.log(`Thoughts tokens: ${interaction.usage.totalThoughtTokens}`);
console.log(`Output tokens: ${interaction.usage.totalOutputTokens}`);

থিংকিং মডেলগুলো চূড়ান্ত উত্তরের মান উন্নত করার জন্য পূর্ণাঙ্গ চিন্তা তৈরি করে এবং তারপর চিন্তন প্রক্রিয়া সম্পর্কে ধারণা দেওয়ার জন্য সারসংক্ষেপ আউটপুট করে। যদিও এপিআই (API) থেকে শুধুমাত্র সারসংক্ষেপই আউটপুট হিসেবে পাওয়া যায়, তবুও মডেলটির তৈরি করা প্রয়োজনীয় পূর্ণাঙ্গ চিন্তার টোকেনগুলোর ওপর ভিত্তি করে এর মূল্য নির্ধারণ করা হয়।

আপনি টোকেন গণনা নির্দেশিকা থেকে টোকেন সম্পর্কে আরও জানতে পারবেন।

সর্বোত্তম অনুশীলন

এই নির্দেশিকাগুলো অনুসরণ করে চিন্তন মডেলগুলো দক্ষতার সাথে ব্যবহার করুন।

  • যুক্তির পর্যালোচনা : ব্যর্থতা বুঝতে এবং নির্দেশনা উন্নত করতে চিন্তার সারাংশ বিশ্লেষণ করুন।
  • চিন্তার বাজেট নিয়ন্ত্রণ করুন : টোকেন বাঁচাতে মডেলটিকে দীর্ঘমেয়াদী আউটপুটের জন্য কম ভাবতে নির্দেশ দিন।
  • সহজ কাজ : তথ্য পুনরুদ্ধার বা শ্রেণীবদ্ধ করার জন্য ন্যূনতম চিন্তাভাবনা ব্যবহার করুন (যেমন, "ডিপমাইন্ড কোথায় প্রতিষ্ঠিত হয়েছিল?")।
  • মাঝারি মানের কাজ : ধারণা তুলনা করার জন্য স্বাভাবিক চিন্তাভাবনা অথবা সৃজনশীল যুক্তি ব্যবহার করুন (যেমন, ইলেকট্রিক ও হাইব্রিড গাড়ির তুলনা করুন)।
  • জটিল কাজ : উন্নত কোডিং, গণিত বা বহু-ধাপের পরিকল্পনার জন্য সর্বোচ্চ চিন্তাভাবনার ব্যবহার করুন (যেমন, AIME-এর গাণিতিক সমস্যা সমাধান করুন)।

এরপর কী?