حالت تفکر، مدل را وادار میکند تا قبل از تولید پاسخ نهایی، فرآیند استدلال خود را خروجی دهد. حالت تفکر، دقت فراخوانی تابع مدل را بهبود میبخشد و برای ریاضی، حل مسئله و سایر وظایف استدلالی پیچیده به خوبی عمل میکند.
وقتی حالت تفکر فعال باشد، خروجی مدل به دو بخش تقسیم میشود:
- فرآیند تفکر: مراحل استدلال درونی یا برنامهریزی که مدل طی میکند.
- پاسخ: پاسخ نهایی تولید شده برای کاربر.
پیشنیازها
حالت تفکر (Thinking mode) روی دستگاههایی که Gemini Nano V4 و بالاتر را اجرا میکنند، کار میکند. میتوانید حالت تفکر را از طریق برنامه پیشنمایش توسعهدهندگان (Developer Preview) روی هر دستگاهی که از AICore پشتیبانی میکند، آزمایش کنید.
حالت تفکر را فعال کنید
برای استفاده از حالت تفکر، باید با تنظیم پرچم enableThinking روی true در تابع سازنده generateContentRequest خود، این حالت را فعال کنید:
val request = generateContentRequest {
text("Solve this complex riddle: ...")
enableThinking = true // Enable thinking mode for Gemini Nano V4
}
دسترسی به افکار
کیت توسعه نرمافزار ML Kit بسته به اینکه از پیادهسازی غیر-استریمینگ یا استریمینگ استفاده میکنید، روشهای مختلفی برای دسترسی به افکاری که مقدم بر پاسخ مدل هستند، ارائه میدهد.
حالت غیر استریمینگ
در فراخوانیهای استاندارد غیر استریمینگ، فرآیند استدلال به عنوان بخشی از پاسخ کامل بازگردانده میشود. میتوانید با استفاده از ویژگی thoughtProcess - که شامل لیستی از اشیاء Candidate است - در شیء GenerateContentResponse به این فرآیند دسترسی داشته باشید.
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
}
بهترین شیوهها
در اینجا به برخی از بهترین شیوهها هنگام استفاده از حالت تفکر اشاره میکنیم:
- شاخصهای رابط کاربری: از آنجا که مراحل استدلال میتوانند زمانبر باشند، نمایش افکار یا یک شاخص «تفکر» در حالت پخش جریانی میتواند با نشان دادن فعال بودن مدل به کاربر، عملکرد ادراکشده را به طور قابل توجهی بهبود بخشد.
- پیادهسازی انتخابی: اگر نمیخواهید استدلال خام را در معرض دید کاربران نهایی قرار دهید، میتوانید فیلد
thoughtProcessرا نادیده بگیرید یا پیادهسازیonNewThoughtرا حذف کنید. متدonNewThoughtدارای یک پیادهسازی پیشفرض خالی است تا به تضمین سازگاری با نسخههای قبلی کمک کند.
برای نکات بیشتر، به حالت تفکر در Gemma مراجعه کنید. توجه داشته باشید که مکالمات چند نوبتی در حال حاضر در AICore پشتیبانی نمیشوند.