ভাবছেন

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

চিন্তার মডেলগুলো নিম্নলিখিত বিন্যাস এবং বিকল্পগুলো প্রদান করে:

  • চিন্তার পরিমাণ নিয়ন্ত্রণ করুন
    একটি মডেল কতটা 'চিন্তা' করতে পারবে, তা আপনি নির্ধারণ করতে পারেন। লেটেন্সি বা খরচ কমানো যদি অগ্রাধিকার পায়, তবে এই কনফিগারেশনটি বিশেষভাবে গুরুত্বপূর্ণ। এছাড়াও, একটি মডেলের তার চিন্তা করার ক্ষমতা কতটা প্রয়োজন হতে পারে, তা নির্ধারণ করতে কাজের জটিলতার তুলনা পর্যালোচনা করুন।

    এই কনফিগারেশনটি হয় থিংকিং লেভেল ( জেমিনি ৩ এবং পরবর্তী মডেল) অথবা থিংকিং বাজেট ( জেমিনি ২.৫ মডেল) দিয়ে নিয়ন্ত্রণ করুন।

  • চিন্তার সারাংশ পান
    আপনি তৈরি করা প্রতিক্রিয়ার সাথে চিন্তার সারাংশ অন্তর্ভুক্ত করার জন্য এটি সক্রিয় করতে পারেন। এই সারাংশগুলো হলো মডেলের মূল চিন্তাভাবনার সংশ্লেষিত সংস্করণ এবং এগুলো মডেলের অভ্যন্তরীণ যুক্তি প্রক্রিয়া সম্পর্কে অন্তর্দৃষ্টি প্রদান করে।

  • চিন্তার স্বাক্ষর পরিচালনা করুন
    Firebase AI Logic SDK-গুলো আপনার জন্য স্বয়ংক্রিয়ভাবে থট সিগনেচার পরিচালনা করে, যা নিশ্চিত করে যে মডেলটি পূর্ববর্তী টার্নগুলোর থট কনটেক্সট অ্যাক্সেস করতে পারে, বিশেষ করে ফাংশন কলিং ব্যবহার করার সময়।

চিন্তন মডেল ব্যবহারের সর্বোত্তম অনুশীলন এবং নির্দেশনাসমূহ পর্যালোচনা করে নিন।



একটি চিন্তন মডেল ব্যবহার করুন

অন্যান্য মিথুন রাশির মডেলের মতোই একটি চিন্তন মডেল ব্যবহার করুন।

থিংকিং মডেল থেকে সর্বাধিক সুবিধা পেতে, এই পৃষ্ঠার পরবর্তী অংশে থিংকিং মডেল ব্যবহারের সর্বোত্তম অনুশীলন ও নির্দেশনা পর্যালোচনা করুন।

যে মডেলগুলো এই সক্ষমতা সমর্থন করে

শুধুমাত্র জেমিনি ৩ এবং জেমিনি ২.৫ মডেলগুলো এই সুবিধাটি সমর্থন করে।

  • gemini-3.1-pro-preview
  • gemini-3-pro-image-preview (ওরফে "ন্যানো ব্যানানা প্রো")
  • gemini-3.1-flash-image-preview (ওরফে "ন্যানো বানানা ২")
  • gemini-3-flash-preview
  • gemini-3.1-flash-lite-preview
  • gemini-2.5-pro
  • gemini-2.5-flash
  • gemini-2.5-flash-lite

চিন্তন মডেল ব্যবহারের জন্য সর্বোত্তম অনুশীলন ও নির্দেশনা

আমরা গুগল এআই স্টুডিও বা ভার্টেক্স এআই স্টুডিওতে আপনার প্রম্পটটি পরীক্ষা করার পরামর্শ দিই, যেখানে আপনি সম্পূর্ণ চিন্তন প্রক্রিয়াটি দেখতে পারবেন। এর মাধ্যমে আপনি মডেলটির সম্ভাব্য ভুলগুলো চিহ্নিত করতে পারবেন, যাতে আরও সামঞ্জস্যপূর্ণ ও নির্ভুল প্রতিক্রিয়া পাওয়ার জন্য আপনার প্রম্পটগুলোকে পরিমার্জন করতে পারেন।

