থিঙ্কিং মোড মডেলকে চূড়ান্ত উত্তর দেওয়ার আগে তার রিজনিং প্রসেস আউটপুট করতে প্রম্পট করে। থিঙ্কিং মোড মডেলের ফাংশন-কলিংয়ের নির্ভুলতা উন্নত করে এবং গণিত, সমস্যা সমাধান ও অন্যান্য জটিল রিজনিং টাস্কের জন্য ভালো কাজ করে।
থিঙ্কিং মোড চালু থাকলে, মডেল আউটপুট দুটি ভাগে বিভক্ত থাকে:
- চিন্তাভাবনার প্রসেস: মডেলের ইন্টার্নাল রিজনিং বা প্ল্যানিংয়ের ধাপ।
- উত্তর: ব্যবহারকারীর জন্য জেনারেট করা চূড়ান্ত উত্তর।
পূর্বশর্ত
Gemini Nano V4 এবং তার পরবর্তী ভার্সন চলছে এমন ডিভাইসে থিঙ্কিং মোড কাজ করে। আপনি AICore-চালু থাকা যেকোনও ডিভাইসে ডেভেলপার প্রিভিউ প্রোগ্রামের মাধ্যমে থিংকিং মোড পরীক্ষা করতে পারবেন।
থিঙ্কিং মোড চালু করুন
থিংকিং মোড ব্যবহার করতে, আপনার generateContentRequest বিল্ডার ফাংশনে enableThinking ফ্ল্যাগকে
true-এ সেট করে আপনাকে অপ্ট-ইন করতে হবে:
val request = generateContentRequest {
text("Solve this complex riddle: ...")
enableThinking = true // Enable thinking mode for Gemini Nano V4
}
অ্যাক্সেস থট
আপনি নন-স্ট্রিমিং বা স্ট্রিমিং ইমপ্লিমেন্টেশন ব্যবহার করছেন কিনা তার উপর নির্ভর করে, ML Kit SDK, মডেলের উত্তরের আগে আসা চিন্তাভাবনা অ্যাক্সেস করার বিভিন্ন উপায় প্রদান করে।
নন-স্ট্রিমিং মোড
স্ট্যান্ডার্ড নন-স্ট্রিমিং কলে, সম্পূর্ণ উত্তরের অংশ হিসেবে
রিজনিং প্রসেস ফেরত দেওয়া হয়। আপনি GenerateContentResponse অবজেক্টে thoughtProcess প্রপার্টি (যার মধ্যে Candidate অবজেক্টের তালিকা আছে) ব্যবহার করে এই প্রসেস অ্যাক্সেস করতে পারবেন।
try {
val response = generativeModel.generateContent(request)
// 1. Access the main response
val answer = response.candidates.firstOrNull()?.text
println("Final Answer: $answer")
// 2. Access the separated thought process
println("Thought Process:")
response.thoughtProcess.forEach { thoughtCandidate ->
print(thoughtCandidate.text)
}
} catch (e: GenAiException) {
// Handle SDK-specific exceptions
}
স্ট্রিমিং মোড
রিয়েল-টাইম ফিডব্যাক সংক্রান্ত সুবিধা দিতে, StreamingCallback ইন্টারফেস আপডেট করা হয়েছে যাতে
onNewThought পদ্ধতি অন্তর্ভুক্ত করা যায়। এটি আপনার অ্যাপকে মডেলের মাধ্যমে জেনারেট করা
স্ট্রিমিং থট চাঙ্ক ম্যানেজ করার সুবিধা দেয়।
val callback = object : StreamingCallback {
override fun onNewText(additionalText: String) {
// Called for regular response chunks
print(additionalText)
}
override fun onNewThought(additionalThought: String) {
// Called for thought chunks before final text arrives
// Update a separate reasoning UI or status indicator
print("[Thinking: $additionalThought]")
}
}
try {
generativeModel.generateContent(request, callback)
} catch (e: GenAiException) {
// Handle exception
}
পেশাদার পদ্ধতি
থিংকিং মোড ব্যবহার করার সময় কিছু পেশাদার পদ্ধতি এখানে দেওয়া হল:
- UI ইন্ডিকেটর: রিজনিংয়ের ধাপগুলি জেনারেট করতে সময় লাগতে পারে, তাই স্ট্রিমিং মোডে চিন্তা বা "চিন্তা করছে" ইন্ডিকেটর দেখালে ব্যবহারকারী বুঝতে পারবেন যে মডেলটি অ্যাক্টিভ আছে এবং এর ফলে পারফর্ম্যান্সের ব্যাপারে তার ধারণা উল্লেখযোগ্যভাবে উন্নত হবে।
- বাছাই করা প্রয়োগ: আপনি যদি ব্যবহারকারীকে
র-রিজনিং দেখাতে না চান, তাহলে
thoughtProcessফিল্ডটি উপেক্ষা করতে পারেন অথবাonNewThoughtপ্রয়োগ বাদ দিতে পারেন। ব্যাকওয়ার্ড কম্প্যাটিবিলিটি নিশ্চিত করতে সাহায্য করার জন্যonNewThoughtপদ্ধতিতে ডিফল্ট খালি ইমপ্লিমেন্টেশন আছে।
আরও পরামর্শের জন্য, Gemma-তে থিঙ্কিং মোড দেখুন। মনে রাখবেন যে AICore-এ বর্তমানে মাল্টি-টার্ন কথোপকথন কাজ করে না।