Le mode de raisonnement invite le modèle à générer son processus de raisonnement avant de générer une réponse finale. Il améliore la précision des appels de fonction du modèle et fonctionne bien pour les mathématiques, la résolution de problèmes et d'autres tâches de raisonnement complexes.
Lorsque le mode de raisonnement est activé, la sortie du modèle est divisée en deux parties :
- Processus de réflexion : étapes de raisonnement ou de planification internes suivies par le modèle.
- Réponse : réponse finale générée pour l'utilisateur.
Prérequis
Le mode de raisonnement fonctionne sur les appareils équipés de Gemini Nano V4 ou version ultérieure. Vous pouvez tester le mode de raisonnement via le programme Preview développeur sur n'importe quel appareil compatible avec AICore.
Activer le mode de raisonnement
Pour utiliser le mode de raisonnement, vous devez l'activer en définissant le flag enableThinking sur true dans votre fonction de compilation generateContentRequest :
val request = generateContentRequest {
text("Solve this complex riddle: ...")
enableThinking = true // Enable thinking mode for Gemini Nano V4
}
Accéder aux réflexions
Le SDK ML Kit offre différentes façons d'accéder aux réflexions qui précèdent la réponse d'un modèle, selon que vous utilisez une implémentation non en flux continu ou en flux continu.
Mode non en flux continu
Dans les appels non en flux continu standards, le processus de raisonnement est renvoyé dans le cadre de la réponse complète. Vous pouvez accéder à ce processus à l'aide de la propriété thoughtProcess (qui contient une liste d'objets Candidate) sur l'objet 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 en flux continu
Pour prendre en charge les commentaires en temps réel, l'interface StreamingCallback a été mise à jour pour inclure la méthode onNewThought. Cela permet à votre application de gérer les blocs de réflexion en flux continu à mesure qu'ils sont générés par le modèle.
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
}
Bonnes pratiques
Voici quelques bonnes pratiques à suivre lorsque vous utilisez le mode de raisonnement :
- Indicateurs d'interface utilisateur : étant donné que les étapes de raisonnement peuvent prendre du temps à générer, l'affichage des réflexions ou d'un indicateur de "raisonnement" en mode de flux continu peut améliorer considérablement les performances perçues en montrant à l'utilisateur que le modèle est actif.
- Implémentation sélective : si vous ne souhaitez pas exposer le raisonnement brut aux utilisateurs finaux, vous pouvez ignorer le champ
thoughtProcessou omettre l'implémentationonNewThought. La méthodeonNewThoughtcomporte une implémentation vide par défaut pour garantir la rétrocompatibilité.
Pour obtenir d'autres conseils, consultez la section Mode de raisonnement dans Gemma. Notez que les conversations multitours ne sont pas compatibles avec AICore pour le moment.