কাঙ্ক্ষিত ফলাফল বর্ণনা করে এমন একটি সাধারণ নির্দেশ দিয়ে শুরু করুন, এবং মডেলটি কীভাবে তার প্রতিক্রিয়া নির্ধারণ করে সে বিষয়ে তার প্রাথমিক চিন্তাভাবনা পর্যবেক্ষণ করুন। যদি প্রতিক্রিয়াটি প্রত্যাশিত না হয়, তাহলে নিম্নলিখিত যেকোনো নির্দেশ দেওয়ার কৌশল ব্যবহার করে মডেলটিকে আরও ভালো প্রতিক্রিয়া তৈরি করতে সাহায্য করুন:

  • ধাপে ধাপে নির্দেশাবলী প্রদান করুন
  • ইনপুট-আউটপুট জোড়ার কয়েকটি উদাহরণ দিন।
  • আউটপুট এবং প্রতিক্রিয়াগুলো কীভাবে শব্দচয়ন ও বিন্যাস করা উচিত, সে বিষয়ে নির্দেশনা প্রদান করুন।
  • নির্দিষ্ট যাচাইকরণ পদক্ষেপ প্রদান করুন

প্ররোচিত করার পাশাপাশি, এই সুপারিশগুলো ব্যবহার করার কথা বিবেচনা করুন:

  • সিস্টেম নির্দেশাবলী সেট করুন, যা একটি "ভূমিকার" মতো এবং মডেলটি প্রম্পট বা ব্যবহারকারীর কাছ থেকে কোনো পরবর্তী নির্দেশাবলী পাওয়ার আগে আপনি এটি যোগ করেন। এগুলি আপনাকে আপনার নির্দিষ্ট প্রয়োজন এবং ব্যবহারের ক্ষেত্র অনুযায়ী মডেলের আচরণ নিয়ন্ত্রণ করতে সাহায্য করে।

  • মডেলটি কতটা চিন্তা করতে পারবে তা নিয়ন্ত্রণ করতে একটি চিন্তার স্তর (অথবা জেমিনি ২.৫ মডেলের জন্য চিন্তার বাজেট ) নির্ধারণ করুন। যদি আপনি এটি উচ্চ স্তরে সেট করেন, তাহলে প্রয়োজনে মডেলটি আরও বেশি চিন্তা করতে পারবে। যদি আপনি এটি নিম্ন স্তরে সেট করেন, তাহলে মডেলটি তার প্রতিক্রিয়া নিয়ে "অতিরিক্ত চিন্তা" করবে না, এবং এটি প্রকৃত প্রতিক্রিয়ার জন্য মোট টোকেন আউটপুট সীমার একটি বড় অংশ সংরক্ষণ করে, যা লেটেন্সি এবং খরচ কমাতে সাহায্য করতে পারে।

  • আপনার থিঙ্কিং টোকেনের সংখ্যা এবং থিঙ্কিং সক্ষম থাকা রিকোয়েস্টগুলোর ল্যাটেন্সি নিরীক্ষণ করতে Firebase কনসোলে এআই মনিটরিং চালু করুন। আর যদি আপনার থট সামারি চালু করা থাকে, তবে সেগুলো কনসোলে প্রদর্শিত হবে, যেখানে আপনি মডেলের বিস্তারিত যুক্তি পরীক্ষা করে আপনার প্রম্পটগুলো ডিবাগ ও উন্নত করতে পারবেন।



চিন্তার পরিমাণ নিয়ন্ত্রণ করুন

একটি মডেল প্রতিক্রিয়া জানানোর আগে কতটা 'চিন্তা' ও যুক্তি-তর্ক করতে পারবে, তা আপনি নির্ধারণ করতে পারেন। লেটেন্সি বা খরচ কমানো যদি অগ্রাধিকার পায়, তবে এই কনফিগারেশনটি বিশেষভাবে গুরুত্বপূর্ণ।

একটি মডেলের চিন্তাশক্তির কতটা প্রয়োজন হতে পারে, তা নির্ধারণ করার জন্য কাজের কাঠিন্যের তুলনাটি অবশ্যই পর্যালোচনা করুন। এখানে কিছু উচ্চ-স্তরের নির্দেশনা দেওয়া হলো:

  • কম জটিল কাজের জন্য অথবা যদি বিলম্ব বা খরচ কমানো আপনার কাছে অগ্রাধিকার পায়, তবে চিন্তার মান কমিয়ে দিন।
  • আরও জটিল কাজের জন্য উচ্চতর চিন্তার মান নির্ধারণ করুন।

