Mode penalaran meminta model untuk menghasilkan proses penalarannya sebelum menghasilkan respons akhir. Mode penalaran meningkatkan akurasi pemanggilan fungsi model dan berfungsi dengan baik untuk tugas matematika, pemecahan masalah, dan penalaran kompleks lainnya.
Jika mode penalaran diaktifkan, output model akan dibagi menjadi dua bagian:
- Proses pemikiran: Langkah-langkah penalaran atau perencanaan internal yang dilakukan model.
- Respons: Jawaban akhir yang dihasilkan untuk pengguna.
Prasyarat
Mode penalaran berfungsi di perangkat yang menjalankan Gemini Nano V4 dan yang lebih baru. Anda dapat menguji mode penalaran melalui program Pratinjau Developer di perangkat apa pun yang mendukung AICore.
Mengaktifkan mode penalaran
Untuk menggunakan mode penalaran, Anda harus mengaktifkannya dengan menetapkan flag enableThinking
ke true dalam fungsi builder generateContentRequest:
val request = generateContentRequest {
text("Solve this complex riddle: ...")
enableThinking = true // Enable thinking mode for Gemini Nano V4
}
Mengakses pemikiran
ML Kit SDK menyediakan berbagai cara untuk mengakses pemikiran yang mendahului respons model, bergantung pada apakah Anda menggunakan implementasi non-streaming atau streaming.
Mode non-streaming
Dalam panggilan non-streaming standar, proses penalaran ditampilkan sebagai bagian
dari respons lengkap. Anda dapat mengakses proses ini menggunakan properti thoughtProcess
(yang berisi daftar objek Candidate) pada
objek 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
}
Mode streaming
Untuk mendukung masukan real-time, antarmuka StreamingCallback telah
diperbarui untuk menyertakan metode onNewThought. Hal ini memungkinkan aplikasi Anda menangani
potongan pemikiran streaming saat dihasilkan oleh model.
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
}
Praktik terbaik
Berikut beberapa praktik terbaik saat menggunakan mode penalaran:
- Indikator UI: Karena langkah-langkah penalaran dapat memerlukan waktu untuk dibuat, menampilkan pemikiran atau indikator "berpikir" dalam mode streaming dapat meningkatkan performa yang dirasakan secara signifikan dengan menunjukkan kepada pengguna bahwa model sedang aktif.
- Implementasi selektif: Jika tidak ingin mengekspos penalaran mentah kepada
pengguna akhir, Anda dapat mengabaikan kolom
thoughtProcessatau menghilangkan implementasionNewThought. MetodeonNewThoughtmemiliki implementasi kosong default untuk membantu memastikan kompatibilitas mundur.
Untuk tips lainnya, lihat Mode penalaran di Gemma. Perlu diperhatikan bahwa percakapan multi-turn saat ini tidak didukung di AICore.