La modalità di ragionamento chiede al modello di mostrare il suo processo di ragionamento prima di generare una risposta finale. La modalità Ragionamento migliora l'accuratezza delle chiamate di funzione del modello e funziona bene per la matematica, la risoluzione dei problemi e altre attività di ragionamento complesse.
Quando la modalità di ragionamento è attiva, l'output del modello è diviso in due parti:
- Processo di ragionamento: i passaggi di ragionamento o pianificazione interni eseguiti dal modello.
- Risposta: la risposta finale generata per l'utente.
Prerequisiti
La modalità di pensiero funziona sui dispositivi con Gemini Nano V4 e versioni successive. Puoi testare la modalità di pensiero tramite il programma Anteprima per gli sviluppatori su qualsiasi dispositivo abilitato per AICore.
Attiva la modalità Ragionamento
Per utilizzare la modalità di ragionamento, devi attivare l'opzione impostando il flag enableThinking su true nella funzione di creazione generateContentRequest:
val request = generateContentRequest {
text("Solve this complex riddle: ...")
enableThinking = true // Enable thinking mode for Gemini Nano V4
}
Accedi ai pensieri
L'SDK ML Kit offre diversi modi per accedere ai pensieri che precedono la risposta di un modello, a seconda che tu stia utilizzando un'implementazione non in streaming o in streaming.
Modalità non in streaming
Nelle chiamate standard non in streaming, il processo di ragionamento viene restituito come parte della risposta completa. Puoi accedere a questo processo utilizzando la proprietà thoughtProcess (che contiene un elenco di oggetti Candidate) nell'oggetto 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
}
Modalità flusso di dati
Per supportare il feedback in tempo reale, l'interfaccia StreamingCallback è stata aggiornata in modo da includere il metodo onNewThought. In questo modo, la tua app può gestire i chunk di pensiero in streaming man mano che vengono generati dal modello.
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
}
Best practice
Ecco alcune best practice per l'utilizzo della modalità di ragionamento:
- Indicatori dell'interfaccia utente: poiché la generazione dei passaggi di ragionamento può richiedere tempo, la visualizzazione dei pensieri o di un indicatore di "ragionamento" in modalità di streaming può migliorare significativamente le prestazioni percepite mostrando all'utente che il modello è attivo.
- Implementazione selettiva: se non vuoi mostrare il ragionamento non elaborato agli utenti finali, puoi ignorare il campo
thoughtProcesso omettere l'implementazione dionNewThought. Il metodoonNewThoughtha un'implementazione vuota predefinita per garantire la compatibilità con le versioni precedenti.
Per altri suggerimenti, consulta Modalità di ragionamento in Gemma. Tieni presente che le conversazioni multi-turn non sono attualmente supportate in AICore.