এই কনফিগারেশনটি হয় থিংকিং লেভেল ( জেমিনি ৩ এবং পরবর্তী মডেল) অথবা থিংকিং বাজেট ( জেমিনি ২.৫ মডেল) দিয়ে নিয়ন্ত্রণ করুন।

চিন্তার স্তর ( জেমিনি ৩ এবং পরবর্তী মডেল)

To control how much thinking a Gemini 3 and later model can do to generate its response, you can specify a thinking level for the amount of thinking tokens that it's allowed to use.

চিন্তার স্তর নির্ধারণ করুন

এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট বিষয়বস্তু এবং কোড দেখতে আপনার জেমিনি এপিআই প্রদানকারীর উপর ক্লিক করুন।

GenerativeModel ইনস্ট্যান্স তৈরির অংশ হিসেবে GenerationConfig এ চিন্তার স্তর নির্ধারণ করুন। এই কনফিগারেশনটি ইনস্ট্যান্সটির জীবনকাল পর্যন্ত বজায় থাকে। যদি আপনি বিভিন্ন অনুরোধের জন্য ভিন্ন ভিন্ন চিন্তার স্তর ব্যবহার করতে চান, তাহলে প্রতিটি স্তর দিয়ে কনফিগার করা GenerativeModel ইনস্ট্যান্স তৈরি করুন।

এই বিভাগের পরবর্তী অংশে চিন্তন স্তরের জন্য সমর্থিত মানগুলো সম্পর্কে জানুন।

সুইফট

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার স্তর নির্ধারণ করুন।


// ...

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(thinkingLevel: .low)
)

// Specify the config as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_3_MODEL_NAME",
  generationConfig: generationConfig
)

// ...

Kotlin

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ প্যারামিটারগুলোর মান নির্ধারণ করুন।


// ...

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      thinkingLevel = ThinkingLevel.LOW
  }
}

// Specify the config as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_3_MODEL_NAME",
  generationConfig,
)

// ...

Java

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ প্যারামিটারগুলোর মান নির্ধারণ করুন।


// ...

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setThinkingLevel(ThinkingLevel.LOW)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "GEMINI_3_MODEL_NAME",
                  /* generationConfig */ generationConfig
                );
);

// ...

Web

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ প্যারামিটারগুলোর মান নির্ধারণ করুন।


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
const generationConfig = {
  thinkingConfig: {
    thinkingLevel: ThinkingLevel.LOW
  }
};

// Specify the config as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, { model: "GEMINI_3_MODEL_NAME", generationConfig });

// ...

Dart

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ প্যারামিটারগুলোর মান নির্ধারণ করুন।


// ...

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
final thinkingConfig = ThinkingConfig.withThinkingLevel(ThinkingLevel.low);

final generationConfig = GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_3_MODEL_NAME',
  config: generationConfig,
);

// ...

ঐক্য

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ প্যারামিটারগুলোর মান নির্ধারণ করুন।


// ...

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
var thinkingConfig = new ThinkingConfig(thinkingLevel: ThinkingLevel.Low);

var generationConfig = new GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
  modelName: "GEMINI_3_MODEL_NAME",
  generationConfig: generationConfig
);

// ...

সমর্থিত চিন্তার স্তরের মান

নিম্নলিখিত সারণিতে চিন্তার স্তরের মানগুলি তালিকাভুক্ত করা হয়েছে, যা আপনি মডেলের thinkingLevel কনফিগার করার মাধ্যমে প্রতিটি মডেলের জন্য সেট করতে পারেন।

MINIMAL LOW MEDIUM HIGH

মডেলটি যথাসম্ভব কম টোকেন ব্যবহার করে; এতে চিন্তাভাবনার প্রায় কোনো প্রয়োজনই হয় না।

কম-জটিল কাজ

এই মডেলে কম টোকেন ব্যবহৃত হয়; ফলে লেটেন্সি ও খরচ হ্রাস পায়।

সহজ কাজ এবং উচ্চ-উৎপাদনশীল কাজ

মডেলটি একটি ভারসাম্যপূর্ণ পদ্ধতি ব্যবহার করে

মাঝারি জটিলতার কাজ

মডেলটি তার সর্বোচ্চ স্তর পর্যন্ত টোকেন ব্যবহার করে।

