सोचने के मोड का इस्तेमाल करना

थिंकिंग मोड, मॉडल को फ़ाइनल जवाब जनरेट करने से पहले, तर्क करने की प्रोसेस को आउटपुट के तौर पर दिखाने के लिए कहता है. थिंकिंग मोड, फ़ंक्शन-कॉलिंग की सटीक जानकारी देने की मॉडल की क्षमता को बेहतर बनाता है. साथ ही, यह गणित, समस्या हल करने, और तर्क से जुड़े अन्य मुश्किल कामों के लिए बेहतर तरीके से काम करता है.

थिंकिंग मोड चालू होने पर, मॉडल आउटपुट को दो हिस्सों में बांटा जाता है:

  1. सोचने की प्रोसेस: मॉडल, जवाब देने के लिए अंदरूनी तौर पर जो तर्क या प्लानिंग करता है.
  2. जवाब: उपयोगकर्ता के लिए जनरेट किया गया आखिरी जवाब.

ज़रूरी शर्तें

थिंकिंग मोड, 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
}

सबसे सही तरीके

थिंकिंग मोड का इस्तेमाल करते समय, यहाँ दिए गए सबसे सही तरीक़े अपनाएँ:

  • यूज़र इंटरफ़ेस (यूआई) इंडिकेटर: रीज़निंग के चरणों को जनरेट होने में समय लग सकता है. इसलिए, स्ट्रीमिंग मोड में मॉडल के विचारों या "सोच रहा है" इंडिकेटर को दिखाने से, उपयोगकर्ता को यह पता चलता है कि मॉडल चालू है. इससे, मॉडल की परफ़ॉर्मेंस को बेहतर बनाने में मदद मिल सकती है.
  • चुनिंदा तरीके से लागू करना: अगर आपको असली उपयोगकर्ताओं को रॉ रीज़निंग नहीं दिखानी है, तो thoughtProcess फ़ील्ड को अनदेखा किया जा सकता है या onNewThought को लागू करने की प्रोसेस को छोड़ा जा सकता है. onNewThought तरीके में, डिफ़ॉल्ट रूप से खाली लागू करने की सुविधा होती है. इससे पुराने सिस्टम के साथ काम करने की सुविधा को पक्का करने में मदद मिलती है.

ज़्यादा सुझाव पाने के लिए, Gemma में थिंकिंग मोड देखें. ध्यान दें कि AICore में, फ़िलहाल एक से ज़्यादा बार बातचीत करने की सुविधा उपलब्ध नहीं है.