জেমিনি ২.৫ মডেলগুলি একটি অভ্যন্তরীণ "চিন্তা প্রক্রিয়া" ব্যবহার করতে পারে যা তাদের যুক্তি এবং বহু-পদক্ষেপ পরিকল্পনার ক্ষমতা উল্লেখযোগ্যভাবে উন্নত করে, যা কোডিং, উন্নত গণিত এবং ডেটা বিশ্লেষণের মতো জটিল কাজের জন্য তাদের অত্যন্ত কার্যকর করে তোলে।
চিন্তাশীল মডেলগুলি নিম্নলিখিত কনফিগারেশন এবং বিকল্পগুলি অফার করে:
চিন্তাভাবনার বাজেট : একটি মডেল কতটা "চিন্তাভাবনা" করতে পারে তা আপনি একটি চিন্তাভাবনার বাজেট ব্যবহার করে কনফিগার করতে পারেন। এই কনফিগারেশনটি বিশেষভাবে গুরুত্বপূর্ণ যদি বিলম্বিতা বা খরচ কমানো অগ্রাধিকার হয়। এছাড়াও, একটি মডেলের চিন্তাভাবনার ক্ষমতা কতটা প্রয়োজন তা নির্ধারণ করতে কাজের অসুবিধার তুলনা পর্যালোচনা করুন।
চিন্তার সারসংক্ষেপ : আপনি উৎপন্ন প্রতিক্রিয়ার সাথে চিন্তার সারসংক্ষেপ অন্তর্ভুক্ত করতে সক্ষম করতে পারেন। এই সারসংক্ষেপগুলি মডেলের কাঁচা চিন্তাভাবনার সংশ্লেষিত সংস্করণ এবং মডেলের অভ্যন্তরীণ যুক্তি প্রক্রিয়া সম্পর্কে অন্তর্দৃষ্টি প্রদান করে।
চিন্তার স্বাক্ষর : Firebase AI Logic SDK গুলি স্বয়ংক্রিয়ভাবে আপনার জন্য চিন্তার স্বাক্ষর পরিচালনা করে, যা নিশ্চিত করে যে মডেলটি পূর্ববর্তী মোড় থেকে চিন্তার প্রসঙ্গে অ্যাক্সেস পেয়েছে, বিশেষ করে ফাংশন কলিং ব্যবহার করার সময়।
চিন্তাভাবনা মডেল ব্যবহারের জন্য সর্বোত্তম অনুশীলন এবং প্রণোদনামূলক নির্দেশিকা পর্যালোচনা করতে ভুলবেন না।
একটি চিন্তাভাবনা মডেল ব্যবহার করুন
অন্য যেকোনো জেমিনি মডেলের মতোই একটি চিন্তাভাবনা মডেল ব্যবহার করুন (আপনার নির্বাচিত জেমিনি API প্রদানকারী চালু করুন, একটি GenerativeModel ইনস্ট্যান্স তৈরি করুন, ইত্যাদি)। এই মডেলগুলি টেক্সট বা কোড জেনারেশনের কাজে ব্যবহার করা যেতে পারে, যেমন স্ট্রাকচার্ড আউটপুট তৈরি করা বা মাল্টিমোডাল ইনপুট বিশ্লেষণ করা (যেমন ছবি , ভিডিও , অডিও , বা পিডিএফ )। আপনি আউটপুট স্ট্রিম করার সময়ও চিন্তাভাবনা মডেল ব্যবহার করতে পারেন।
এই ক্ষমতা সমর্থন করে এমন মডেলগুলি
শুধুমাত্র জেমিনি ৩ এবং জেমিনি ২.৫ মডেলই এই ক্ষমতা সমর্থন করে।
-
gemini-3-pro-preview -
gemini-3-pro-image-preview("ন্যানো ব্যানানা প্রো" নামেও পরিচিত) -
gemini-2.5-pro -
gemini-2.5-flash -
gemini-2.5-flash-lite
চিন্তাভাবনা মডেল ব্যবহারের জন্য সর্বোত্তম অনুশীলন এবং প্রণোদনামূলক নির্দেশিকা
আমরা আপনার প্রম্পটটি Google AI Studio অথবা Vertex AI Studio- তে পরীক্ষা করার পরামর্শ দিচ্ছি যেখানে আপনি সম্পূর্ণ চিন্তাভাবনা প্রক্রিয়াটি দেখতে পারবেন। আপনি এমন কোনও ক্ষেত্র চিহ্নিত করতে পারবেন যেখানে মডেলটি ভুল পথে চলে গেছে যাতে আপনি আরও সামঞ্জস্যপূর্ণ এবং সঠিক প্রতিক্রিয়া পেতে আপনার প্রম্পটগুলিকে পরিমার্জন করতে পারেন।
একটি সাধারণ প্রম্পট দিয়ে শুরু করুন যা কাঙ্ক্ষিত ফলাফল বর্ণনা করে, এবং মডেলটি কীভাবে তার প্রতিক্রিয়া নির্ধারণ করে সে সম্পর্কে তার প্রাথমিক চিন্তাভাবনাগুলি পর্যবেক্ষণ করুন। যদি প্রতিক্রিয়া প্রত্যাশা অনুযায়ী না হয়, তাহলে নিম্নলিখিত প্রম্পট কৌশলগুলির যেকোনো একটি ব্যবহার করে মডেলটিকে আরও ভাল প্রতিক্রিয়া তৈরি করতে সহায়তা করুন:
- ধাপে ধাপে নির্দেশাবলী প্রদান করুন
- ইনপুট-আউটপুট জোড়ার কয়েকটি উদাহরণ দিন।
- আউটপুট এবং প্রতিক্রিয়াগুলি কীভাবে বাক্যাংশে লেখা এবং ফর্ম্যাট করা উচিত তার জন্য নির্দেশিকা প্রদান করুন।
- নির্দিষ্ট যাচাইকরণের ধাপগুলি প্রদান করুন
প্রম্পট করার পাশাপাশি, এই সুপারিশগুলি ব্যবহার করার কথা বিবেচনা করুন:
সিস্টেম নির্দেশাবলী সেট করুন, যা একটি "প্রিয়াম্বেল" এর মতো যা আপনি মডেলটি প্রম্পট বা শেষ ব্যবহারকারীর কাছ থেকে আরও কোনও নির্দেশের সংস্পর্শে আসার আগে যোগ করেন। এগুলি আপনাকে আপনার নির্দিষ্ট চাহিদা এবং ব্যবহারের ক্ষেত্রের উপর ভিত্তি করে মডেলের আচরণ পরিচালনা করতে দেয়।
মডেলটি কতটা চিন্তাভাবনা করতে পারে তা কনফিগার করার জন্য একটি চিন্তাভাবনা বাজেট সেট করুন। যদি আপনি একটি কম বাজেট সেট করেন, তাহলে মডেলটি তার প্রতিক্রিয়া "অতিরিক্ত চিন্তা" করবে না। যদি আপনি একটি উচ্চ বাজেট সেট করেন, তাহলে প্রয়োজনে মডেলটি আরও চিন্তা করতে পারে। একটি চিন্তাভাবনা বাজেট সেট করলে প্রকৃত প্রতিক্রিয়ার জন্য মোট টোকেন আউটপুট সীমার বেশি সংরক্ষণ করা হয়।
Firebase কনসোলে AI মনিটরিং সক্ষম করুন যাতে আপনি চিন্তাভাবনা সক্ষম করা অনুরোধগুলির টোকেনের সংখ্যা এবং বিলম্ব পর্যবেক্ষণ করতে পারেন। এবং যদি আপনার চিন্তাভাবনার সারাংশ সক্ষম করা থাকে, তাহলে সেগুলি কনসোলে প্রদর্শিত হবে যেখানে আপনি মডেলের বিস্তারিত যুক্তি পরীক্ষা করতে পারবেন যা আপনাকে আপনার প্রম্পটগুলি ডিবাগ এবং পরিমার্জন করতে সাহায্য করবে।
চিন্তাভাবনা বাজেট নিয়ন্ত্রণ করুন
মডেলটি তার প্রতিক্রিয়া তৈরি করতে কতটা চিন্তাভাবনা করতে পারে তা নিয়ন্ত্রণ করতে, আপনি এটি কতগুলি চিন্তাভাবনা বাজেট টোকেন ব্যবহার করার অনুমতি দিয়েছে তা নির্দিষ্ট করতে পারেন।
আপনি এমন পরিস্থিতিতে ম্যানুয়ালি চিন্তাভাবনা বাজেট সেট করতে পারেন যেখানে আপনার ডিফল্ট চিন্তাভাবনা বাজেটের চেয়ে বেশি বা কম টোকেনের প্রয়োজন হতে পারে। এই বিভাগে পরে কাজের জটিলতা এবং প্রস্তাবিত বাজেট সম্পর্কে আরও বিস্তারিত নির্দেশিকা পান। এখানে কিছু উচ্চ-স্তরের নির্দেশিকা রয়েছে:
- যদি লেটেন্সি গুরুত্বপূর্ণ হয় অথবা কম জটিল কাজের জন্য কম চিন্তাভাবনার বাজেট নির্ধারণ করুন
- আরও জটিল কাজের জন্য উচ্চ চিন্তাভাবনার বাজেট নির্ধারণ করুন
চিন্তাভাবনা করে বাজেট নির্ধারণ করুন
এই পৃষ্ঠায় প্রোভাইডার-নির্দিষ্ট কন্টেন্ট এবং কোড দেখতে আপনার জেমিনি API প্রোভাইডারে ক্লিক করুন। |
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_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_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_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_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(thinkingBudget: 1024);
final generationConfig = GenerationConfig(
thinkingConfig: thinkingConfig
);
// Specify the config as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
model: 'GEMINI_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_MODEL_NAME",
generationConfig: generationConfig
);
// ...
সমর্থিত চিন্তাভাবনা বাজেট মূল্যবোধ
নিচের টেবিলে মডেলের thinkingBudget কনফিগার করে প্রতিটি মডেলের জন্য আপনি যে চিন্তাভাবনা বাজেটের মান নির্ধারণ করতে পারেন তার তালিকা দেওয়া হয়েছে।
| মডেল | ডিফল্ট মান | বাজেট চিন্তা করার জন্য উপলব্ধ পরিসর | মান চিন্তাভাবনা বন্ধ করে দিন | মান গতিশীল চিন্তাভাবনা সক্ষম করুন | |
|---|---|---|---|---|---|
| সর্বনিম্ন মান | সর্বোচ্চ মান | ||||
| জেমিনি ২.৫ প্রো | 8,192 | 128 | 32,768 | বন্ধ করা যাবে না | -1 |
| জেমিনি 2.5 ফ্ল্যাশ | 8,192 | 1 | 24,576 | 0 | -1 |
| জেমিনি ২.৫ ফ্ল্যাশ-লাইট | 0(চিন্তাভাবনা ডিফল্টরূপে নিষ্ক্রিয় থাকে) | 512 | 24,576 | 0(অথবা চিন্তাভাবনা বাজেট একেবারেই কনফিগার করবেন না) | -1 |
চিন্তাভাবনা বন্ধ করুন
কিছু সহজ কাজের জন্য, চিন্তা করার ক্ষমতার প্রয়োজন হয় না, এবং ঐতিহ্যবাহী অনুমানই যথেষ্ট। অথবা যদি বিলম্বিতা হ্রাস করা অগ্রাধিকার হয়, তাহলে আপনি মডেলটিকে প্রতিক্রিয়া তৈরি করতে প্রয়োজনের চেয়ে বেশি সময় নাও নিতে চাইতে পারেন।
এই পরিস্থিতিতে, আপনি চিন্তাভাবনা বন্ধ (অথবা বন্ধ) করতে পারেন:
- জেমিনি ২.৫ প্রো : চিন্তাভাবনা বন্ধ করা যাবে না
- জেমিনি ২.৫ ফ্ল্যাশ :
thinkingBudget0টোকেনে সেট করুন - জেমিনি ২.৫ ফ্ল্যাশ-লাইট : চিন্তাভাবনা ডিফল্টরূপে অক্ষম করা আছে
গতিশীল চিন্তাভাবনা সক্ষম করুন
আপনি মডেলটিকে কখন এবং কতটা চিন্তা করবে (যাকে গতিশীল চিন্তা বলা হয়) তা নির্ধারণ করতে দিতে পারেন thinkingBudget কে -1 এ সেট করে। মডেলটি যতগুলি উপযুক্ত মনে করবে ততগুলি টোকেন ব্যবহার করতে পারে, উপরে তালিকাভুক্ত তার সর্বোচ্চ টোকেন মান পর্যন্ত।
কাজের জটিলতা
সহজ কাজ - চিন্তাভাবনা বন্ধ করা যেতে পারে
সহজবোধ্য অনুরোধ যেখানে জটিল যুক্তির প্রয়োজন হয় না, যেমন তথ্য পুনরুদ্ধার বা শ্রেণীবিভাগ। উদাহরণ:- "ডিপমাইন্ড কোথায় প্রতিষ্ঠিত হয়েছিল?"
- "এই ইমেলটি কি কোনও মিটিং চাওয়ার জন্য, নাকি কেবল তথ্য প্রদানের জন্য?"
মাঝারি কাজ — ডিফল্ট বাজেট অথবা কিছু অতিরিক্ত চিন্তাভাবনামূলক বাজেট প্রয়োজন
ধাপে ধাপে প্রক্রিয়াকরণ বা গভীর বোধগম্যতার মাধ্যমে উপকৃত সাধারণ অনুরোধগুলি। উদাহরণ:- "সালোকসংশ্লেষণ এবং বেড়ে ওঠার মধ্যে একটি সাদৃশ্য তৈরি করুন।"
- "বৈদ্যুতিক গাড়ি এবং হাইব্রিড গাড়ির তুলনা করুন এবং তাদের তুলনা করুন।"
কঠিন কাজ — সর্বোচ্চ চিন্তাভাবনামূলক বাজেটের প্রয়োজন হতে পারে
জটিল গণিত সমস্যা সমাধান বা কোডিং কাজগুলির মতো সত্যিই জটিল চ্যালেঞ্জ। এই ধরণের কাজের জন্য মডেলটিকে তার সম্পূর্ণ যুক্তি এবং পরিকল্পনা ক্ষমতা ব্যবহার করতে হয়, প্রায়শই উত্তর দেওয়ার আগে অনেক অভ্যন্তরীণ পদক্ষেপ জড়িত থাকে। উদাহরণ:- "AIME 2025-এ সমস্যা 1 সমাধান করুন: b > 9 এর সমস্ত পূর্ণসংখ্যার ভিত্তির যোগফল বের করুন, যার জন্য 17b হল 97b এর একটি ভাজক।"
- "একটি ওয়েব অ্যাপ্লিকেশনের জন্য পাইথন কোড লিখুন যা ব্যবহারকারীর প্রমাণীকরণ সহ রিয়েল-টাইম স্টক মার্কেট ডেটা কল্পনা করে। এটিকে যতটা সম্ভব দক্ষ করুন।"
উত্তরগুলিতে চিন্তার সারাংশ অন্তর্ভুক্ত করুন
চিন্তার সারাংশগুলি মডেলের কাঁচা চিন্তাভাবনার সংশ্লেষিত সংস্করণ এবং মডেলের অভ্যন্তরীণ যুক্তি প্রক্রিয়া সম্পর্কে অন্তর্দৃষ্টি প্রদান করে।
উত্তরগুলিতে চিন্তার সারসংক্ষেপ অন্তর্ভুক্ত করার কিছু কারণ এখানে দেওয়া হল:
আপনি আপনার অ্যাপের UI-তে চিন্তার সারাংশ প্রদর্শন করতে পারেন অথবা আপনার ব্যবহারকারীদের কাছে অ্যাক্সেসযোগ্য করে তুলতে পারেন। চিন্তার সারাংশটি প্রতিক্রিয়ার একটি পৃথক অংশ হিসাবে ফেরত পাঠানো হয় যাতে আপনার অ্যাপে এটি কীভাবে ব্যবহার করা হয় তার উপর আপনার আরও নিয়ন্ত্রণ থাকে।
যদি আপনি Firebase কনসোলে AI মনিটরিং সক্ষম করেন, তাহলে কনসোলে চিন্তার সারাংশ প্রদর্শিত হবে যেখানে আপনি মডেলের বিস্তারিত যুক্তি পরীক্ষা করতে পারবেন যা আপনার প্রম্পটগুলি ডিবাগ এবং পরিমার্জন করতে সাহায্য করবে।
চিন্তার সারাংশ সম্পর্কে কিছু গুরুত্বপূর্ণ নোট এখানে দেওয়া হল:
চিন্তার সারাংশ চিন্তার বাজেট দ্বারা নিয়ন্ত্রিত হয় না (বাজেট শুধুমাত্র মডেলের কাঁচা চিন্তার ক্ষেত্রে প্রযোজ্য)। তবে, যদি চিন্তাভাবনা অক্ষম করা হয় , তাহলে মডেলটি চিন্তার সারাংশ ফেরত দেবে না।
চিন্তার সারাংশগুলিকে মডেলের নিয়মিত উৎপন্ন-পাঠ্য প্রতিক্রিয়ার অংশ হিসাবে বিবেচনা করা হয় এবং আউটপুট টোকেন হিসাবে গণনা করা হয়।
চিন্তার সারাংশ সক্ষম করুন
এই পৃষ্ঠায় প্রোভাইডার-নির্দিষ্ট কন্টেন্ট এবং কোড দেখতে আপনার জেমিনি API প্রোভাইডারে ক্লিক করুন। |
আপনার মডেল কনফিগারেশনে 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}");
}
# Example Response:
# Okay, let's solve the quadratic equation x² + 4x + 4 = 0.
# ...
# **Answer:**
# The solution to the equation x² + 4x + 4 = 0 is x = -2. This is a repeated root (or a root with multiplicity 2).
# Example Thought Summary:
# **My Thought Process for Solving the Quadratic Equation**
#
# Alright, let's break down this quadratic, x² + 4x + 4 = 0. First things first:
# it's a quadratic; the x² term gives it away, and we know the general form is
# ax² + bx + c = 0.
#
# So, let's identify the coefficients: a = 1, b = 4, and c = 4. Now, what's the
# most efficient path to the solution? My gut tells me to try factoring; it's
# often the fastest route if it works. If that fails, I'll default to the quadratic
# formula, which is foolproof. Completing the square? It's good for deriving the
# formula or when factoring is difficult, but not usually my first choice for
# direct solving, but it can't hurt to keep it as an option.
#
# Factoring, then. I need to find two numbers that multiply to 'c' (4) and add
# up to 'b' (4). Let's see... 1 and 4 don't work (add up to 5). 2 and 2? Bingo!
# They multiply to 4 and add up to 4. This means I can rewrite the equation as
# (x + 2)(x + 2) = 0, or more concisely, (x + 2)² = 0. Solving for x is now
# trivial: x + 2 = 0, thus x = -2.
#
# Okay, just to be absolutely certain, I'll run the quadratic formula just to
# double-check. x = [-b ± √(b² - 4ac)] / 2a. Plugging in the values, x = [-4 ±
# √(4² - 4 * 1 * 4)] / (2 * 1). That simplifies to x = [-4 ± √0] / 2. So, x =
# -2 again - a repeated root. Nice.
#
# Now, let's check via completing the square. Starting from the same equation,
# (x² + 4x) = -4. Take half of the b-value (4/2 = 2), square it (2² = 4), and
# add it to both sides, so x² + 4x + 4 = -4 + 4. Which simplifies into (x + 2)²
# = 0. The square root on both sides gives us x + 2 = 0, therefore x = -2, as
# expected.
#
# Always, *always* confirm! Let's substitute x = -2 back into the original
# equation: (-2)² + 4(-2) + 4 = 0. That's 4 - 8 + 4 = 0. It checks out.
#
# Conclusion: the solution is x = -2. Confirmed.
চিন্তার সারাংশ স্ট্রিম করুন
আপনি যদি 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 কনসোলে AI মনিটরিং সক্ষম করতে পারেন যাতে চিন্তাভাবনা সক্ষম করা অনুরোধগুলির জন্য চিন্তাভাবনা টোকেনের সংখ্যা নিরীক্ষণ করা যায়।
আপনি প্রতিক্রিয়ার 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}");
}
টোকেন সম্পর্কে আরও জানুন কাউন্ট টোকেন গাইডে ।