জটিল নির্দেশাবলী যার জন্য গভীর যুক্তির প্রয়োজন

gemini-3.1-pro-preview (ডিফল্ট)
gemini-3-flash-preview (ডিফল্ট)
gemini-3.1-flash-lite-preview (ডিফল্ট)
gemini-3-pro-image-preview ("ন্যানো বানানা প্রো") (ডিফল্ট)
gemini-3.1-flash-image-preview ("ন্যানো বানানা ২") (ডিফল্ট)



বাজেট ভাবনা ( জেমিনি ২.৫ মডেল)

একটি জেমিনি ২.৫ মডেল তার প্রতিক্রিয়া তৈরি করতে কতটা চিন্তা করতে পারবে তা নিয়ন্ত্রণ করতে, আপনি এটিকে ব্যবহারের জন্য অনুমোদিত থিঙ্কিং টোকেনের পরিমাণের উপর একটি থিঙ্কিং বাজেট নির্দিষ্ট করে দিতে পারেন।

চিন্তার বাজেট নির্ধারণ করুন

এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট বিষয়বস্তু এবং কোড দেখতে আপনার জেমিনি এপিআই প্রদানকারীর উপর ক্লিক করুন।

একটি Gemini 2.5 মডেলের জন্য GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ থিঙ্কিং বাজেট সেট করুন। এই কনফিগারেশনটি ইনস্ট্যান্সটির জীবনকাল পর্যন্ত বজায় থাকে। আপনি যদি বিভিন্ন অনুরোধের জন্য ভিন্ন ভিন্ন থিঙ্কিং বাজেট ব্যবহার করতে চান, তাহলে প্রতিটি বাজেট দিয়ে কনফিগার করা GenerativeModel ইনস্ট্যান্স তৈরি করুন।

এই বিভাগের পরবর্তী অংশে বাজেট ভাবনার জন্য সমর্থিত মূল্যবোধগুলো সম্পর্কে জানুন।

সুইফট

একটি GenerativeModel ইনস্ট্যান্স তৈরির অংশ হিসেবে GenerationConfig এ থিঙ্কিং বাজেট সেট করুন।


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(thinkingBudget: 1024)
)

// Specify the config as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_2.5_MODEL_NAME",
  generationConfig: generationConfig
)

// ...

Kotlin

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ প্যারামিটারগুলোর মান নির্ধারণ করুন।


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      thinkingBudget = 1024
  }
}

// Specify the config as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_2.5_MODEL_NAME",
  generationConfig,
)

// ...

Java

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ প্যারামিটারগুলোর মান নির্ধারণ করুন।


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setThinkingBudget(1024)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "GEMINI_2.5_MODEL_NAME",
                  /* generationConfig */ generationConfig
                );
);

// ...

Web

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ প্যারামিটারগুলোর মান নির্ধারণ করুন।


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
const generationConfig = {
  thinkingConfig: {
    thinkingBudget: 1024
  }
};

// Specify the config as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, { model: "GEMINI_2.5_MODEL_NAME", generationConfig });

// ...

Dart

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ প্যারামিটারগুলোর মান নির্ধারণ করুন।


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
final thinkingConfig = ThinkingConfig.withThinkingBudget(1024);

final generationConfig = GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_2.5_MODEL_NAME',
  config: generationConfig,
);

// ...

ঐক্য

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ প্যারামিটারগুলোর মান নির্ধারণ করুন।


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
var thinkingConfig = new ThinkingConfig(thinkingBudget: 1024);

var generationConfig = new GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
  modelName: "GEMINI_2.5_MODEL_NAME",
  generationConfig: generationConfig
);

// ...

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

নিম্নলিখিত সারণিতে সেই থিঙ্কিং বাজেট মানগুলি তালিকাভুক্ত করা হয়েছে যা আপনি মডেলের thinkingBudget কনফিগার করার মাধ্যমে প্রতিটি মডেলের জন্য সেট করতে পারেন।

মডেল ডিফল্ট মান বাজেট ভাবনার জন্য উপলব্ধ পরিসর মূল্য
চিন্তাভাবনা অক্ষম করুন
মূল্য
গতিশীল চিন্তাভাবনা সক্ষম করুন
সর্বনিম্ন মান সর্বোচ্চ মান
জেমিনি ২.৫ প্রো 8,192 128 32,768 নিষ্ক্রিয় করা যাবে না -1
জেমিনি ২.৫ ফ্ল্যাশ 8,192 1 24,576 0 -1
জেমিনি ২.৫ ফ্ল্যাশ-লাইট 0
(চিন্তা ডিফল্টরূপে নিষ্ক্রিয় থাকে)
512 24,576 0
(অথবা চিন্তার বাজেট একেবারেই নির্ধারণ করবেন না)
-1



