Düşünme modu, modelin nihai yanıtı oluşturmadan önce akıl yürütme sürecini paylaşmasını ister. Düşünme modu, modelin işlev çağrısı doğruluğunu artırır ve matematik, problem çözme ve diğer karmaşık akıl yürütme görevlerinde iyi sonuç verir.
Düşünme modu etkinleştirildiğinde model çıkışı iki bölüme ayrılır:
- Düşünce süreci: Modelin içsel akıl yürütme veya planlama adımları.
- Yanıt: Kullanıcı için oluşturulan nihai yanıt.
Ön koşullar
Düşünme modu, Gemini Nano V4 ve sonraki sürümlerin yüklü olduğu cihazlarda çalışır. Düşünme modunu, AICore'un etkin olduğu herhangi bir cihazda Geliştirici Önizlemesi programı üzerinden test edebilirsiniz.
Düşünme modunu etkinleştirme
Düşünme modunu kullanmak için enableThinking işaretini generateContentRequest oluşturucu işlevinizde true olarak ayarlayarak bu modu etkinleştirmeniz gerekir:
val request = generateContentRequest {
text("Solve this complex riddle: ...")
enableThinking = true // Enable thinking mode for Gemini Nano V4
}
Düşüncelere erişme
ML Kit SDK, akışsız veya akışlı bir uygulama kullanmanıza bağlı olarak, bir modelin yanıtından önceki düşüncelere erişmek için farklı yöntemler sunar.
Akışla aktarma modu dışı
Standart akış içermeyen aramalarda, muhakeme süreci tam yanıtın bir parçası olarak döndürülür. Bu işleme, thoughtProcess nesnesinde GenerateContentResponse nesnelerinin listesini içeren Candidate özelliğiyle erişebilirsiniz.
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
}
Akış modu
Anında geri bildirimi desteklemek için StreamingCallback arayüzü, onNewThought yöntemini içerecek şekilde güncellendi. Bu, uygulamanızın model tarafından oluşturulan düşünce parçalarını yayın olarak işlemesini sağlar.
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
}
En iyi uygulamalar
Düşünme modunu kullanırken izleyebileceğiniz birkaç en iyi uygulamayı aşağıda bulabilirsiniz:
- Kullanıcı arayüzü göstergeleri: Muhakeme adımlarının oluşturulması zaman alabileceğinden, akış modunda düşüncelerin veya "düşünüyor" göstergesinin gösterilmesi, kullanıcılara modelin etkin olduğunu göstererek algılanan performansı önemli ölçüde artırabilir.
- Seçici uygulama: Ham muhakemeyi son kullanıcılara göstermek istemiyorsanız
thoughtProcessalanını yoksayabilir veyaonNewThoughtuygulamasını atlayabilirsiniz.onNewThoughtyöntemi, geriye dönük uyumluluğu sağlamak için varsayılan olarak boş bir uygulamaya sahiptir.
Daha fazla ipucu için Gemma'da düşünme modu başlıklı makaleyi inceleyin. Çok turlu sohbetlerin şu anda AICore'da desteklenmediğini unutmayın.