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

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

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

  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 में एक से ज़्यादा बार बातचीत करने की सुविधा उपलब्ध नहीं है.