সকল চিন্তন মডেলের জন্য কাজের জটিলতা

  • সহজ কাজ — এতে তেমন চিন্তাভাবনার প্রয়োজন হয় না।
    সরল অনুরোধ যেখানে জটিল যুক্তির প্রয়োজন হয় না, যেমন তথ্য পুনরুদ্ধার বা শ্রেণিবিন্যাস। উদাহরণ:

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

    • সালোকসংশ্লেষণ এবং বড় হওয়ার মধ্যে একটি সাদৃশ্য তৈরি করুন।
    • ইলেকট্রিক গাড়ি এবং হাইব্রিড গাড়ির মধ্যে তুলনা ও বৈসাদৃশ্য দেখান।
  • কঠিন কাজ — সর্বোচ্চ চিন্তাভাবনার প্রয়োজন হতে পারে
    প্রকৃত জটিল চ্যালেঞ্জ, যেমন জটিল গাণিতিক সমস্যার সমাধান করা বা কোডিংয়ের কাজ। এই ধরনের কাজগুলোর জন্য মডেলটিকে তার সম্পূর্ণ যুক্তি ও পরিকল্পনা ক্ষমতা কাজে লাগাতে হয় এবং উত্তর দেওয়ার আগে প্রায়শই এর মধ্যে অনেকগুলো অভ্যন্তরীণ ধাপ জড়িত থাকে। উদাহরণ:

    • AIME 2025-এর সমস্যা ১ সমাধান করুন: 9-এর চেয়ে বড় এমন সকল পূর্ণসংখ্যার ভিত্তি b-এর যোগফল নির্ণয় করুন, যার জন্য 17b, 97b-এর একটি ভাজক।
    • একটি ওয়েব অ্যাপ্লিকেশনের জন্য পাইথন কোড লিখুন যা ব্যবহারকারীর প্রমাণীকরণ সহ রিয়েল-টাইম স্টক মার্কেটের ডেটা প্রদর্শন করে। এটিকে যথাসম্ভব কার্যকর করে তুলুন।



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

চিন্তার সারাংশ হলো মডেলটির মূল চিন্তাভাবনার সংশ্লেষিত সংস্করণ এবং এটি মডেলটির অভ্যন্তরীণ যুক্তি প্রক্রিয়া সম্পর্কে অন্তর্দৃষ্টি প্রদান করে।

উত্তরে চিন্তার সারাংশ অন্তর্ভুক্ত করার কয়েকটি কারণ নিচে দেওয়া হলো:

  • আপনি আপনার অ্যাপের UI-তে চিন্তার সারাংশ প্রদর্শন করতে পারেন অথবা ব্যবহারকারীদের জন্য তা সহজলভ্য করতে পারেন। চিন্তার সারাংশটি রেসপন্সের একটি পৃথক অংশ হিসেবে ফেরত আসে, ফলে আপনার অ্যাপে এটি কীভাবে ব্যবহৃত হবে তার উপর আপনার আরও বেশি নিয়ন্ত্রণ থাকে।

  • আপনি যদি Firebase কনসোলে AI মনিটরিংও চালু করেন, তাহলে চিন্তার সারাংশগুলো কনসোলে প্রদর্শিত হয়, যেখানে আপনি মডেলের বিস্তারিত যুক্তি পরীক্ষা করে আপনার প্রম্পটগুলো ডিবাগ ও পরিমার্জন করতে পারেন।

চিন্তার সারাংশ সম্পর্কে এখানে কিছু গুরুত্বপূর্ণ বিষয় উল্লেখ করা হলো:

  • চিন্তার সারাংশ থিংকিং বাজেট দ্বারা নিয়ন্ত্রিত হয় না (বাজেট শুধুমাত্র মডেলের প্রাথমিক চিন্তার ক্ষেত্রে প্রযোজ্য)। তবে, যদি চিন্তা করা নিষ্ক্রিয় করা থাকে , তাহলে মডেলটি কোনো চিন্তার সারাংশ দেখাবে না।

  • চিন্তার সারাংশগুলোকে মডেলের নিয়মিতভাবে তৈরি করা টেক্সট প্রতিক্রিয়ার অংশ হিসেবে বিবেচনা করা হয় এবং এগুলো আউটপুট টোকেন হিসেবে গণ্য হয়।

