استفاده از حالت تفکر

حالت «تفکر» مدل را وادار می‌کند تا پیش‌از تولید پاسخ نهایی، فرایند استدلال خود را ارائه دهد. حالت «اندیشگر» دقت فراخوانی تابع مدل را بهبود می‌بخشد و برای ریاضی، حل مسئله، و دیگر تکالیف استدلالی پیچیده به‌خوبی کار می‌کند.

وقتی حالت اندیشگر فعال باشد، برونداد مدل به دو بخش تقسیم می‌شود:

  1. فرایند فکر: مراحل استدلال یا برنامه‌ریزی داخلی که مدل طی می‌کند.
  2. پاسخ: پاسخ نهایی تولیدشده برای کاربر.

پیش‌نیازها

حالت «اندیشگر» در دستگاه‌هایی که Gemini Nano V4 و بالاتر را اجرا می‌کنند کار می‌کند. می‌توانید حالت تفکر را ازطریق برنامه «پیش‌نمای توسعه‌دهندگان نرم‌افزار» در هر دستگاهی که 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 پشتیبانی نمی‌شود.