সাম্প্রতিক সব Gemini মডেল ইন্টার্নাল "থিংকিং প্রসেস" ব্যবহার করে যা তাদের রিজনিং ও মাল্টি-স্টেপ প্ল্যানিং ক্ষমতাকে উল্লেখযোগ্যভাবে উন্নত করে, এর ফলে কোডিং, অ্যাডভান্সড অঙ্ক ও ডেটা বিশ্লেষণের মতো জটিল টাস্কের ক্ষেত্রে সেগুলি অত্যন্ত কার্যকর হয়ে ওঠে।
Thinking মডেলে নিম্নলিখিত কনফিগারেশন ও বিকল্প থাকে:
কতটা চিন্তা করবে তা নিয়ন্ত্রণ করুন
কোনও মডেল কতটা "চিন্তা" করতে পারবে তা আপনি কনফিগার করতে পারবেন। লেটেন্সি বা খরচ কমানো অগ্রাধিকার হলে এই কনফিগারেশন বিশেষভাবে গুরুত্বপূর্ণ। এছাড়াও, কোনও মডেলের চিন্তাভাবনা করার ক্ষমতার কতটা প্রয়োজন হতে পারে তা সিদ্ধান্ত নিতে, টাস্কের কঠিন লেভেলের তুলনা পর্যালোচনা করুন।এই কনফিগারেশন কন্ট্রোল করতে থিঙ্কিং লেভেল (Gemini 3.x ও তার পরের মডেল) অথবা থিঙ্কিং বাজেট (Gemini 2.5 মডেল) ব্যবহার করুন।
চিন্তাভাবনার সারসংক্ষেপ পান
জেনারেট করা উত্তরের সাথে অন্তর্ভুক্ত করতে, আপনি চিন্তাভাবনার সারসংক্ষেপ চালু করতে পারেন। এইসব সারসংক্ষেপ হল মডেলের কাঁচা চিন্তাভাবনার সিন্থেসাইজ করা ভার্সন এবং মডেলের ইন্টার্নাল যুক্তি প্রক্রিয়া সম্পর্কে ইনসাইট প্রদান করে।থট সিগনেচার ম্যানেজ করা
Firebase AI Logic SDK আপনার জন্য অটোমেটিক থট সিগনেচার ম্যানেজ করে, যা নিশ্চিত করে যে মডেলের কাছে আগের টার্ন থেকে থট কনটেক্সটের অ্যাক্সেস আছে, বিশেষ করে ফাংশন কলিং ব্যবহার করার সময়।
থিঙ্কিং মডেল ব্যবহার করার জন্য পেশাদার পদ্ধতি ও প্রম্পট সংক্রান্ত নির্দেশিকা পর্যালোচনা করতে ভুলবেন না।
থিঙ্কিং মডেল ব্যবহার করার জন্য পেশাদার পদ্ধতি ও প্রম্পট সংক্রান্ত নির্দেশিকা
আমরা সাজেস্ট করি যে আপনার প্রম্পট Google AI Studio বা Agent Studio এ পরীক্ষা করে দেখুন, যেখানে আপনি সম্পূর্ণ চিন্তন প্রক্রিয়া দেখতে পাবেন। আপনি এমন কোনও জায়গা শনাক্ত করতে পারবেন যেখানে মডেলটি ভুল পথে চালিত হতে পারে, যাতে আপনি আরও সঙ্গতিপূর্ণ এবং সঠিক উত্তর পেতে আপনার প্রম্পট রিফাইন করতে পারেন।
প্রথমে একটি সাধারণ প্রম্পট দিয়ে শুরু করুন যা কাঙ্ক্ষিত ফলাফল বর্ণনা করে এবং মডেল কীভাবে উত্তর নির্ধারণ করে সেই বিষয়ে মডেলের প্রাথমিক চিন্তাভাবনা লক্ষ্য করুন। উত্তরটি আশা অনুযায়ী না হলে, নিম্নলিখিত প্রম্পটিং টেকনিক ব্যবহার করে মডেলকে আরও ভালো উত্তর তৈরি করতে সাহায্য করুন:
- ধাপে-ধাপে নির্দেশাবলী দাও
- ইনপুট-আউটপুট পেয়ারের একাধিক উদাহরণ দাও
- আউটপুট ও উত্তর কীভাবে বলতে হবে এবং ফর্ম্যাট করতে হবে সেই ব্যাপারে নির্দেশাবলী দাও
- যাচাইকরণের নির্দিষ্ট ধাপগুলি প্রদান করুন
প্রম্পট করার পাশাপাশি, এইসব সাজেশন ব্যবহার করার কথা বিবেচনা করুন:
সিস্টেম নির্দেশাবলী সেট করুন, যা হল "ভূমিকা"র মতো যা আপনি মডেলকে প্রম্পট বা শেষ ব্যবহারকারীর থেকে কোনও আরও নির্দেশাবলী দেওয়ার আগে যোগ করেন। আপনার নির্দিষ্ট প্রয়োজন ও ব্যবহারের ক্ষেত্রে মডেলের আচরণকে নিয়ন্ত্রণ করতে দেয়।
মডেল কতটা চিন্তা করতে পারবে তা নিয়ন্ত্রণ করতে, চিন্তার লেভেল (অথবা Gemini 2.5 মডেলের জন্য চিন্তার বাজেট) সেট করুন। আপনি এটি বেশি সেট করলে, প্রয়োজন হলে মডেল আরও বেশি চিন্তা করতে পারবে। আপনি এটি কম সেট করলে, মডেলটি তার উত্তর সম্পর্কে "অতিরিক্ত চিন্তা" করবে না এবং এটি প্রকৃত উত্তরের জন্য মোট টোকেন আউটপুট সীমার আরও বেশি অংশ রিজার্ভ করে এবং লেটেন্সি ও খরচ কমাতে সাহায্য করতে পারে।
Firebase কনসোলে AI মনিটরিং চালু করুন, যাতে থিঙ্কিং টোকেনের সংখ্যা এবং থিঙ্কিং চালু করা আপনার অনুরোধের লেটেন্সি মনিটর করা যায়। এছাড়াও, আপনি যদি চিন্তার সারসংক্ষেপ চালু করে থাকেন, তাহলে সেগুলি কনসোলে দেখানো হবে, যেখানে আপনি মডেলের বিস্তারিত যুক্তি পরীক্ষা করে দেখতে পারবেন। এটি আপনাকে ডিবাগ করতে এবং আপনার প্রম্পট রিফাইন করতে সাহায্য করবে।
কতটা চিন্তা করা হবে তা কন্ট্রোল করা
কোনও মডেল উত্তর দেওয়ার আগে কতটা "চিন্তাভাবনা" ও যুক্তি দিতে পারবে তা আপনি কনফিগার করতে পারবেন। লেটেন্সি বা খরচ কমানো অগ্রাধিকার পেলে এই কনফিগারেশন বিশেষভাবে গুরুত্বপূর্ণ।
কোনও মডেলের চিন্তাভাবনার ক্ষমতা কতটা প্রয়োজন তা ঠিক করতে, টাস্কের কঠিন লেভেলের তুলনা পর্যালোচনা করতে ভুলবেন না। এখানে কিছু উচ্চ-স্তরের নির্দেশিকা দেওয়া হল:
- কম জটিল টাস্কের জন্য বা লেটেন্সি বা খরচ কমানো আপনার অগ্রাধিকার হলে, কম থিংকিং ভ্যালু সেট করুন।
- আরও জটিল টাস্কের জন্য আরও বেশি চিন্তাভাবনার ভ্যালু সেট করুন।
এই কনফিগারেশন কন্ট্রোল করতে থিঙ্কিং লেভেল (Gemini 3.x ও তার পরের মডেল) অথবা থিঙ্কিং বাজেট (Gemini 2.5 মডেল) ব্যবহার করুন।
থিঙ্কিং লেভেল (Gemini 3.x ও তার পরের মডেল)
Gemini 3.x এবং পরবর্তী মডেলের উত্তর জেনারেট করার জন্য সে কতটা চিন্তা করতে পারবে তা নিয়ন্ত্রণ করতে, আপনি চিন্তা করার টোকেনের জন্য চিন্তার লেভেল নির্দিষ্ট করতে পারেন যা এটি ব্যবহার করতে পারবে।
থিঙ্কিং লেভেল সেট করা
|
এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট কন্টেন্ট ও কোড দেখতে আপনার Gemini API প্রদানকারীর আইকনে ক্লিক করুন। |
GenerationConfig-এ থিঙ্কিং লেভেল সেট করুন, এটি
GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ। ইনস্ট্যান্সের লাইফটাইম
ধরে কনফিগারেশন বজায় থাকে। আপনি যদি বিভিন্ন
অনুরোধের জন্য আলাদা আলাদা চিন্তার লেভেল ব্যবহার করতে চান, তাহলে প্রতিটি লেভেলের সাথে কনফিগার করা GenerativeModel ইনস্ট্যান্স তৈরি করুন।
এই বিভাগের পরের অংশে চিন্তার লেভেলের জন্য কাজ করে এমন ভ্যালু সম্পর্কে জানুন।
Swift
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.x_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.x_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.x_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.x_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.x_MODEL_NAME',
config: generationConfig,
);
// ...
Unity
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.x_MODEL_NAME",
generationConfig: generationConfig
);
// ...
থিঙ্কিং লেভেলের যেসব ভ্যালু ব্যবহার করা যায়
নিচের সারণীতে থিঙ্কিং লেভেলের সেইসব ভ্যালু তালিকাভুক্ত করা হয়েছে যা আপনি মডেলের thinkingLevel কনফিগার করার মাধ্যমে
প্রতিটি মডেলের জন্য সেট করতে পারবেন।
MINIMAL |
LOW |
MEDIUM |
HIGH |
|
|---|---|---|---|---|
|
মডেলটি যতটা সম্ভব কম টোকেন ব্যবহার করে; কোনও চিন্তাভাবনা করে না বললেই চলে কম জটিল টাস্ক |
মডেল কম টোকেন ব্যবহার করে; লেটেন্সি ও খরচ কমায় সহজ টাস্ক ও হাই-থ্রুপুট টাস্ক |
মডেলটি ভারসাম্যমূলক পদ্ধতি ব্যবহার করে মাঝারি জটিল টাস্ক |
মডেলটি সর্বাধিক লেভেল পর্যন্ত টোকেন ব্যবহার করে জটিল প্রম্পট যার জন্য গভীর রিজনিং প্রয়োজন |
|
Gemini 3.x Progemini-3.1-pro-preview
|
(ডিফল্ট) | |||
Gemini 3.x Flashgemini-3.8-flashgemini-3.7-flashgemini-3.6-flashgemini-3.5-flash
|
gemini-3.8-flashgemini-3.7-flash |
(ডিফল্ট) | ||
Gemini 3.x Flash‑Litegemini-3.5-flash-litegemini-3.1-flash-lite
|
(ডিফল্ট) | |||
Gemini 3.x Pro Imagegemini-3-pro-image("Nano Banana Pro") |
(ডিফল্ট) | |||
Gemini 3.x Flash Imagegemini-3.1-flash-image("Nano Banana 2") |
(ডিফল্ট) | |||
Gemini 3.x Flash‑Lite Imagegemini-3.1-flash-lite-image("Nano Banana 2 Lite") |
(ডিফল্ট) |
১ gemini-3.8-flash এবং gemini-3.7-flash
MINIMAL থিঙ্কিং লেভেলে কাজ করে না। আপনি যদি
থিংকিং লেভেল MINIMAL হিসেবে সেট করেন, তাহলে অনুরোধটি 400
সমস্যা সহ কাজ করবে না।
থিংকিং বাজেট (Gemini 2.5 মডেল)
Gemini 2.5 মডেল তার উত্তর জেনারেট করার জন্য কতটা চিন্তা করতে পারবে তা কন্ট্রোল করতে, আপনি চিন্তা করার জন্য টোকেনের পরিমাণ নির্দিষ্ট করতে পারেন যা এটি ব্যবহার করতে পারবে। এর জন্য, চিন্তা করার বাজেট নির্দিষ্ট করুন।
চিন্তাভাবনার বাজেট সেট করা
|
এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট কন্টেন্ট ও কোড দেখতে আপনার Gemini API প্রদানকারীর আইকনে ক্লিক করুন। |
Gemini 2.5 মডেলের জন্য GenerativeModel ইনস্ট্যান্স তৈরি করার অংশ হিসেবে GenerationConfig-এ থিঙ্কিং বাজেট সেট করুন।
ইনস্ট্যান্সের লাইফটাইম
ধরে কনফিগারেশন বজায় থাকে। আপনি যদি বিভিন্ন অনুরোধের জন্য আলাদা আলাদা
চিন্তাভাবনার বাজেট ব্যবহার করতে চান, তাহলে প্রতিটি বাজেট দিয়ে কনফিগার করা GenerativeModel ইনস্ট্যান্স
তৈরি করুন।
এই বিভাগের পরের অংশে থিংকিং বাজেটের জন্য কাজ করে এমন ভ্যালু সম্পর্কে জানুন।
Swift
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,
);
// ...
Unity
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 কনফিগার করে সেট করতে পারবেন।
| মডেল | ডিফল্ট মান | থিংকিং বাজেটের জন্য উপলভ্য রেঞ্জ |
চিন্তাভাবনা বন্ধ করার ভ্যালু |
ডায়নামিক থিঙ্কিং চালু করার ভ্যালু |
|
|---|---|---|---|---|---|
| ন্যূনতম ভ্যালু | সর্বাধিক ভ্যালু | ||||
| Gemini 2.5 Pro | 8,192 |
128 |
32,768 |
বন্ধ করা যাবে না | -1 |
| Gemini 2.5 Flash | 8,192 |
1 |
24,576 |
0 |
-1 |
| Gemini 2.5 Flash‑Lite | 0(সাধারণত, 'থিংকিং' ফিচার বন্ধ করা থাকে) |
512 |
24,576 |
0(অথবা বাজেট সম্পর্কে না ভেবেই কনফিগার করুন) |
-1 |
সব থিঙ্কিং মডেলের জন্য টাস্কের জটিলতা
সহজ টাস্ক — বেশি চিন্তা করার প্রয়োজন নেই
সরাসরি অনুরোধ যেখানে জটিল রিজনিংয়ের প্রয়োজন নেই, যেমন তথ্য সংগ্রহ বা শ্রেণীবিন্যাস। যেমন:- "DeepMind কোথায় প্রতিষ্ঠিত হয়েছিল?"
- "এই ইমেলে কি মিটিংয়ের জন্য বলা হয়েছে নাকি শুধু তথ্য দেওয়া হয়েছে?"
মাঝারি টাস্ক — কিছু চিন্তাভাবনা করা প্রয়োজন হতে পারে
সাধারণ অনুরোধ যা ধাপে ধাপে প্রসেস করা বা আরও গভীরভাবে বোঝার মাধ্যমে উপকৃত হয়। যেমন:- "সালোকসংশ্লেষ ও বড় হয়ে ওঠার মধ্যে সাদৃশ্য তৈরি করো।"
- "ইলেকট্রিক গাড়ি ও হাইব্রিড গাড়ির মধ্যে তুলনা ও পার্থক্য করো।"
কঠিন টাস্ক — সর্বাধিক চিন্তাভাবনা প্রয়োজন হতে পারে
সত্যিই জটিল চ্যালেঞ্জ, যেমন জটিল গাণিতিক সমস্যা সমাধান করা বা কোডিং টাস্ক। এই ধরনের টাস্কের জন্য মডেলকে তার সম্পূর্ণ যুক্তি ও পরিকল্পনা করার ক্ষমতা ব্যবহার করতে হয়। উত্তর দেওয়ার আগে প্রায়ই অনেক ইন্টার্নাল ধাপ থাকে। যেমন:- "AIME 2025-এর ১ নম্বর সমস্যা সমাধান করো: ৯-এর থেকে বড় এমন সব পূর্ণসংখ্যা ভিত্তি b-এর যোগফল নির্ণয় করো যার জন্য 17b হল 97b-এর একটি বিভাজক।"
- "ব্যবহারকারী যাচাইকরণ সহ রিয়েল-টাইম স্টক মার্কেট ডেটা ভিজ্যুয়ালাইজ করে এমন একটি ওয়েব অ্যাপ্লিকেশনের জন্য Python কোড লেখো। যতটা সম্ভব দক্ষ করে তোলো।"
চিন্তার সারসংক্ষেপ
চিন্তার সারসংক্ষেপ হল মডেলের অপরিশোধিত চিন্তাভাবনার সিন্থেসাইজ করা ভার্সন এবং এটি মডেলের ইন্টার্নাল যুক্তিপূর্ণ প্রসেস সম্পর্কে ইনসাইট প্রদান করে।
উত্তরে চিন্তার সারসংক্ষেপ যোগ করার কিছু কারণ এখানে দেওয়া হল:
আপনার অ্যাপের UI-তে থট সামারি দেখাতে পারেন অথবা ব্যবহারকারীদের জন্য সেগুলি অ্যাক্সেসযোগ্য করে তুলতে পারেন। উত্তর হিসেবে থট সামারি আলাদা অংশ হিসেবে রিটার্ন করা হয় যাতে আপনার অ্যাপে এটি কীভাবে ব্যবহার করা হবে তা আপনি আরও ভালোভাবে নিয়ন্ত্রণ করতে পারেন।
এছাড়াও, আপনি যদি Firebase কনসোলে AI মনিটরিং চালু করেন, তাহলে কনসোলে থট সামারি দেখানো হবে যেখানে আপনি মডেলের বিস্তারিত যুক্তি পরীক্ষা করে দেখতে পারবেন, এটি আপনাকে ডিবাগ করতে এবং আপনার প্রম্পট রিফাইন করতে সাহায্য করবে।
চিন্তার সারসংক্ষেপ সম্পর্কে কিছু গুরুত্বপূর্ণ বিষয় এখানে দেওয়া হল:
থট সামারি নিয়ন্ত্রিত হয় না থিংকিং বাজেট (বাজেট শুধুমাত্র মডেলের কাঁচা চিন্তার উপর প্রযোজ্য)। তবে, চিন্তাভাবনা করার সুবিধা বন্ধ করা থাকলে, মডেলটি চিন্তাভাবনার সারসংক্ষেপ রিটার্ন করবে না।
মডেলের নিয়মিত জেনারেট করা টেক্সট রেসপন্স হিসেবে থট সামারিকে বিবেচনা করা হয় এবং এটি আউটপুট টোকেন হিসেবে গণনা করা হয়।
'চিন্তার সারসংক্ষেপ' চালু করা
|
এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট কন্টেন্ট ও কোড দেখতে আপনার Gemini API প্রদানকারীর আইকনে ক্লিক করুন। |
আপনার মডেল কনফিগারেশনে includeThoughts-এর মান true সেট করে আপনি থট সামারি চালু করতে পারবেন। তারপর, উত্তরের
thoughtSummary ফিল্ড চেক করে আপনি সারসংক্ষেপ অ্যাক্সেস করতে পারবেন।
উত্তর সহ কীভাবে থট সামারি চালু ও রিট্রিভ করতে হয় তা এখানে একটি উদাহরণের মাধ্যমে দেখানো হল:
Swift
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}');
}
Unity
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 ব্যবহার করে কোনও উত্তর স্ট্রিম করার বিকল্প বেছে নেন, তাহলে চিন্তার সারসংক্ষেপ দেখতে পাবেন। এর ফলে, উত্তর তৈরি করার সময়
রোলিং, ইনক্রিমেন্টাল সারসংক্ষেপ দেখানো হবে।
Swift
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!;
}
}
Unity
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;
}
}
চিন্তা সংক্রান্ত স্বাক্ষর
মাল্টি-টার্ন ইন্টার্যাকশনে থিঙ্কিং ব্যবহার করার সময়, মডেলের কাছে আগের টার্ন থেকে চিন্তার কনটেক্সটে অ্যাক্সেস থাকে না। তবে, আপনি যদি ফাংশন কলিং ব্যবহার করেন, তাহলে আপনি থট সিগনেচার ব্যবহার করে বিভিন্ন টার্ন জুড়ে থট কনটেক্সট বজায় রাখতে পারবেন। Thought signatures হল মডেলের ইন্টার্নাল থট প্রসেসের এনক্রিপ্ট করা উপস্থাপনা এবং থিঙ্কিং ও ফাংশন কলিং ব্যবহার করার সময় সেগুলি উপলভ্য থাকে। বিশেষত, নিম্নলিখিত ক্ষেত্রে চিন্তাভাবনার সিগনেচার তৈরি হয়:
- থিঙ্কিং চালু করা আছে এবং চিন্তাভাবনা জেনারেট করা হয়েছে।
- অনুরোধে ফাংশন ঘোষণা অন্তর্ভুক্ত।
থট সিগনেচারের সুবিধা নিতে, স্বাভাবিকভাবে ফাংশন কলিং ব্যবহার করুন।
Firebase AI Logic SDK, স্টেট ম্যানেজ করার মাধ্যমে প্রসেসকে সহজ করে এবং আপনার হয়ে অটোমেটিক থট সিগনেচার হ্যান্ডেল করে।
SDK অটোমেটিক
Chat সেশনে পরবর্তী sendMessage বা
sendMessageStream কলের মধ্যে জেনারেট করা থট সিগনেচার পাস করে।
দাম ও থিঙ্কিং টোকেন গণনা করা
টেক্সট-আউটপুট টোকেনের মতো একই মূল্য Thinking টোকেনের ক্ষেত্রেও প্রযোজ্য। আপনি চিন্তা সংক্রান্ত সারসংক্ষেপ চালু করলে, সেগুলিকে চিন্তন টোকেন হিসেবে বিবেচনা করা হয় এবং সেই অনুযায়ী দাম নির্ধারণ করা হয়।
যেসব অনুরোধের জন্য থিঙ্কিং চালু করা আছে, সেগুলির জন্য থিঙ্কিং টোকেনের সংখ্যা মনিটর করতে, আপনি Firebase কনসোলে AI মনিটরিং চালু করতে পারবেন।
আপনি usageMetadata অ্যাট্রিবিউটের thoughtsTokenCount
ফিল্ড থেকে থিঙ্কিং টোকেনের মোট সংখ্যা পেতে পারেন:
Swift
// ...
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}");
}
Unity
// ...
var response = await model.GenerateContentAsync("Why is the sky blue?");
if (response.UsageMetadata != null)
{
UnityEngine.Debug.Log($"Thoughts Token Count: {response.UsageMetadata?.ThoughtsTokenCount}");
}
টোকেন গণনা সংক্রান্ত নির্দেশিকা থেকে টোকেন সম্পর্কে আরও জানুন।