চিন্তার সারাংশ সক্ষম করুন

এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট বিষয়বস্তু এবং কোড দেখতে আপনার জেমিনি এপিআই প্রদানকারীর উপর ক্লিক করুন।

আপনার মডেল কনফিগারেশনে includeThoughts কে true সেট করে আপনি চিন্তার সারাংশ সক্রিয় করতে পারেন। এরপর আপনি রেসপন্স থেকে thoughtSummary ফিল্ডটি চেক করে সারাংশটি অ্যাক্সেস করতে পারবেন।

প্রতিক্রিয়ার সাথে চিন্তার সারাংশ কীভাবে সক্রিয় ও পুনরুদ্ধার করতে হয়, তা দেখানোর জন্য এখানে একটি উদাহরণ দেওয়া হলো:

সুইফট

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(includeThoughts: true)
)

// Specify the config as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_MODEL_NAME",
  generationConfig: generationConfig
)

let response = try await model.generateContent("solve x^2 + 4x + 4 = 0")

// Handle the response that includes thought summaries
if let thoughtSummary = response.thoughtSummary {
  print("Thought Summary: \(thoughtSummary)")
}
guard let text = response.text else {
  fatalError("No text in response.")
}
print("Answer: \(text)")

Kotlin

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      includeThoughts = true
  }
}

// Specify the config as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_MODEL_NAME",
  generationConfig,
)

val response = model.generateContent("solve x^2 + 4x + 4 = 0")

// Handle the response that includes thought summaries
response.thoughtSummary?.let {
    println("Thought Summary: $it")
}
response.text?.let {
    println("Answer: $it")
}

Java

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setIncludeThoughts(true)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "GEMINI_MODEL_NAME",
                  /* generationConfig */ generationConfig
                );
);

// Handle the response that includes thought summaries
ListenableFuture responseFuture = model.generateContent("solve x^2 + 4x + 4 = 0");
Futures.addCallback(responseFuture, new FutureCallback() {
    @Override
    public void onSuccess(GenerateContentResponse response) {
        if (response.getThoughtSummary() != null) {
            System.out.println("Thought Summary: " + response.getThoughtSummary());
        }
        if (response.getText() != null) {
            System.out.println("Answer: " + response.getText());
        }
    }

    @Override
    public void onFailure(Throwable t) {
        // Handle error
    }
}, MoreExecutors.directExecutor());

Web

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
const generationConfig = {
  thinkingConfig: {
    includeThoughts: true
  }
};

// Specify the config as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, { model: "GEMINI_MODEL_NAME", generationConfig });

const result = await model.generateContent("solve x^2 + 4x + 4 = 0");
const response = result.response;

// Handle the response that includes thought summaries
if (response.thoughtSummary()) {
    console.log(`Thought Summary: ${response.thoughtSummary()}`);
}
const text = response.text();
console.log(`Answer: ${text}`);

Dart

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
final thinkingConfig = ThinkingConfig(includeThoughts: true);

final generationConfig = GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_MODEL_NAME',
  generationConfig: generationConfig,
);

final response = await model.generateContent('solve x^2 + 4x + 4 = 0');

// Handle the response that includes thought summaries
if (response.thoughtSummary != null) {
  print('Thought Summary: ${response.thoughtSummary}');
}
if (response.text != null) {
  print('Answer: ${response.text}');
}

ঐক্য

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
var thinkingConfig = new ThinkingConfig(includeThoughts: true);

var generationConfig = new GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
  modelName: "GEMINI_MODEL_NAME",
  generationConfig: generationConfig
);

var response = await model.GenerateContentAsync("solve x^2 + 4x + 4 = 0");

// Handle the response that includes thought summaries
if (response.ThoughtSummary != null) {
    Debug.Log($"Thought Summary: {response.ThoughtSummary}");
}
if (response.Text != null) {
    Debug.Log($"Answer: {response.Text}");
}

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

