Le mode Raisonnement invite le modèle à afficher son processus de raisonnement avant de générer une réponse finale. Le mode Raisonnement 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 réflexion 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 Réflexion fonctionne sur les appareils équipés de Gemini Nano V4 ou version ultérieure. Vous pouvez tester le mode de réflexion via le programme Preview développeur sur n'importe quel appareil compatible avec AICore.
Activer le mode Raisonnement
Pour utiliser le mode de réflexion, vous devez l'activer en définissant l'option enableThinking sur true dans votre fonction de compilateur generateContentRequest :
val request = generateContentRequest {
text("Solve this complex riddle: ...")
enableThinking = true // Enable thinking mode for Gemini Nano V4
}
Accéder aux pensées
Le SDK ML Kit propose différentes manières d'accéder aux pensées qui précèdent la réponse d'un modèle, selon que vous utilisez une implémentation sans streaming ou avec streaming.
Mode sans streaming
Dans les appels standards sans streaming, le processus de raisonnement est renvoyé dans 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 de traitement 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 fragments de pensée en streaming à 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 Réflexion :
- Indicateurs d'interface utilisateur : étant donné que la génération des étapes de raisonnement peut prendre du temps, l'affichage des pensées ou d'un indicateur "en cours de réflexion" en mode streaming 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éthodeonNewThoughtdispose d'une implémentation vide par défaut pour assurer la rétrocompatibilité.
Pour en savoir plus, consultez Mode Réflexion dans Gemma. Notez que les conversations multitours ne sont pas acceptées dans AICore pour le moment.