Im Denkmodus wird das Modell aufgefordert, seinen Denkprozess auszugeben, bevor es eine endgültige Antwort generiert. Der Denkmodus verbessert die Genauigkeit der Funktionsaufrufe des Modells und eignet sich gut für mathematische Aufgaben, Problemlösung und andere komplexe Denkaufgaben.
Wenn der Denkmodus aktiviert ist, wird die Modellausgabe in zwei Teile unterteilt:
- Denkprozess: Die internen Denk- oder Planungsschritte des Modells.
- Antwort: Die endgültige Antwort, die für den Nutzer generiert wurde.
Vorbereitung
Der Denkmodus funktioniert auf Geräten mit Gemini Nano V4 und höher. Sie können den Denkmodus über das Entwicklervorschauprogramm auf jedem AICore-fähigen Gerät testen.
Denkmodus aktivieren
Wenn Sie den Denkmodus verwenden möchten, müssen Sie ihn aktivieren, indem Sie das Flag enableThinking in der Builder-Funktion generateContentRequest auf true setzen:
val request = generateContentRequest {
text("Solve this complex riddle: ...")
enableThinking = true // Enable thinking mode for Gemini Nano V4
}
Gedanken abrufen
Das ML Kit SDK bietet verschiedene Möglichkeiten, auf die Gedanken zuzugreifen, die der Antwort eines Modells vorausgehen. Dies hängt davon ab, ob Sie eine Nicht-Streaming- oder Streaming-Implementierung verwenden.
Nicht-Streaming-Modus
Bei Standardaufrufen ohne Streaming wird der Denkprozess als Teil der vollständigen Antwort zurückgegeben. Sie können mit der Property thoughtProcess auf diesen Prozess zugreifen. Sie enthält eine Liste von Candidate-Objekten im Objekt 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
}
Streamingmodus
Zur Unterstützung von Feedback in Echtzeit wurde die Schnittstelle StreamingCallback um die Methode onNewThought erweitert. So kann Ihre App Streaming-Gedankenblöcke verarbeiten, sobald sie vom Modell generiert werden.
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 Practices
Hier sind einige Best Practices für die Verwendung des Denkmodus:
- UI-Indikatoren:Da die Generierung von Denkprozessen Zeit in Anspruch nehmen kann, kann die Anzeige der Gedanken oder eines Indikators für „Denken“ im Streamingmodus die wahrgenommene Leistung erheblich verbessern, da der Nutzer sieht, dass das Modell aktiv ist.
- Selektive Implementierung:Wenn Sie Endnutzern keine rohen Denkprozesse präsentieren möchten, können Sie das Feld
thoughtProcessignorieren oder die Implementierung vononNewThoughtweglassen. Die MethodeonNewThoughthat eine leere Standardimplementierung, um die Abwärtskompatibilität zu gewährleisten.
Weitere Tipps finden Sie unter Denkmodus in Gemma. Mehrere Gesprächsrunden werden in AICore derzeit nicht unterstützt.