আপনি generateContentStream ব্যবহার করে কোনো প্রতিক্রিয়া স্ট্রিম করার বিকল্প বেছে নিলে, চিন্তার সারাংশও দেখতে পারেন। এটি প্রতিক্রিয়া তৈরির সময় চলমান, ক্রমবর্ধমান সারাংশ ফেরত দেবে।

সুইফট

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(includeThoughts: true)
)

// Specify the config as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_MODEL_NAME",
  generationConfig: generationConfig
)

let stream = try model.generateContentStream("solve x^2 + 4x + 4 = 0")

// Handle the streamed response that includes thought summaries
var thoughts = ""
var answer = ""
for try await response in stream {
  if let thought = response.thoughtSummary {
    if thoughts.isEmpty {
      print("--- Thoughts Summary ---")
    }
    print(thought)
    thoughts += thought
  }

  if let text = response.text {
    if answer.isEmpty {
      print("--- Answer ---")
    }
    print(text)
    answer += text
  }
}

Kotlin

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      includeThoughts = true
  }
}

// Specify the config as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_MODEL_NAME",
  generationConfig,
)

// Handle the streamed response that includes thought summaries
var thoughts = ""
var answer = ""
model.generateContentStream("solve x^2 + 4x + 4 = 0").collect { response ->
    response.thoughtSummary?.let {
        if (thoughts.isEmpty()) {
            println("--- Thoughts Summary ---")
        }
        print(it)
        thoughts += it
    }
    response.text?.let {
        if (answer.isEmpty()) {
            println("--- Answer ---")
        }
        print(it)
        answer += it
    }
}

Java

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setIncludeThoughts(true)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "GEMINI_MODEL_NAME",
                  /* generationConfig */ generationConfig
                );
);

// Streaming with Java is complex and depends on the async library used.
// This is a conceptual example using a reactive stream.
Flowable responseStream = model.generateContentStream("solve x^2 + 4x + 4 = 0");

// Handle the streamed response that includes thought summaries
StringBuilder thoughts = new StringBuilder();
StringBuilder answer = new StringBuilder();

responseStream.subscribe(response -> {
    if (response.getThoughtSummary() != null) {
        if (thoughts.length() == 0) {
            System.out.println("--- Thoughts Summary ---");
        }
        System.out.print(response.getThoughtSummary());
        thoughts.append(response.getThoughtSummary());
    }
    if (response.getText() != null) {
        if (answer.length() == 0) {
            System.out.println("--- Answer ---");
        }
        System.out.print(response.getText());
        answer.append(response.getText());
    }
}, throwable -> {
    // Handle error
});

Web

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
const generationConfig = {
  thinkingConfig: {
    includeThoughts: true
  }
};

// Specify the config as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, { model: "GEMINI_MODEL_NAME", generationConfig });

const result = await model.generateContentStream("solve x^2 + 4x + 4 = 0");

// Handle the streamed response that includes thought summaries
let thoughts = "";
let answer = "";
for await (const chunk of result.stream) {
  if (chunk.thoughtSummary()) {
    if (thoughts === "") {
      console.log("--- Thoughts Summary ---");
    }
    // In Node.js, process.stdout.write(chunk.thoughtSummary()) could be used
    // to avoid extra newlines.
    console.log(chunk.thoughtSummary());
    thoughts += chunk.thoughtSummary();
  }

  const text = chunk.text();
  if (text) {
    if (answer === "") {
      console.log("--- Answer ---");
    }
    // In Node.js, process.stdout.write(text) could be used.
    console.log(text);
    answer += text;
  }
}

Dart

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
final thinkingConfig = ThinkingConfig(includeThoughts: true);

final generationConfig = GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_MODEL_NAME',
  generationConfig: generationConfig,
);

final responses = model.generateContentStream('solve x^2 + 4x + 4 = 0');

// Handle the streamed response that includes thought summaries
var thoughts = '';
var answer = '';
await for (final response in responses) {
  if (response.thoughtSummary != null) {
    if (thoughts.isEmpty) {
      print('--- Thoughts Summary ---');
    }
    thoughts += response.thoughtSummary!;
  }
  if (response.text != null) {
    if (answer.isEmpty) {
      print('--- Answer ---');
    }
    answer += response.text!;
  }
}

ঐক্য

একটি GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig এ চিন্তার সারাংশ সক্রিয় করুন।


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
var thinkingConfig = new ThinkingConfig(includeThoughts: true);

var generationConfig = new GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
  modelName: "GEMINI_MODEL_NAME",
  generationConfig: generationConfig
);

var stream = model.GenerateContentStreamAsync("solve x^2 + 4x + 4 = 0");

// Handle the streamed response that includes thought summaries
var thoughts = "";
var answer = "";
await foreach (var response in stream)
{
    if (response.ThoughtSummary != null)
    {
        if (string.IsNullOrEmpty(thoughts))
        {
            Debug.Log("--- Thoughts Summary ---");
        }
        Debug.Log(response.ThoughtSummary);
        thoughts += response.ThoughtSummary;
    }
    if (response.Text != null)
    {
        if (string.IsNullOrEmpty(answer))
        {
            Debug.Log("--- Answer ---");
        }
        Debug.Log(response.Text);
        answer += response.Text;
    }
}



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

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

  • চিন্তা করার ক্ষমতা তৈরি হয় এবং নতুন চিন্তার জন্ম হয়।
  • অনুরোধটিতে ফাংশন ঘোষণা অন্তর্ভুক্ত রয়েছে।

থট সিগনেচারের সুবিধা নিতে, স্বাভাবিকভাবে ফাংশন কলিং ব্যবহার করুন। Firebase AI Logic SDK-গুলো স্টেট ম্যানেজ করে এবং আপনার জন্য স্বয়ংক্রিয়ভাবে থট সিগনেচার পরিচালনা করে প্রক্রিয়াটিকে সহজ করে তোলে। এই SDK-গুলো একটি Chat সেশনের মধ্যে পরবর্তী sendMessage বা sendMessageStream কলগুলোর মাঝে যেকোনো জেনারেট করা থট সিগনেচার স্বয়ংক্রিয়ভাবে পাস করে দেয়।



চিন্তার টোকেনগুলির মূল্য নির্ধারণ এবং গণনা

থিংকিং টোকেনগুলোর মূল্য নির্ধারণ পদ্ধতি টেক্সট-আউটপুট টোকেনগুলোর মতোই। আপনি যদি থট সামারি (চিন্তার সারাংশ) সক্রিয় করেন, তবে সেগুলোকে থিংকিং টোকেন হিসেবে গণ্য করা হয় এবং সেই অনুযায়ী মূল্য নির্ধারণ করা হয়।

যেসব রিকোয়েস্টে থিঙ্কিং সক্ষম করা আছে, সেগুলোর থিঙ্কিং টোকেনের সংখ্যা নিরীক্ষণ করতে আপনি Firebase কনসোলে এআই মনিটরিং চালু করতে পারেন।

আপনি রেসপন্সের usageMetadata অ্যাট্রিবিউটের thoughtsTokenCount ফিল্ড থেকে মোট থিংকিং টোকেনের সংখ্যা পেতে পারেন:

সুইফট

// ...

let response = try await model.generateContent("Why is the sky blue?")

if let usageMetadata = response.usageMetadata {
  print("Thoughts Token Count: \(usageMetadata.thoughtsTokenCount)")
}

Kotlin

// ...

val response = model.generateContent("Why is the sky blue?")

response.usageMetadata?.let { usageMetadata ->
    println("Thoughts Token Count: ${usageMetadata.thoughtsTokenCount}")
}

Java

// ...

ListenableFuture<GenerateContentResponse> response =
    model.generateContent("Why is the sky blue?");

Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String usageMetadata = result.getUsageMetadata();
        if (usageMetadata != null) {
            System.out.println("Thoughts Token Count: " +
                usageMetadata.getThoughtsTokenCount());
        }
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

Web

// ...

const response = await model.generateContent("Why is the sky blue?");

if (response?.usageMetadata?.thoughtsTokenCount != null) {
    console.log(`Thoughts Token Count: ${response.usageMetadata.thoughtsTokenCount}`);
}

Dart

// ...

final response = await model.generateContent(
  Content.text("Why is the sky blue?"),
]);

if (response?.usageMetadata case final usageMetadata?) {
  print("Thoughts Token Count: ${usageMetadata.thoughtsTokenCount}");
}

ঐক্য

// ...

var response = await model.GenerateContentAsync("Why is the sky blue?");

if (response.UsageMetadata != null)
{
    UnityEngine.Debug.Log($"Thoughts Token Count: {response.UsageMetadata?.ThoughtsTokenCount}");
}

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